feat(big): add ExtractLowPartLargeSum

This commit is contained in:
fallenoak 2023-02-03 00:43:20 -06:00
parent 4d3651134c
commit f01c906aa1
No known key found for this signature in database
GPG key ID: 7628F8E61AEA070D
3 changed files with 57 additions and 0 deletions

View file

@ -58,6 +58,14 @@ uint32_t ExtractLowPart(uint64_t& value) {
return low;
}
uint32_t ExtractLowPartLargeSum(uint64_t& value, uint64_t add) {
auto carry = (value += add) < add;
auto low = ExtractLowPart(value);
value += static_cast<uint64_t>(carry) << 32;
return low;
}
uint32_t ExtractLowPartSx(uint64_t& value) {
auto low = static_cast<uint32_t>(value);
value >>= 32;

View file

@ -15,6 +15,8 @@ void Div(BigBuffer& a, uint32_t* b, const BigBuffer& c, uint64_t d);
uint32_t ExtractLowPart(uint64_t& value);
uint32_t ExtractLowPartLargeSum(uint64_t& value, uint64_t add);
uint32_t ExtractLowPartSx(uint64_t& value);
void FromBinary(BigBuffer& buffer, const void* value, uint32_t bytes);