33 switch (dividend_negative + 2 * divisor_negative) {
36 Ops::div_mod(this->span(), divisor.span(), division_result.span(), modulo_result.span());
41 auto dividend = *
this;
43 Ops::div_mod(dividend.span(), divisor.span(), division_result.span(), modulo_result.span());
49 auto divisor_copy = divisor;
51 Ops::div_mod(this->span(), divisor_copy.span(), division_result.span(), modulo_result.span());
57 auto dividend = *
this;
58 auto divisor_copy = divisor;
61 Ops::div_mod(dividend.span(), divisor_copy.span(), division_result.span(), modulo_result.span());
65 return division_result;
73 switch (dividend_negative + 2 * divisor_negative) {
76 Ops::div_mod(this->span(), divisor.span(), division_result.span(), modulo_result.span());
81 auto dividend = *
this;
83 Ops::div_mod(dividend.span(), divisor.span(), division_result.span(), modulo_result.span());
89 auto divisor_copy = divisor;
91 Ops::div_mod(this->span(), divisor_copy.span(), division_result.span(), modulo_result.span());
96 auto dividend = *
this;
97 auto divisor_copy = divisor;
100 Ops::div_mod(dividend.span(), divisor_copy.span(), division_result.span(), modulo_result.span());
105 return modulo_result;
127 constexpr auto span() {
return m_storage.span(); }
128 constexpr auto span()
const {
return m_storage.span(); }
A fixed-width signed integer.
Definition fixed_signed.h:17
constexpr friend auto operator==(FixedSigned const &a, FixedSigned const &b) -> bool
Definition fixed_signed.h:115
constexpr friend auto operator<=>(FixedSigned const &a, FixedSigned const &b)
Definition fixed_signed.h:119
constexpr auto operator%(FixedSigned const &divisor) const -> FixedSigned
Definition fixed_signed.h:68
constexpr auto operator-() const -> FixedSigned
Definition fixed_signed.h:108
constexpr auto operator/(FixedSigned const &divisor) const -> FixedSigned
Definition fixed_signed.h:28
constexpr FixedSigned(bigint::StorageType value)
Definition fixed_signed.h:26
unsigned long StorageType
Definition fixed_ops.h:18
FixedSigned< 256 > i256
Definition fixed_signed.h:134
FixedSigned< 128 > i128_fallback
Definition fixed_signed.h:133
size_t usize
Definition integers.h:33
Definition zstring_parser.h:9
Definition fixed_ops.h:21
static constexpr auto compare(Span< StorageType const, words > lhs, Span< StorageType const, words > rhs) -> strong_ordering
Definition fixed_ops.h:44
static constexpr void negate(Span< StorageType, words > value)
Definition fixed_ops.h:69
static constexpr void div_mod(Span< StorageType const, words > dividend, Span< StorageType const, words > divisor, Span< StorageType, words > quotient, Span< StorageType, words > remainder)
Definition fixed_ops.h:94
static constexpr auto twos_complement_negative(Span< StorageType const, words > storage) -> bool
Definition fixed_ops.h:40
Definition span_fixed_size.h:37