@Override
 public int calc(int input) {
   int ret = 0, tmpa, tmpb;
   for (int i = 0; i != upper; ++i) {
     tmpa = bf.calc(i) == 0 ? 0 : 1;
     tmpb = (toBitValue(input & i) == 0 ? 1 : -1);
     ret += tmpa * tmpb;
   }
   return ret;
 }
 public WalshTransform(FunctionType bf) {
   this.bf = bf;
   n = bf.getN();
   upper = 1 << n;
 }