4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
26 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
27 * Use is subject to license terms.
30 #pragma weak __ceilf = ceilf
31 #pragma weak __floorf = floorf
35 * ceilf(x) return the biggest integral value (in float) below x
36 * floorf(x) return the least integral value (in float) above x
38 * NOTE: ceilf(x) and floorf(x) return result
39 * with the same sign as x's, including 0.0F.
44 static const float xf
[] = {
63 ix
= hx
& ~0x80000000;
65 if (((k
- 127) ^ (k
- 150)) < 0) {
66 k
= (1 << (150 - k
)) - 1;
68 dummy
= HUGEF
+ x
; /* raise inexact */
69 j
= k
& (~(hx
>> 31));
70 *(int *) &x
= (hx
+ j
) & ~k
;
72 } else if (k
<= 126) {
81 /* signal invalid if x is a SNaN */
82 return (x
* ONEF
); /* +0 -> *1 for Cheetah */
91 ix
= hx
& ~0x80000000;
93 if (((k
- 127) ^ (k
- 150)) < 0) {
94 k
= (1 << (150 - k
)) - 1;
96 dummy
= HUGEF
+ x
; /* raise inexact */
98 *(int *) &x
= (hx
+ j
) & ~k
;
100 } else if (k
<= 126) {
109 /* signal invalid if x is a SNaN */
110 return (x
* ONEF
); /* +0 -> *1 for Cheetah */