feat(big): add SBigShl

This commit is contained in:
fallenoak 2023-02-03 16:20:07 -06:00
parent 60edadfe06
commit 25c2ad06f1
No known key found for this signature in database
GPG key ID: 7628F8E61AEA070D
5 changed files with 212 additions and 0 deletions

View file

@ -170,6 +170,29 @@ void SetZero(BigBuffer& buffer) {
buffer.Clear();
}
void Shl(BigBuffer& a, const BigBuffer& b, uint32_t shift) {
auto v4 = shift >> 5;
auto v14 = shift & 0x1F;
auto v5 = b.Count() + v4 + 1;
for (uint32_t i = v5 - 1, j = v5 - v4 - 1; i + 1 > 0; i--, j--) {
uint32_t v9 = 0;
if (i >= v4) {
v9 = b[j] << v14;
if (i > v4 && v14) {
v9 += b[j - 1] >> (32 - v14);
}
}
a[i] = v9;
}
a.SetCount(v5);
a.Trim();
}
void Shr(BigBuffer& a, const BigBuffer& b, uint32_t shift) {
auto v4 = shift >> 5;
auto v9 = shift & 0x1F;

View file

@ -37,6 +37,8 @@ void SetOne(BigBuffer& buffer);
void SetZero(BigBuffer& buffer);
void Shl(BigBuffer& a, const BigBuffer& b, uint32_t shift);
void Shr(BigBuffer& a, const BigBuffer& b, uint32_t shift);
void Square(BigBuffer& a, const BigBuffer& b, BigStack& stack);