]>
git.ipfire.org Git - thirdparty/glibc.git/blob - sysdeps/ieee754/dbl-64/e_asin.c
2 * IBM Accurate Mathematical Library
3 * written by International Business Machines Corp.
4 * Copyright (C) 2001-2021 Free Software Foundation, Inc.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation; either version 2.1 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program; if not, see <https://www.gnu.org/licenses/>.
19 /******************************************************************/
20 /* MODULE_NAME:uasncs.c */
22 /* FUNCTIONS: uasin */
24 /* FILES NEEDED: dla.h endian.h mpa.h mydefs.h usncs.h */
25 /* doasin.c sincos32.c dosincos.c mpa.c */
26 /* sincos.tbl asincos.tbl powtwo.tbl root.tbl */
28 /******************************************************************/
31 #include "asincos.tbl"
38 #include <math_private.h>
39 #include <math-underflow.h>
40 #include <libm-alias-finite.h>
46 void __doasin(double x
, double dx
, double w
[]);
47 void __dubsin(double x
, double dx
, double v
[]);
48 void __dubcos(double x
, double dx
, double v
[]);
49 void __docos(double x
, double dx
, double v
[]);
53 __ieee754_asin(double x
){
54 double x1
,x2
,xx
,s1
,s2
,res1
,p
,t
,res
,r
,cor
,cc
,y
,c
,z
,w
[2];
60 k
= 0x7fffffff&m
; /* no sign */
64 math_check_force_underflow (x
);
65 return x
; /* for x->0 => sin(x)=x */
67 /*----------------------2^-26 <= |x| < 2^ -3 -----------------*/
71 t
= (((((f6
*x2
+ f5
)*x2
+ f4
)*x2
+ f3
)*x2
+ f2
)*x2
+ f1
)*(x2
*x
);
72 res
= x
+t
; /* res=arcsin(x) according to Taylor series */
74 if (res
== res
+1.025*cor
) return res
;
82 s2
= ((((((c7
*xx
+ c6
)*xx
+ c5
)*xx
+ c4
)*xx
+ c3
)*xx
+ c2
)*xx
*xx
*x
+
83 ((a1
.x
+a2
.x
)*x2
*x2
+ 0.5*x1
*x
)*x2
) + a2
.x
*p
;
85 s2
= ((x
-res1
)+s1
)+s2
;
88 if (res
== res
+1.00014*cor
) return res
;
95 /*---------------------0.125 <= |x| < 0.5 -----------------------------*/
96 else if (k
< 0x3fe00000) {
97 if (k
<0x3fd00000) n
= 11*((k
&0x000fffff)>>15);
98 else n
= 11*((k
&0x000fffff)>>14)+352;
99 if (m
>0) xx
= x
- asncs
.x
[n
];
100 else xx
= -x
- asncs
.x
[n
];
102 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+xx
*(asncs
.x
[n
+5]
103 +xx
*asncs
.x
[n
+6]))))+asncs
.x
[n
+7];
105 res
=asncs
.x
[n
+8] +t
;
106 cor
= (asncs
.x
[n
+8]-res
)+t
;
107 if (res
== res
+1.05*cor
) return (m
>0)?res
:-res
;
109 r
=asncs
.x
[n
+8]+xx
*asncs
.x
[n
+9];
110 t
=((asncs
.x
[n
+8]-r
)+xx
*asncs
.x
[n
+9])+(p
+xx
*asncs
.x
[n
+10]);
113 if (res
== res
+1.0005*cor
) return (m
>0)?res
:-res
;
118 z
=(w
[0]-fabs(x
))+w
[1];
119 if (z
>1.0e-27) return (m
>0)?min(res
,res1
):-min(res
,res1
);
120 else if (z
<-1.0e-27) return (m
>0)?max(res
,res1
):-max(res
,res1
);
122 return (m
>0)?res
:-res
;
126 } /* else if (k < 0x3fe00000) */
127 /*-------------------- 0.5 <= |x| < 0.75 -----------------------------*/
129 if (k
< 0x3fe80000) {
130 n
= 1056+((k
&0x000fe000)>>11)*3;
131 if (m
>0) xx
= x
- asncs
.x
[n
];
132 else xx
= -x
- asncs
.x
[n
];
134 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+xx
*(asncs
.x
[n
+5]
135 +xx
*(asncs
.x
[n
+6]+xx
*asncs
.x
[n
+7])))))+asncs
.x
[n
+8];
137 res
=asncs
.x
[n
+9] +t
;
138 cor
= (asncs
.x
[n
+9]-res
)+t
;
139 if (res
== res
+1.01*cor
) return (m
>0)?res
:-res
;
141 r
=asncs
.x
[n
+9]+xx
*asncs
.x
[n
+10];
142 t
=((asncs
.x
[n
+9]-r
)+xx
*asncs
.x
[n
+10])+(p
+xx
*asncs
.x
[n
+11]);
145 if (res
== res
+1.0005*cor
) return (m
>0)?res
:-res
;
150 z
=(w
[0]-fabs(x
))+w
[1];
151 if (z
>1.0e-27) return (m
>0)?min(res
,res1
):-min(res
,res1
);
152 else if (z
<-1.0e-27) return (m
>0)?max(res
,res1
):-max(res
,res1
);
154 return (m
>0)?res
:-res
;
158 } /* else if (k < 0x3fe80000) */
159 /*--------------------- 0.75 <= |x|< 0.921875 ----------------------*/
161 if (k
< 0x3fed8000) {
162 n
= 992+((k
&0x000fe000)>>13)*13;
163 if (m
>0) xx
= x
- asncs
.x
[n
];
164 else xx
= -x
- asncs
.x
[n
];
166 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+xx
*(asncs
.x
[n
+5]
167 +xx
*(asncs
.x
[n
+6]+xx
*(asncs
.x
[n
+7]+xx
*asncs
.x
[n
+8]))))))+asncs
.x
[n
+9];
169 res
=asncs
.x
[n
+10] +t
;
170 cor
= (asncs
.x
[n
+10]-res
)+t
;
171 if (res
== res
+1.01*cor
) return (m
>0)?res
:-res
;
173 r
=asncs
.x
[n
+10]+xx
*asncs
.x
[n
+11];
174 t
=((asncs
.x
[n
+10]-r
)+xx
*asncs
.x
[n
+11])+(p
+xx
*asncs
.x
[n
+12]);
177 if (res
== res
+1.0008*cor
) return (m
>0)?res
:-res
;
182 z
=((hp0
.x
-y
)-res
)+(hp1
.x
-z
);
184 z
=(w
[0]-fabs(x
))+w
[1];
185 if (z
>1.0e-27) return (m
>0)?min(res
,res1
):-min(res
,res1
);
186 else if (z
<-1.0e-27) return (m
>0)?max(res
,res1
):-max(res
,res1
);
188 return (m
>0)?res
:-res
;
192 } /* else if (k < 0x3fed8000) */
193 /*-------------------0.921875 <= |x| < 0.953125 ------------------------*/
195 if (k
< 0x3fee8000) {
196 n
= 884+((k
&0x000fe000)>>13)*14;
197 if (m
>0) xx
= x
- asncs
.x
[n
];
198 else xx
= -x
- asncs
.x
[n
];
200 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+
201 xx
*(asncs
.x
[n
+5]+xx
*(asncs
.x
[n
+6]
202 +xx
*(asncs
.x
[n
+7]+xx
*(asncs
.x
[n
+8]+
203 xx
*asncs
.x
[n
+9])))))))+asncs
.x
[n
+10];
205 res
=asncs
.x
[n
+11] +t
;
206 cor
= (asncs
.x
[n
+11]-res
)+t
;
207 if (res
== res
+1.01*cor
) return (m
>0)?res
:-res
;
209 r
=asncs
.x
[n
+11]+xx
*asncs
.x
[n
+12];
210 t
=((asncs
.x
[n
+11]-r
)+xx
*asncs
.x
[n
+12])+(p
+xx
*asncs
.x
[n
+13]);
213 if (res
== res
+1.0007*cor
) return (m
>0)?res
:-res
;
221 z
=(w
[0]-fabs(x
))+w
[1];
222 if (z
>1.0e-27) return (m
>0)?min(res
,res1
):-min(res
,res1
);
223 else if (z
<-1.0e-27) return (m
>0)?max(res
,res1
):-max(res
,res1
);
225 return (m
>0)?res
:-res
;
229 } /* else if (k < 0x3fee8000) */
231 /*--------------------0.953125 <= |x| < 0.96875 ------------------------*/
233 if (k
< 0x3fef0000) {
234 n
= 768+((k
&0x000fe000)>>13)*15;
235 if (m
>0) xx
= x
- asncs
.x
[n
];
236 else xx
= -x
- asncs
.x
[n
];
238 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+
239 xx
*(asncs
.x
[n
+5]+xx
*(asncs
.x
[n
+6]
240 +xx
*(asncs
.x
[n
+7]+xx
*(asncs
.x
[n
+8]+
241 xx
*(asncs
.x
[n
+9]+xx
*asncs
.x
[n
+10]))))))))+asncs
.x
[n
+11];
243 res
=asncs
.x
[n
+12] +t
;
244 cor
= (asncs
.x
[n
+12]-res
)+t
;
245 if (res
== res
+1.01*cor
) return (m
>0)?res
:-res
;
247 r
=asncs
.x
[n
+12]+xx
*asncs
.x
[n
+13];
248 t
=((asncs
.x
[n
+12]-r
)+xx
*asncs
.x
[n
+13])+(p
+xx
*asncs
.x
[n
+14]);
251 if (res
== res
+1.0007*cor
) return (m
>0)?res
:-res
;
259 z
=(w
[0]-fabs(x
))+w
[1];
260 if (z
>1.0e-27) return (m
>0)?min(res
,res1
):-min(res
,res1
);
261 else if (z
<-1.0e-27) return (m
>0)?max(res
,res1
):-max(res
,res1
);
263 return (m
>0)?res
:-res
;
267 } /* else if (k < 0x3fef0000) */
268 /*--------------------0.96875 <= |x| < 1 --------------------------------*/
271 z
= 0.5*((m
>0)?(1.0-x
):(1.0+x
));
274 t
=inroot
[(k
&0x001fffff)>>14]*powtwo
[511-(k
>>21)];
276 t
= t
*(rt0
+r
*(rt1
+r
*(rt2
+r
*rt3
)));
281 p
=(((((f6
*z
+f5
)*z
+f4
)*z
+f3
)*z
+f2
)*z
+f1
)*z
;
282 cor
= (hp1
.x
- 2.0*cc
)-2.0*(y
+cc
)*p
;
283 res1
= hp0
.x
- 2.0*y
;
285 if (res
== res
+1.003*((res1
-res
)+cor
)) return (m
>0)?res
:-res
;
291 cor
=((hp0
.x
-res1
)-2.0*w
[0])+(hp1
.x
-2.0*w
[1]);
293 return (m
>0)?res
:-res
;
295 } /* else if (k < 0x3ff00000) */
296 /*---------------------------- |x|>=1 -------------------------------*/
297 else if (k
==0x3ff00000 && u
.i
[LOW_HALF
]==0) return (m
>0)?hp0
.x
:-hp0
.x
;
299 if (k
>0x7ff00000 || (k
== 0x7ff00000 && u
.i
[LOW_HALF
] != 0)) return x
+ x
;
301 u
.i
[HIGH_HALF
]=0x7ff00000;
302 v
.i
[HIGH_HALF
]=0x7ff00000;
305 return u
.x
/v
.x
; /* NaN */
308 #ifndef __ieee754_asin
309 libm_alias_finite (__ieee754_asin
, __asin
)
312 /*******************************************************************/
314 /* End of arcsine, below is arccosine */
316 /*******************************************************************/
320 __ieee754_acos(double x
)
322 double x1
,x2
,xx
,s1
,s2
,res1
,p
,t
,res
,r
,cor
,cc
,y
,c
,z
,w
[2],eps
;
328 /*------------------- |x|<2.77556*10^-17 ----------------------*/
329 if (k
< 0x3c880000) return hp0
.x
;
331 /*----------------- 2.77556*10^-17 <= |x| < 2^-3 --------------*/
333 if (k
< 0x3fc00000) {
335 t
= (((((f6
*x2
+ f5
)*x2
+ f4
)*x2
+ f3
)*x2
+ f2
)*x2
+ f1
)*(x2
*x
);
337 cor
=(((hp0
.x
-r
)-x
)+hp1
.x
)-t
;
340 if (res
== res
+1.004*cor
) return res
;
348 s2
= ((((((c7
*xx
+ c6
)*xx
+ c5
)*xx
+ c4
)*xx
+ c3
)*xx
+ c2
)*xx
*xx
*x
+
349 ((a1
.x
+a2
.x
)*x2
*x2
+ 0.5*x1
*x
)*x2
) + a2
.x
*p
;
351 s2
= ((x
-res1
)+s1
)+s2
;
353 cor
=(((hp0
.x
-r
)-res1
)+hp1
.x
)-s2
;
356 if (res
== res
+1.00004*cor
) return res
;
360 cor
=((hp0
.x
-r
)-w
[0])+(hp1
.x
-w
[1]);
365 } /* else if (k < 0x3fc00000) */
366 /*---------------------- 0.125 <= |x| < 0.5 --------------------*/
368 if (k
< 0x3fe00000) {
369 if (k
<0x3fd00000) n
= 11*((k
&0x000fffff)>>15);
370 else n
= 11*((k
&0x000fffff)>>14)+352;
371 if (m
>0) xx
= x
- asncs
.x
[n
];
372 else xx
= -x
- asncs
.x
[n
];
374 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+
375 xx
*(asncs
.x
[n
+5]+xx
*asncs
.x
[n
+6]))))+asncs
.x
[n
+7];
377 y
= (m
>0)?(hp0
.x
-asncs
.x
[n
+8]):(hp0
.x
+asncs
.x
[n
+8]);
378 t
= (m
>0)?(hp1
.x
-t
):(hp1
.x
+t
);
380 if (res
== res
+1.02*((y
-res
)+t
)) return res
;
382 r
=asncs
.x
[n
+8]+xx
*asncs
.x
[n
+9];
383 t
=((asncs
.x
[n
+8]-r
)+xx
*asncs
.x
[n
+9])+(p
+xx
*asncs
.x
[n
+10]);
385 {p
= hp0
.x
-r
; t
= (((hp0
.x
-p
)-r
)-t
)+hp1
.x
; }
387 {p
= hp0
.x
+r
; t
= ((hp0
.x
-p
)+r
)+(hp1
.x
+t
); }
390 if (res
== (res
+1.0002*cor
)) return res
;
396 if (z
>1.0e-27) return max(res
,res1
);
397 else if (z
<-1.0e-27) return min(res
,res1
);
401 } /* else if (k < 0x3fe00000) */
403 /*--------------------------- 0.5 <= |x| < 0.75 ---------------------*/
405 if (k
< 0x3fe80000) {
406 n
= 1056+((k
&0x000fe000)>>11)*3;
407 if (m
>0) {xx
= x
- asncs
.x
[n
]; eps
=1.04; }
408 else {xx
= -x
- asncs
.x
[n
]; eps
=1.02; }
410 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+
411 xx
*(asncs
.x
[n
+5]+xx
*(asncs
.x
[n
+6]+
412 xx
*asncs
.x
[n
+7])))))+asncs
.x
[n
+8];
414 y
= (m
>0)?(hp0
.x
-asncs
.x
[n
+9]):(hp0
.x
+asncs
.x
[n
+9]);
415 t
= (m
>0)?(hp1
.x
-t
):(hp1
.x
+t
);
417 if (res
== res
+eps
*((y
-res
)+t
)) return res
;
419 r
=asncs
.x
[n
+9]+xx
*asncs
.x
[n
+10];
420 t
=((asncs
.x
[n
+9]-r
)+xx
*asncs
.x
[n
+10])+(p
+xx
*asncs
.x
[n
+11]);
421 if (m
>0) {p
= hp0
.x
-r
; t
= (((hp0
.x
-p
)-r
)-t
)+hp1
.x
; eps
=1.0004; }
422 else {p
= hp0
.x
+r
; t
= ((hp0
.x
-p
)+r
)+(hp1
.x
+t
); eps
=1.0002; }
425 if (res
== (res
+eps
*cor
)) return res
;
431 if (z
>1.0e-27) return max(res
,res1
);
432 else if (z
<-1.0e-27) return min(res
,res1
);
436 } /* else if (k < 0x3fe80000) */
438 /*------------------------- 0.75 <= |x| < 0.921875 -------------*/
440 if (k
< 0x3fed8000) {
441 n
= 992+((k
&0x000fe000)>>13)*13;
442 if (m
>0) {xx
= x
- asncs
.x
[n
]; eps
= 1.04; }
443 else {xx
= -x
- asncs
.x
[n
]; eps
= 1.01; }
445 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+
446 xx
*(asncs
.x
[n
+5]+xx
*(asncs
.x
[n
+6]+xx
*(asncs
.x
[n
+7]+
447 xx
*asncs
.x
[n
+8]))))))+asncs
.x
[n
+9];
449 y
= (m
>0)?(hp0
.x
-asncs
.x
[n
+10]):(hp0
.x
+asncs
.x
[n
+10]);
450 t
= (m
>0)?(hp1
.x
-t
):(hp1
.x
+t
);
452 if (res
== res
+eps
*((y
-res
)+t
)) return res
;
454 r
=asncs
.x
[n
+10]+xx
*asncs
.x
[n
+11];
455 t
=((asncs
.x
[n
+10]-r
)+xx
*asncs
.x
[n
+11])+(p
+xx
*asncs
.x
[n
+12]);
456 if (m
>0) {p
= hp0
.x
-r
; t
= (((hp0
.x
-p
)-r
)-t
)+hp1
.x
; eps
=1.0032; }
457 else {p
= hp0
.x
+r
; t
= ((hp0
.x
-p
)+r
)+(hp1
.x
+t
); eps
=1.0008; }
460 if (res
== (res
+eps
*cor
)) return res
;
466 if (z
>1.0e-27) return max(res
,res1
);
467 else if (z
<-1.0e-27) return min(res
,res1
);
471 } /* else if (k < 0x3fed8000) */
473 /*-------------------0.921875 <= |x| < 0.953125 ------------------*/
475 if (k
< 0x3fee8000) {
476 n
= 884+((k
&0x000fe000)>>13)*14;
477 if (m
>0) {xx
= x
- asncs
.x
[n
]; eps
=1.04; }
478 else {xx
= -x
- asncs
.x
[n
]; eps
=1.005; }
480 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+
481 xx
*(asncs
.x
[n
+5]+xx
*(asncs
.x
[n
+6]
482 +xx
*(asncs
.x
[n
+7]+xx
*(asncs
.x
[n
+8]+
483 xx
*asncs
.x
[n
+9])))))))+asncs
.x
[n
+10];
485 y
= (m
>0)?(hp0
.x
-asncs
.x
[n
+11]):(hp0
.x
+asncs
.x
[n
+11]);
486 t
= (m
>0)?(hp1
.x
-t
):(hp1
.x
+t
);
488 if (res
== res
+eps
*((y
-res
)+t
)) return res
;
490 r
=asncs
.x
[n
+11]+xx
*asncs
.x
[n
+12];
491 t
=((asncs
.x
[n
+11]-r
)+xx
*asncs
.x
[n
+12])+(p
+xx
*asncs
.x
[n
+13]);
492 if (m
>0) {p
= hp0
.x
-r
; t
= (((hp0
.x
-p
)-r
)-t
)+hp1
.x
; eps
=1.0030; }
493 else {p
= hp0
.x
+r
; t
= ((hp0
.x
-p
)+r
)+(hp1
.x
+t
); eps
=1.0005; }
496 if (res
== (res
+eps
*cor
)) return res
;
502 if (z
>1.0e-27) return max(res
,res1
);
503 else if (z
<-1.0e-27) return min(res
,res1
);
507 } /* else if (k < 0x3fee8000) */
509 /*--------------------0.953125 <= |x| < 0.96875 ----------------*/
511 if (k
< 0x3fef0000) {
512 n
= 768+((k
&0x000fe000)>>13)*15;
513 if (m
>0) {xx
= x
- asncs
.x
[n
]; eps
=1.04; }
514 else {xx
= -x
- asncs
.x
[n
]; eps
=1.005;}
516 p
=xx
*xx
*(asncs
.x
[n
+2]+xx
*(asncs
.x
[n
+3]+xx
*(asncs
.x
[n
+4]+
517 xx
*(asncs
.x
[n
+5]+xx
*(asncs
.x
[n
+6]
518 +xx
*(asncs
.x
[n
+7]+xx
*(asncs
.x
[n
+8]+xx
*(asncs
.x
[n
+9]+
519 xx
*asncs
.x
[n
+10]))))))))+asncs
.x
[n
+11];
521 y
= (m
>0)?(hp0
.x
-asncs
.x
[n
+12]):(hp0
.x
+asncs
.x
[n
+12]);
522 t
= (m
>0)?(hp1
.x
-t
):(hp1
.x
+t
);
524 if (res
== res
+eps
*((y
-res
)+t
)) return res
;
526 r
=asncs
.x
[n
+12]+xx
*asncs
.x
[n
+13];
527 t
=((asncs
.x
[n
+12]-r
)+xx
*asncs
.x
[n
+13])+(p
+xx
*asncs
.x
[n
+14]);
528 if (m
>0) {p
= hp0
.x
-r
; t
= (((hp0
.x
-p
)-r
)-t
)+hp1
.x
; eps
=1.0030; }
529 else {p
= hp0
.x
+r
; t
= ((hp0
.x
-p
)+r
)+(hp1
.x
+t
); eps
=1.0005; }
532 if (res
== (res
+eps
*cor
)) return res
;
538 if (z
>1.0e-27) return max(res
,res1
);
539 else if (z
<-1.0e-27) return min(res
,res1
);
543 } /* else if (k < 0x3fef0000) */
544 /*-----------------0.96875 <= |x| < 1 ---------------------------*/
548 z
= 0.5*((m
>0)?(1.0-x
):(1.0+x
));
551 t
=inroot
[(k
&0x001fffff)>>14]*powtwo
[511-(k
>>21)];
553 t
= t
*(rt0
+r
*(rt1
+r
*(rt2
+r
*rt3
)));
558 p
=(((((f6
*z
+f5
)*z
+f4
)*z
+f3
)*z
+f2
)*z
+f1
)*z
;
560 cor
= (hp1
.x
- cc
)-(y
+cc
)*p
;
563 if (res
== res
+1.002*((res1
-res
)+cor
)) return (res
+res
);
569 cor
=((hp0
.x
-res1
)-w
[0])+(hp1
.x
-w
[1]);
577 if (res
== res
+1.03*((y
-res
)+cor
)) return (res
+res
);
586 } /* else if (k < 0x3ff00000) */
588 /*---------------------------- |x|>=1 -----------------------*/
590 if (k
==0x3ff00000 && u
.i
[LOW_HALF
]==0) return (m
>0)?0:2.0*hp0
.x
;
592 if (k
>0x7ff00000 || (k
== 0x7ff00000 && u
.i
[LOW_HALF
] != 0)) return x
+ x
;
594 u
.i
[HIGH_HALF
]=0x7ff00000;
595 v
.i
[HIGH_HALF
]=0x7ff00000;
601 #ifndef __ieee754_acos
602 libm_alias_finite (__ieee754_acos
, __acos
)