// http://en.wikipedia.org/wiki/Fast_Hadamard_transform #include typedef double r; void hm(int m, r * x){int b; for(b=m; b>1; b>>=1) {int c=b>>1; int k; if(0) printf("bb %d %d\n", b, c); for(k=0; k r f(r x){return x+3;} #define s (1<<22) // The shift amount above can be an integer from 0 thru at least 26. r w[s]; void p(r a) {int j; if(0)for(j=0; j