for (i = 0, mp_scan(&sc, x); mp_step(&sc); i++) {
switch (st | mp_bit(&sc)) {
- case Z | 1: st = Z1; break;
- case Z1 | 0: st = Z; printf("+ %lu\n", i - 1); break;
- case Z1 | 1: st = X; printf("- %lu\n", i - 1); break;
- case X | 0: st = X0; break;
- case X0 | 1: st = X; printf("- %lu\n", i - 1); break;
- case X0 | 0: st = Z; printf("+ %lu\n", i - 1); break;
+ case Z | 1: st = Z1; printf("\t-> Z1\n"); break;
+ case Z1 | 0: st = Z; printf("+ %lu\t-> Z\n", i - 1); break;
+ case Z1 | 1: st = X; printf("- %lu\t-> X\n", i - 1); break;
+ case X | 0: st = X0; printf("\t-> X0\n"); break;
+ case X0 | 1: st = X; printf("- %lu\t-> X\n", i - 1); break;
+ case X0 | 0: st = Z; printf("+ %lu\t-> Z\n", i - 1); break;
}
}
- if (st >= X) printf("+ %lu\n", i - 1);
+ switch (st) {
+ case Z1: case X0: printf("+ %lu\n", i - 1); break;
+ case X: printf("+ %lu\n", i); break;
+ }
}