code: 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);
      }
docs: doesn't currently guard under/overflow