Example #1
0
void m4ri_build_code(int *ord, int *inc, int l) {
  int i,j;

  for(i=0 ; i < TWOPOW(l) ; i++) {
    ord[i] = m4ri_gray_code(i, l);
  }

  for(i = l ; i>0 ; i--) {
    for(j=1 ; j < TWOPOW(i) + 1 ; j++) {
      inc[j *TWOPOW(l-i) -1 ] = l - i;
    }
  }
}
Example #2
0
void m4ri_build_all_codes() {
  if (codebook) {
    return;
  }
  int k;
  codebook=(code**)m4ri_mm_calloc(MAXKAY+1, sizeof(code *));
  
  for(k=1 ; k<MAXKAY+1; k++) {
    codebook[k] = (code *)m4ri_mm_calloc(sizeof(code),1);
    codebook[k]->ord =(int *)m4ri_mm_calloc(TWOPOW(k),sizeof(int));
    codebook[k]->inc =(int *)m4ri_mm_calloc(TWOPOW(k),sizeof(int));
    m4ri_build_code(codebook[k]->ord, codebook[k]->inc, k);
  }
}
Example #3
0
float quantize(int bits, float input, float maxval)
{
      unsigned long quantval = 0;
      int sign;
      float output;

      sign = (input < 0);
      input = fabs(input);

      //quantize to bit code
      if (input >= maxval) {
	  quantval = (long)(TWOPOW(bits - 1) - 1);
      } else {
	  quantval = (long)(
		(
		    (unsigned long)(TWOPOW(bits-1) +
		    (TWOPOW(bits-1)-1)) * input/maxval + 1.0
		) / 2.0
	  );
      }
      if (sign) { quantval |= TWOPOW(bits - 1); }

      //dequantize back to float
      if (quantval & TWOPOW(bits - 1)) {
	  sign = -1;
	  quantval &= TWOPOW(bits - 1) - 1;
      } else {
	  sign = 1;
      }
      output = sign * 2.0 * maxval * ((float)quantval / (TWOPOW(bits) - 1));

      return output;
}
Example #4
0
static inline int log2_floor(int n){
  int i;
  for(i=0;TWOPOW(i)<=n;i++){}
  return i;
}