1 /*
2 * ====================================================
3 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
4 *
5 * Developed at SunPro, a Sun Microsystems, Inc. business.
6 * Permission to use, copy, modify, and distribute this
7 * software is freely granted, provided that this notice
8 * is preserved.
9 * ====================================================
10 */
11
12 #include "fdlibm.h"
13
14 float
truncf(float x)15 truncf(float x)
16 {
17 int32_t ix = _asint32 (x);
18 int32_t mask;
19 int exp;
20
21 exp = _exponent32(ix) - 127;
22
23 if (unlikely(exp == 128))
24 return x + x;
25
26 /* compute portion of value with useful bits */
27 if (exp < 0)
28 /* less than one, save sign bit */
29 mask = 0x80000000;
30 else {
31 /* otherwise, save sign, exponent and any useful bits */
32 if (exp >= 32)
33 exp = 31;
34 mask = ~(0x007fffff >> exp);
35 }
36
37 return _asfloat(ix & mask);
38 }
39
40 _MATH_ALIAS_f_f(trunc)
41