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