/* * $Source$ * $State$ * $Revision$ */ /* no headers allowed! */ /* Given a double, calculates the mantissa and exponent. * * This function is intended to be called internally by the code generator, * so the calling convention is odd. */ int __fef8(double* fp) { double f = *fp; int exponent, sign; if (f == 0.0) return 0; if (f < 0.0) { sign = -1; f = -f; } else sign = 0; exponent = 0; while (f >= 1.0) { f /= 2.0; exponent++; } while (f < 0.5) { f *= 2.0; exponent--; } *fp = (sign) ? -f : f; return exponent; }