chiark / gitweb /
math/f25519.c (f25519_load): Improve the tabular layout.
[catacomb] / utils / naf.c
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #include "mp.h"
5 #include "mptext.h"
6
7
8 int main(int argc, char *argv[])
9 {
10   mp *x;
11   mpscan sc;
12   unsigned long d, i;
13   enum { Z = 0, Z1 = 2, X = 4, X0 = 6 };
14   unsigned st = Z;
15
16   x = mp_readstring(MP_NEW, argv[1], 0, 0);
17   d = mp_bits(x);
18
19   for (i = 0, mp_scan(&sc, x); mp_step(&sc); i++) {
20     switch (st | mp_bit(&sc)) {
21       case  Z | 1: st = Z1; printf("\t-> Z1\n"); break;
22       case Z1 | 0: st =  Z; printf("+ %lu\t-> Z\n", i - 1); break;
23       case Z1 | 1: st =  X; printf("- %lu\t-> X\n", i - 1); break;
24       case  X | 0: st = X0; printf("\t-> X0\n"); break;
25       case X0 | 1: st =  X; printf("- %lu\t-> X\n", i - 1); break;
26       case X0 | 0: st =  Z; printf("+ %lu\t-> Z\n", i - 1); break;
27     }
28   }
29   switch (st) {
30     case Z1: case X0: printf("+ %lu\n", i - 1); break;
31     case X: printf("+ %lu\n", i); break;
32   }
33 }