feat(big): add SBigOr

This commit is contained in:
Adam Heinermann 2024-11-15 09:26:28 -08:00 committed by superp00t
parent 5688b7ec3e
commit c31e976595
5 changed files with 67 additions and 0 deletions

View file

@ -107,6 +107,10 @@ void SBigNot(BigData* a, BigData* b) {
Not(a->Primary(), b->Primary());
}
void SBigOr(BigData* a, BigData* b, BigData* c) {
Or(a->Primary(), b->Primary(), c->Primary());
}
void SBigPowMod(BigData* a, BigData* b, BigData* c, BigData* d) {
PowMod(a->Primary(), b->Primary(), c->Primary(), d->Primary(), a->Stack());
}

View file

@ -44,6 +44,8 @@ void SBigNew(BigData** num);
void SBigNot(BigData* a, BigData* b);
void SBigOr(BigData* a, BigData* b, BigData* c);
void SBigPowMod(BigData* a, BigData* b, BigData* c, BigData* d);
void SBigShl(BigData* a, BigData* b, uint32_t shift);

View file

@ -286,6 +286,15 @@ void Not(BigBuffer& a, const BigBuffer& b) {
a.SetCount(i);
}
void Or(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);
}
void PowMod(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, const BigBuffer& d, BigStack& stack) {
c.Trim();

View file

@ -51,6 +51,8 @@ void MulMod(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, const BigBuffe
void Not(BigBuffer& a, const BigBuffer& b);
void Or(BigBuffer& a, const BigBuffer& b, const BigBuffer& c);
void PowMod(BigBuffer& a, const BigBuffer& b, const BigBuffer& c, const BigBuffer& d, BigStack& stack);
void SetOne(BigBuffer& buffer);