1 /* @(#)s_ceil.c 5.1 93/09/24 */
3 * ====================================================
4 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
6 * Developed at SunPro, a Sun Microsystems, Inc. business.
7 * Permission to use, copy, modify, and distribute this
8 * software is freely granted, provided that this notice
10 * ====================================================
15 * Return x rounded toward -inf to integral value
20 #define NO_MATH_REDIRECT
22 #include <math_private.h>
23 #include <libm-alias-double.h>
24 #include <math-use-builtins.h>
30 return __builtin_ceil (x
);
32 /* Use generic implementation. */
35 EXTRACT_WORDS64 (i0
, x
);
36 j0
= ((i0
>> 52) & 0x7ff) - 0x3ff;
41 /* return 0 * sign(x) if |x| < 1 */
43 i0
= INT64_C (0x8000000000000000);
45 i0
= INT64_C (0x3ff0000000000000);
49 i
= INT64_C (0x000fffffffffffff) >> j0
;
51 return x
; /* x is integral */
53 i0
+= UINT64_C (0x0010000000000000) >> j0
;
60 return x
+ x
; /* inf or NaN */
62 return x
; /* x is integral */
64 INSERT_WORDS64 (x
, i0
);
66 #endif /* ! USE_CEIL_BUILTIN */
69 libm_alias_double (__ceil
, ceil
)