/*
* Matt McCutchen's Big Integer Library
-* http://hashproduct.metaesthetics.net/bigint/
*/
#include "BigUnsigned.hh"
for (i = 0; i < a.len; i++) {
// For each 1-bit of that block...
for (i2 = 0; i2 < N; i2++) {
- if ((a.blk[i] & (1 << i2)) == 0)
+ if ((a.blk[i] & (Blk(1) << i2)) == 0)
continue;
/*
* Add b to this, shifted left i blocks and i2 bits.
* the region of work2 we copy is just [i, k).
*/
if (!borrowIn) {
- q.blk[i] |= (1 << i2);
+ q.blk[i] |= (Blk(1) << i2);
while (k > i) {
k--;
blk[k] = work2[k];
}
if (carry) {
// Matt fixed a bug 2004.12.24: next 2 lines used to say allocateAndCopy(len + 1)
+ // Matt fixed another bug 2006.04.24:
+ // old number only has len blocks, so copy before increasing length
+ allocateAndCopy(len + 1);
len++;
- allocateAndCopy(len);
blk[i] = 1;
}
}