예제 #1
0
 // doesn't currently guard under/overflow
 static long float32_pack(float val) {
   int sign = 0;
   int exp;
   int mant;
   if (val < 0) {
     sign = 0x80000000;
     val = -val;
   }
   exp = (int) Math.floor(Math.log(val) / Math.log(2));
   mant = (int) Math.rint(Math.pow(val, (VQ_FMAN - 1) - exp));
   exp = (exp + VQ_FEXP_BIAS) << VQ_FMAN;
   return (sign | exp | mant);
 }