Lines Matching defs:bits
245 static double decfloat(FFFILE *f, int c, int bits, int emin, int sign, int pok)
256 int emax = -emin-bits+3;
325 if (lrp==dc && dc<10 && (bits>30 || x[0]>>bits==0))
353 bitlim = bits-3*(int)(rp-9);
379 /* Upscale until desired number of bits are left of radix point */
406 /* Downscale until exactly number of bits are left of radix point */
440 /* Assemble desired bits into floating point variable */
449 if (bits > DBL_MANT_DIG+e2-emin) {
450 bits = DBL_MANT_DIG+e2-emin;
451 if (bits<0) bits=0;
455 /* Calculate bias term to force rounding, move out lower bits */
456 if (bits < DBL_MANT_DIG) {
457 bias = copysign(scalbn(1, 2*DBL_MANT_DIG-bits-1), y);
458 frac = fmod(y, scalbn(1, DBL_MANT_DIG-bits));
476 if (DBL_MANT_DIG-bits >= 2 && !fmod(frac, 1))
485 if (denormal && bits==DBL_MANT_DIG+e2-emin)
497 static double hexfloat(FFFILE *f, int bits, int emin, int sign, int pok)
592 if (bits > 32+e2-emin) {
593 bits = 32+e2-emin;
594 if (bits<0) bits=0;
597 if (bits < DBL_MANT_DIG)
598 bias = copysign(scalbn(1, 32+DBL_MANT_DIG-bits-1), sign);
600 if (bits<32 && y && !(x&1)) x++, y=0;
614 int bits;
620 bits = FLT_MANT_DIG;
621 emin = FLT_MIN_EXP-bits;
624 bits = DBL_MANT_DIG;
625 emin = DBL_MIN_EXP-bits;
628 bits = DBL_MANT_DIG;
629 emin = DBL_MIN_EXP-bits;
685 return hexfloat(f, bits, emin, sign, pok);
690 return decfloat(f, c, bits, emin, sign, pok);