X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/f4535c6454395e6d56ce0091a07b6d4f7d54a47f..bccb92dd7abb72205fb3835f746145d271d2b998:/mpreduce.c diff --git a/mpreduce.c b/mpreduce.c index d99ff16..02ce2cf 100644 --- a/mpreduce.c +++ b/mpreduce.c @@ -101,10 +101,11 @@ int mpreduce_create(mpreduce *r, mp *p) case X0 | 0: st = Z; printf("+ %lu\n", i - 1); break; } } - if (st >= X) printf("+ %lu\n", i); + if (st >= X) printf("+ %lu\n", i - 1); + st = Z; #endif - for (i = 0, mp_scan(&sc, p); i < d - 1 && mp_step(&sc); i++) { + for (i = 0, mp_scan(&sc, p); i < d && mp_step(&sc); i++) { switch (st | mp_bit(&sc)) { case Z | 1: st = Z1; break; case Z1 | 0: st = Z; op = MPRI_SUB; goto instr; @@ -285,9 +286,9 @@ mp *mpreduce_do(mpreduce *r, mp *d, mp *x) *vl = 0; run(r->iv, il, vl, z); #ifdef DEBUG - MP_PRINTX("x", x); - mp_div(0, &_rr, x, r->p); - assert(MP_EQ(_r, _rr)); + MP_PRINTX("x", x); + mp_div(0, &_rr, x, r->p); + assert(MP_EQ(_r, _rr)); #endif } } @@ -297,9 +298,9 @@ mp *mpreduce_do(mpreduce *r, mp *d, mp *x) *vl &= ((1 << r->s) - 1); run(r->iv + r->in, il + r->in, vl, z); #ifdef DEBUG - MP_PRINTX("x", x); - mp_div(0, &_rr, x, r->p); - assert(MP_EQ(_r, _rr)); + MP_PRINTX("x", x); + mp_div(0, &_rr, x, r->p); + assert(MP_EQ(_r, _rr)); #endif } }