2 /* @(#)z_frexpf.c 1.0 98/08/13 */
3 /******************************************************************
7 * d - floating point value
11 * A floating point value in the range [0.5, 1).
14 * This routine breaks a floating point value into a number f and
15 * an exponent exp such that d = f * 2 ^ exp.
17 *****************************************************************/
22 float frexpf (float d
, int *exp
)
27 GET_FLOAT_WORD (wd
, d
);
29 /* Get the exponent. */
30 *exp
= ((wd
& 0x7f800000) >> 23) - 126;
32 /* Get the mantissa. */
36 SET_FLOAT_WORD (f
, wf
);
38 /* Check for special values. */
51 #ifdef _DOUBLE_IS_32BITS
53 double frexp (double x
, int *exp
)
55 return (double) frexpf ((float) x
, exp
);
58 #endif /* defined(_DOUBLE_IS_32BITS) */