feat(big): add SBigAnd

This commit is contained in:
Adam Heinermann 2024-11-15 00:57:52 -08:00 committed by superp00t
parent c42bad55a2
commit 6801b32a99
8 changed files with 111 additions and 0 deletions

View file

@ -7,6 +7,10 @@ void SBigAdd(BigData* a, BigData* b, BigData* c) {
Add(a->Primary(), b->Primary(), c->Primary());
}
void SBigAnd(BigData* a, BigData* b, BigData* c) {
And(a->Primary(), b->Primary(), c->Primary());
}
void SBigBitLen(BigData* num, uint32_t* len) {
auto& buffer = num->Primary();
buffer.Trim();

View file

@ -6,6 +6,8 @@
void SBigAdd(BigData* a, BigData* b, BigData* c);
void SBigAnd(BigData* a, BigData* b, BigData* c);
void SBigBitLen(BigData* num, uint32_t* len);
int32_t SBigCompare(BigData* a, BigData* b);

View file

@ -22,6 +22,15 @@ void Add(BigBuffer& a, const BigBuffer& b, const BigBuffer& c) {
a.SetCount(i);
}
void And(BigBuffer& a, const BigBuffer& b, const BigBuffer& c) {
uint32_t i = 0;
for (; b.IsUsed(i) || c.IsUsed(i); i++) {
a[i] = c[i] & b[i];
}
a.SetCount(i);
}
int32_t Compare(const BigBuffer& a, const BigBuffer& b) {
int32_t result = 0;

View file

@ -9,6 +9,8 @@ void Add(BigBuffer& a, const BigBuffer& b, uint32_t c);
void Add(BigBuffer& a, const BigBuffer& b, const BigBuffer& c);
void And(BigBuffer& a, const BigBuffer& b, const BigBuffer& c);
int32_t Compare(const BigBuffer& a, const BigBuffer& b);
void Div(BigBuffer& a, uint32_t* b, const BigBuffer& c, uint64_t d);