@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;
 }