barretenberg
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
numeric::uintx< base_uint > Class Template Reference

Public Member Functions

constexpr uintx (const uint64_t data=0)
 
constexpr uintx (const base_uint input_lo)
 
constexpr uintx (const base_uint input_lo, const base_uint input_hi)
 
constexpr uintx (const uintx &other)
 
constexpr uintx (uintx &&other) noexcept=default
 
constexpr uintxoperator= (const uintx &other)=default
 
constexpr uintxoperator= (uintx &&other) noexcept=default
 
constexpr operator bool () const
 
constexpr operator uint8_t () const
 
constexpr operator uint16_t () const
 
constexpr operator uint32_t () const
 
constexpr operator uint64_t () const
 
constexpr operator base_uint () const
 
constexpr bool get_bit (uint64_t bit_index) const
 
constexpr uint64_t get_msb () const
 
constexpr uintx slice (uint64_t start, uint64_t end) const
 
constexpr uintx operator+ (const uintx &other) const
 
constexpr uintx operator- (const uintx &other) const
 
constexpr uintx operator- () const
 
constexpr uintx operator* (const uintx &other) const
 
constexpr uintx operator/ (const uintx &other) const
 
constexpr uintx operator% (const uintx &other) const
 
constexpr std::pair< uintx, uintxmul_extended (const uintx &other) const
 
constexpr uintx operator>> (uint64_t other) const
 
constexpr uintx operator<< (uint64_t other) const
 
constexpr uintx operator& (const uintx &other) const
 
constexpr uintx operator^ (const uintx &other) const
 
constexpr uintx operator| (const uintx &other) const
 
constexpr uintx operator~ () const
 
constexpr bool operator== (const uintx &other) const
 
constexpr bool operator!= (const uintx &other) const
 
constexpr bool operator! () const
 
constexpr bool operator> (const uintx &other) const
 
constexpr bool operator< (const uintx &other) const
 
constexpr bool operator>= (const uintx &other) const
 
constexpr bool operator<= (const uintx &other) const
 
constexpr uintxoperator+= (const uintx &other)
 
constexpr uintxoperator-= (const uintx &other)
 
constexpr uintxoperator*= (const uintx &other)
 
constexpr uintxoperator/= (const uintx &other)
 
constexpr uintxoperator%= (const uintx &other)
 
constexpr uintxoperator++ ()
 
constexpr uintxoperator-- ()
 
constexpr uintxoperator&= (const uintx &other)
 
constexpr uintxoperator^= (const uintx &other)
 
constexpr uintxoperator|= (const uintx &other)
 
constexpr uintxoperator>>= (const uint64_t other)
 
constexpr uintxoperator<<= (const uint64_t other)
 
constexpr uintx invmod (const uintx &modulus) const
 
constexpr uintx unsafe_invmod (const uintx &modulus) const
 
constexpr std::pair< uintx, uintxdivmod (const uintx &b) const
 

Static Public Member Functions

static constexpr size_t length ()
 

Public Attributes

base_uint lo
 
base_uint hi
 

Member Function Documentation

◆ invmod()

template<class base_uint >
constexpr uintx< base_uint > numeric::uintx< base_uint >::invmod ( const uintx< base_uint > &  modulus) const
constexpr

Computes the inverse of *this, modulo modulus, via the extended Euclidean algorithm.

Delegates to appropriate unsafe_invmod (if the modulus is close to uintx top margin there is a need to expand)

Parameters
modulusThe modulus
Returns
The inverse of *this modulo modulus

◆ slice()

template<class base_uint >
constexpr uintx< base_uint > numeric::uintx< base_uint >::slice ( uint64_t  start,
uint64_t  end 
) const
constexpr

Viewing this as a bit string, and counting bits from 0, slices a substring.

Returns
the uintx equal to the substring of bits from (and including) the start-th bit, to (but excluding) the end-th bit of this.

◆ unsafe_invmod()

template<class base_uint >
constexpr uintx< base_uint > numeric::uintx< base_uint >::unsafe_invmod ( const uintx< base_uint > &  modulus) const
constexpr

Computes invmod. Only for internal usage within the class. This is an insecure version of the algorithm that doesn't take into account the 0 case and cases when modulus is close to the top margin.

Parameters
modulusThe modulus of the ring
Returns
The inverse of *this modulo modulus

The documentation for this class was generated from the following files: