12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #include <math.h>
- #include "math_private.h"
- double
- trunc (double x)
- {
- int32_t i0, j0;
- u_int32_t i1;
- int sx;
- EXTRACT_WORDS (i0, i1, x);
- sx = i0 & 0x80000000;
- j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
- if (j0 < 20)
- {
- if (j0 < 0)
-
- INSERT_WORDS (x, sx, 0);
- else
- INSERT_WORDS (x, sx | (i0 & ~(0x000fffff >> j0)), 0);
- }
- else if (j0 > 51)
- {
- if (j0 == 0x400)
-
- return x + x;
- }
- else
- {
- INSERT_WORDS (x, i0, i1 & ~(0xffffffffu >> (j0 - 20)));
- }
- return x;
- }
- libm_hidden_def(trunc)
|