23 :
data{ static_cast<uint32_t>(
a), static_cast<uint32_t>(
a >> 32), 0, 0 }
26 constexpr uint128_t(
const uint32_t
a,
const uint32_t
b,
const uint32_t c,
const uint32_t d)
35 static constexpr uint128_t from_uint64(
const uint64_t
a)
37 return {
static_cast<uint32_t
>(
a),
static_cast<uint32_t
>(
a >> 32), 0, 0 };
40 constexpr explicit operator uint64_t()
const {
return (
static_cast<uint64_t
>(
data[1]) << 32) +
data[0]; }
45 explicit constexpr operator bool()
const
50 template <std::
integral T>
explicit constexpr operator T()
const {
return static_cast<T
>(
data[0]); };
52 [[nodiscard]]
constexpr bool get_bit(uint64_t bit_index)
const;
53 [[nodiscard]]
constexpr uint64_t
get_msb()
const;
55 [[nodiscard]]
constexpr uint128_t slice(uint64_t start, uint64_t end)
const;
78 constexpr bool operator>(
const uint128_t& other)
const;
79 constexpr bool operator<(
const uint128_t& other)
const;
80 constexpr bool operator>=(
const uint128_t& other)
const;
81 constexpr bool operator<=(
const uint128_t& other)
const;
83 static constexpr size_t length() {
return 128; }
87 *
this = *
this + other;
92 *
this = *
this - other;
97 *
this = *
this * other;
102 *
this = *
this / other;
107 *
this = *
this % other;
124 *
this = *
this & other;
129 *
this = *
this ^ other;
134 *
this = *
this | other;
140 *
this = *
this >> other;
145 *
this = *
this << other;
156 [[nodiscard]]
static constexpr uint32_t addc_discard_hi(uint32_t
a, uint32_t
b, uint32_t carry_in);
157 [[nodiscard]]
static constexpr uint32_t sbb_discard_hi(uint32_t
a, uint32_t
b, uint32_t borrow_in);
160 [[nodiscard]]
static constexpr uint32_t mac_discard_hi(uint32_t
a, uint32_t
b, uint32_t c, uint32_t carry_in);
169 std::ios_base::fmtflags f(os.flags());
205using numeric::uint128_t;
214 std::ios_base::fmtflags f(
os.flags());
constexpr InputType operator!(InputType type)
const std::vector< MemoryValue > data
std::ostream & operator<<(std::ostream &os, const CFGInstruction &instruction)
uint8_t const size_t length
bool operator==(schnorr_signature const &lhs, schnorr_signature const &rhs)
void read(B &it, uint256_t &value)
std::ostream & operator<<(std::ostream &os, uint256_t const &a)
constexpr T get_msb(const T in)
void write(B &it, uint256_t const &value)
C slice(C const &container, size_t start)
Univariate< Fr, domain_end > operator-(const Fr &ff, const Univariate< Fr, domain_end > &uv)
Univariate< Fr, domain_end > operator*(const Fr &ff, const Univariate< Fr, domain_end > &uv)
void read(auto &it, msgpack_concepts::HasMsgPack auto &obj)
Automatically derived read for any object that defines .msgpack() (implicitly defined by MSGPACK_FIEL...
void write(auto &buf, const msgpack_concepts::HasMsgPack auto &obj)
Automatically derived write for any object that defines .msgpack() (implicitly defined by MSGPACK_FIE...
STerm operator&(const bb::fr &lhs, const STerm &rhs)
STerm operator|(const bb::fr &lhs, const STerm &rhs)
void operator!=(const bb::fr &lhs, const STerm &rhs)
STerm operator^(const bb::fr &lhs, const STerm &rhs)
STerm operator/(const bb::fr &lhs, const STerm &rhs)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::ostream & operator<<(std::ostream &os, const T &obj)
Automatically derived stream operator for any object that defines .msgpack() (implicitly defined by M...
TUPLET_INLINE constexpr auto operator+(type_list< Ls... >, type_list< Rs... >)
Convinience + operator for catenating type lists.
unsigned __int128 uint128_t