Updated to fedora-glibc-20050106T1443
[glibc.git] / sysdeps / ia64 / fpu / libm_error.c
blob42ca36d98f2e3a034c563c5a9254b4afa23d3e8f
1 /* file: libm_error.c */
4 // Copyright (c) 2000 - 2003, Intel Corporation
5 // All rights reserved.
6 //
7 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
8 //
9 // Redistribution and use in source and binary forms, with or without
10 // modification, are permitted provided that the following conditions are
11 // met:
13 // * Redistributions of source code must retain the above copyright
14 // notice, this list of conditions and the following disclaimer.
16 // * Redistributions in binary form must reproduce the above copyright
17 // notice, this list of conditions and the following disclaimer in the
18 // documentation and/or other materials provided with the distribution.
20 // * The name of Intel Corporation may not be used to endorse or promote
21 // products derived from this software without specific prior written
22 // permission.
25 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
33 // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 // Intel Corporation is the author of this code, and requests that all
38 // problem reports or change requests be submitted to it directly at
39 // http://www.intel.com/software/products/opensource/libraries/num.htm.
41 // History
42 //==============================================================
43 // 2/02/00: Initial version
44 // 3/22/00: Updated to support flexible and dynamic error handling.
45 // 8/16/00: Changed all matherr function-calls to use the pmatherr
46 // function-pointers.
47 // 10/03/00: Corrected a scalb type.
48 // 11/28/00: Changed INPUT_XL to INPUT_XD for scalb_underflow case.
49 // 12/07/00: Added code to make scalbn error support equivalent to ldexp.
50 // 2/07/01: Added __declspec(align(16)) to long double constants to correct
51 // alignment problem.
52 // 4/23/01: Added code for remquo
53 // 6/07/01: Added code for fdim, lrint, lround, llrint, llround
54 // Deleted code for remquo
55 // 8/15/01: Added code for scalbln, nexttoward
56 // 12/10/01: Added code for erfc
57 // 12/27/01: Added code for degree argument functions
58 // 01/02/02: Added code for tand, cotd
59 // 01/15/02: Corrected SVID/XOPEN code for log1p, pow, and acosh
60 // 01/25/02: Corrected ISOC for lgamma and gamma to return EDOM for neg ints
61 // 01/28/02: Corrected SVID/XOPEN stderr message for log2
62 // 05/20/02: Added code for cot
63 // 07/01/02: Added code for sinhcosh
64 // 10/04/02: Underflow detection in ISOC path redefined to
65 // be zero rather than tiny and inexact
66 // 12/06/02: Added code for annuity and compound
67 // 01/30/03: Corrected test for underflow in ISOC path to not set denormal
68 // 04/10/03: Corrected ISOC branch for gamma/lgamma to return ERANGE for neg ints.
69 // Added code for tgamma
70 // 04/11/03: Corrected POSIX/SVID/XOPEN branches for gamma/lgamma
71 // to return EDOM for neg ints.
74 #include <errno.h>
75 #include <stdio.h>
76 #include <stdlib.h>
77 #include "libm_support.h"
79 #ifdef _LIBC
80 # define pmatherr matherr
81 # define pmatherrf matherrf
82 # define pmatherrl matherrl
83 #else
84 _LIB_VERSION_TYPE
85 #if defined( __POSIX__ )
86 _LIB_VERSIONIMF = _POSIX_;
87 #elif defined( __XOPEN__ )
88 _LIB_VERSIONIMF = _XOPEN_;
89 #elif defined( __SVID__ )
90 _LIB_VERSIONIMF = _SVID_;
91 #elif defined( __IEEE__ )
92 _LIB_VERSIONIMF = _IEEE_;
93 #else
94 _LIB_VERSIONIMF = _ISOC_;
95 #endif
97 /************************************************************/
98 /* matherrX function pointers and setusermatherrX functions */
99 /************************************************************/
100 int (*pmatherrf)(struct exceptionf*) = MATHERR_F;
101 int (*pmatherr)(struct EXC_DECL_D*) = MATHERR_D;
102 int (*pmatherrl)(struct exceptionl*) = matherrl;
104 void __libm_setusermatherrf( int(*user_merrf)(struct exceptionf*) )
105 { pmatherrf = ( (user_merrf==NULL)? (MATHERR_F) : (user_merrf) ); }
107 void __libm_setusermatherr( int(*user_merr)(struct EXC_DECL_D*) )
108 { pmatherr = ( (user_merr==NULL)? (MATHERR_D) : (user_merr) ); }
110 void __libm_setusermatherrl( int(*user_merrl)(struct exceptionl*) )
111 { pmatherrl = ( (user_merrl==NULL)? (matherrl) : (user_merrl) ); }
113 #endif /* !_LIBC */
115 /***********************************************/
116 /* error-handling function, libm_error_support */
117 /***********************************************/
118 void __libm_error_support(void *arg1,void *arg2,void *retval,error_types input_tag)
121 # ifdef __cplusplus
122 struct __exception exc;
123 # else
124 struct exception exc;
125 # endif
127 struct exceptionf excf;
128 struct exceptionl excl;
130 # if defined(__GNUC__)
131 #define ALIGNIT __attribute__ ((__aligned__ (16)))
132 # elif defined opensource
133 #define ALIGNIT
134 # else
135 #define ALIGNIT __declspec(align(16))
136 # endif
138 # ifdef SIZE_LONG_INT_64
139 #define __INT_64__ signed long
140 # else
141 #define __INT_64__ __int64
142 # endif
144 const char float_inf[4] = {0x00,0x00,0x80,0x7F};
145 const char float_huge[4] = {0xFF,0xFF,0x7F,0x7F};
146 const char float_zero[4] = {0x00,0x00,0x00,0x00};
147 const char float_neg_inf[4] = {0x00,0x00,0x80,0xFF};
148 const char float_neg_huge[4] = {0xFF,0xFF,0x7F,0xFF};
149 const char float_neg_zero[4] = {0x00,0x00,0x00,0x80};
150 ALIGNIT
151 const char double_inf[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7F};
152 #if 0 /* unused */
153 ALIGNIT
154 const char double_huge[8] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0x7F};
155 #endif
156 ALIGNIT
157 const char double_zero[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
158 ALIGNIT
159 const char double_neg_inf[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF};
160 #if 0 /* unused */
161 ALIGNIT
162 const char double_neg_huge[8] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF};
163 #endif
164 ALIGNIT
165 const char double_neg_zero[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80};
166 ALIGNIT
167 const char long_double_inf[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00};
168 #if 0 /* unused */
169 ALIGNIT
170 const char long_double_huge[16] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00};
171 #endif
172 ALIGNIT
173 const char long_double_zero[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
174 ALIGNIT
175 const char long_double_neg_inf[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00};
176 #if 0 /* unused */
177 ALIGNIT
178 const char long_double_neg_huge[16] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00};
179 #endif
180 ALIGNIT
181 const char long_double_neg_zero[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00};
183 #define RETVAL_HUGE_VALL *(long double *)retval = *(long double *)long_double_inf
184 #define RETVAL_NEG_HUGE_VALL *(long double *)retval = *(long double *)long_double_neg_inf
185 #define RETVAL_HUGEL *(long double *)retval = (long double)*(float *)float_huge
186 #define RETVAL_NEG_HUGEL *(long double *)retval =(long double)*(float*)float_neg_huge
188 #define RETVAL_HUGE_VALD *(double *)retval = *(double *) double_inf
189 #define RETVAL_NEG_HUGE_VALD *(double *)retval = *(double *) double_neg_inf
190 #define RETVAL_HUGED *(double *)retval = (double) *(float *)float_huge
191 #define RETVAL_NEG_HUGED *(double *)retval = (double) *(float *) float_neg_huge
193 #define RETVAL_HUGE_VALF *(float *)retval = *(float *) float_inf
194 #define RETVAL_NEG_HUGE_VALF *(float *)retval = *(float *) float_neg_inf
195 #define RETVAL_HUGEF *(float *)retval = *(float *) float_huge
196 #define RETVAL_NEG_HUGEF *(float *)retval = *(float *) float_neg_huge
198 #define RETVAL_ZEROL *(long double *)retval = *(long double *)long_double_zero
199 #define RETVAL_ZEROD *(double *)retval = *(double *)double_zero
200 #define RETVAL_ZEROF *(float *)retval = *(float *)float_zero
202 #define RETVAL_NEG_ZEROL *(long double *)retval = *(long double *)long_double_neg_zero
203 #define RETVAL_NEG_ZEROD *(double *)retval = *(double *)double_neg_zero
204 #define RETVAL_NEG_ZEROF *(float *)retval = *(float *)float_neg_zero
206 #define RETVAL_ONEL *(long double *)retval = (long double) 1.0
207 #define RETVAL_ONED *(double *)retval = 1.0
208 #define RETVAL_ONEF *(float *)retval = 1.0f
210 #define NOT_MATHERRL excl.arg1=*(long double *)arg1;excl.arg2=*(long double *)arg2;excl.retval=*(long double *)retval;if(!pmatherrl(&excl))
211 #define NOT_MATHERRD exc.arg1=*(double *)arg1;exc.arg2=*(double *)arg2;exc.retval=*(double *)retval;if(!pmatherr(&exc))
212 #define NOT_MATHERRF excf.arg1=*(float *)arg1;excf.arg2=*(float *)arg2;excf.retval=*(float *)retval;if(!pmatherrf(&excf))
214 #define ifSVID if(_LIB_VERSIONIMF==_SVID_)
216 #define NAMEL excl.name
217 #define NAMED exc.name
218 #define NAMEF excf.name
221 // These should work OK for MS because they are ints -
222 // leading underbars are not necessary.
225 #define DOMAIN 1
226 #define SING 2
227 #define OVERFLOW 3
228 #define UNDERFLOW 4
229 #define TLOSS 5
230 #define PLOSS 6
232 #define SINGL excl.type = SING
233 #define DOMAINL excl.type = DOMAIN
234 #define OVERFLOWL excl.type = OVERFLOW
235 #define UNDERFLOWL excl.type = UNDERFLOW
236 #define TLOSSL excl.type = TLOSS
237 #define SINGD exc.type = SING
238 #define DOMAIND exc.type = DOMAIN
239 #define OVERFLOWD exc.type = OVERFLOW
240 #define UNDERFLOWD exc.type = UNDERFLOW
241 #define TLOSSD exc.type = TLOSS
242 #define SINGF excf.type = SING
243 #define DOMAINF excf.type = DOMAIN
244 #define OVERFLOWF excf.type = OVERFLOW
245 #define UNDERFLOWF excf.type = UNDERFLOW
246 #define TLOSSF excf.type = TLOSS
248 #define INPUT_XL (excl.arg1=*(long double*)arg1)
249 #define INPUT_XD (exc.arg1=*(double*)arg1)
250 #define INPUT_XF (excf.arg1=*(float*)arg1)
251 #define INPUT_YL (excl.arg2=*(long double*)arg2)
252 #define INPUT_YD (exc.arg2=*(double*)arg2)
253 #define INPUT_YF (excf.arg2=*(float*)arg2)
254 #define INPUT_RESL (*(long double *)retval)
255 #define INPUT_RESD (*(double *)retval)
256 #define INPUT_RESF (*(float *)retval)
258 #define WRITEL_LOG_ZERO fputs("logl: SING error\n",stderr)
259 #define WRITED_LOG_ZERO fputs("log: SING error\n",stderr)
260 #define WRITEF_LOG_ZERO fputs("logf: SING error\n",stderr)
261 #define WRITEL_LOG_NEGATIVE fputs("logl: DOMAIN error\n",stderr)
262 #define WRITED_LOG_NEGATIVE fputs("log: DOMAIN error\n",stderr)
263 #define WRITEF_LOG_NEGATIVE fputs("logf: DOMAIN error\n",stderr)
264 #define WRITEL_Y0_ZERO fputs("y0l: DOMAIN error\n",stderr)
265 #define WRITED_Y0_ZERO fputs("y0: DOMAIN error\n",stderr)
266 #define WRITEF_Y0_ZERO fputs("y0f: DOMAIN error\n",stderr)
267 #define WRITEL_Y0_NEGATIVE fputs("y0l: DOMAIN error\n",stderr)
268 #define WRITED_Y0_NEGATIVE fputs("y0: DOMAIN error\n",stderr)
269 #define WRITEF_Y0_NEGATIVE fputs("y0f: DOMAIN error\n",stderr)
270 #define WRITEL_Y1_ZERO fputs("y1l: DOMAIN error\n",stderr)
271 #define WRITED_Y1_ZERO fputs("y1: DOMAIN error\n",stderr)
272 #define WRITEF_Y1_ZERO fputs("y1f: DOMAIN error\n",stderr)
273 #define WRITEL_Y1_NEGATIVE fputs("y1l: DOMAIN error\n",stderr)
274 #define WRITED_Y1_NEGATIUE fputs("y1: DOMAIN error\n",stderr)
275 #define WRITEF_Y1_NEGATIVE fputs("y1f: DOMAIN error\n",stderr)
276 #define WRITEL_YN_ZERO fputs("ynl: DOMAIN error\n",stderr)
277 #define WRITED_YN_ZERO fputs("yn: DOMAIN error\n",stderr)
278 #define WRITEF_YN_ZERO fputs("ynf: DOMAIN error\n",stderr)
279 #define WRITEL_YN_NEGATIVE fputs("ynl: DOMAIN error\n",stderr)
280 #define WRITED_YN_NEGATIVE fputs("yn: DOMAIN error\n",stderr)
281 #define WRITEF_YN_NEGATIVE fputs("ynf: DOMAIN error\n",stderr)
282 #define WRITEL_LOG1P_ZERO fputs("log1pl: SING error\n",stderr)
283 #define WRITED_LOG1P_ZERO fputs("log1p: SING error\n",stderr)
284 #define WRITEF_LOG1P_ZERO fputs("log1pf: SING error\n",stderr)
285 #define WRITEL_LOG1P_NEGATIVE fputs("log1pl: DOMAIN error\n",stderr)
286 #define WRITED_LOG1P_NEGATIVE fputs("log1p: DOMAIN error\n",stderr)
287 #define WRITEF_LOG1P_NEGATIVE fputs("log1pf: DOMAIN error\n",stderr)
288 #define WRITEL_LOG10_ZERO fputs("log10l: SING error\n",stderr)
289 #define WRITED_LOG10_ZERO fputs("log10: SING error\n",stderr)
290 #define WRITEF_LOG10_ZERO fputs("log10f: SING error\n",stderr)
291 #define WRITEL_LOG10_NEGATIVE fputs("log10l: DOMAIN error\n",stderr)
292 #define WRITED_LOG10_NEGATIVE fputs("log10: DOMAIN error\n",stderr)
293 #define WRITEF_LOG10_NEGATIVE fputs("log10f: DOMAIN error\n",stderr)
294 #define WRITEL_LOG2_ZERO fputs("log2l: SING error\n",stderr)
295 #define WRITED_LOG2_ZERO fputs("log2: SING error\n",stderr)
296 #define WRITEF_LOG2_ZERO fputs("log2f: SING error\n",stderr)
297 #define WRITEL_LOG2_NEGATIVE fputs("log2l: DOMAIN error\n",stderr)
298 #define WRITED_LOG2_NEGATIVE fputs("log2: DOMAIN error\n",stderr)
299 #define WRITEF_LOG2_NEGATIVE fputs("log2f: DOMAIN error\n",stderr)
300 #define WRITEL_POW_ZERO_TO_ZERO fputs("powl(0,0): DOMAIN error\n",stderr)
301 #define WRITED_POW_ZERO_TO_ZERO fputs("pow(0,0): DOMAIN error\n",stderr)
302 #define WRITEF_POW_ZERO_TO_ZERO fputs("powf(0,0): DOMAIN error\n",stderr)
303 #define WRITEL_POW_ZERO_TO_NEGATIVE fputs("powl(0,negative): DOMAIN error\n",stderr)
304 #define WRITED_POW_ZERO_TO_NEGATIVE fputs("pow(0,negative): DOMAIN error\n",stderr)
305 #define WRITEF_POW_ZERO_TO_NEGATIVE fputs("powf(0,negative): DOMAIN error\n",stderr)
306 #define WRITEL_POW_NEG_TO_NON_INTEGER fputs("powl(negative,non-integer): DOMAIN error\n",stderr)
307 #define WRITED_POW_NEG_TO_NON_INTEGER fputs("pow(negative,non-integer): DOMAIN error\n",stderr)
308 #define WRITEF_POW_NEG_TO_NON_INTEGER fputs("powf(negative,non-integer): DOMAIN error\n",stderr)
309 #define WRITEL_ATAN2_ZERO_BY_ZERO fputs("atan2l: DOMAIN error\n",stderr)
310 #define WRITED_ATAN2_ZERO_BY_ZERO fputs("atan2: DOMAIN error\n",stderr)
311 #define WRITEF_ATAN2_ZERO_BY_ZERO fputs("atan2f: DOMAIN error\n",stderr)
312 #define WRITEL_SQRT fputs("sqrtl: DOMAIN error\n",stderr)
313 #define WRITED_SQRT fputs("sqrt: DOMAIN error\n",stderr)
314 #define WRITEF_SQRT fputs("sqrtf: DOMAIN error\n",stderr)
315 #define WRITEL_FMOD fputs("fmodl: DOMAIN error\n",stderr)
316 #define WRITED_FMOD fputs("fmod: DOMAIN error\n",stderr)
317 #define WRITEF_FMOD fputs("fmodf: DOMAIN error\n",stderr)
318 #define WRITEL_REM fputs("remainderl: DOMAIN error\n",stderr)
319 #define WRITED_REM fputs("remainder: DOMAIN error\n",stderr)
320 #define WRITEF_REM fputs("remainderf: DOMAIN error\n",stderr)
321 #define WRITEL_ACOS fputs("acosl: DOMAIN error\n",stderr)
322 #define WRITED_ACOS fputs("acos: DOMAIN error\n",stderr)
323 #define WRITEF_ACOS fputs("acosf: DOMAIN error\n",stderr)
324 #define WRITEL_ASIN fputs("asinl: DOMAIN error\n",stderr)
325 #define WRITED_ASIN fputs("asin: DOMAIN error\n",stderr)
326 #define WRITEF_ASIN fputs("asinf: DOMAIN error\n",stderr)
327 #define WRITEL_ACOSH fputs("acoshl: DOMAIN error\n",stderr)
328 #define WRITED_ACOSH fputs("acosh: DOMAIN error\n",stderr)
329 #define WRITEF_ACOSH fputs("acoshf: DOMAIN error\n",stderr)
330 #define WRITEL_ATANH_GT_ONE fputs("atanhl: DOMAIN error\n",stderr)
331 #define WRITED_ATANH_GT_ONE fputs("atanh: DOMAIN error\n",stderr)
332 #define WRITEF_ATANH_GT_ONE fputs("atanhf: DOMAIN error\n",stderr)
333 #define WRITEL_ATANH_EQ_ONE fputs("atanhl: SING error\n",stderr)
334 #define WRITED_ATANH_EQ_ONE fputs("atanh: SING error\n",stderr)
335 #define WRITEF_ATANH_EQ_ONE fputs("atanhf: SING error\n",stderr)
336 #define WRITEL_LGAMMA_NEGATIVE fputs("lgammal: SING error\n",stderr)
337 #define WRITED_LGAMMA_NEGATIVE fputs("lgamma: SING error\n",stderr)
338 #define WRITEF_LGAMMA_NEGATIVE fputs("lgammaf: SING error\n",stderr)
339 #define WRITEL_GAMMA_NEGATIVE fputs("gammal: SING error\n",stderr)
340 #define WRITED_GAMMA_NEGATIVE fputs("gamma: SING error\n",stderr)
341 #define WRITEF_GAMMA_NEGATIVE fputs("gammaf: SING error\n",stderr)
342 #define WRITEL_TGAMMA_NEGATIVE fputs("tgammal: DOMAIN error\n",stderr)
343 #define WRITED_TGAMMA_NEGATIVE fputs("tgamma: DOMAIN error\n",stderr)
344 #define WRITEF_TGAMMA_NEGATIVE fputs("tgammaf: DOMAIN error\n",stderr)
345 #define WRITEL_J0_TLOSS fputs("j0l: TLOSS error\n",stderr)
346 #define WRITEL_Y0_TLOSS fputs("y0l: TLOSS error\n",stderr)
347 #define WRITEL_J1_TLOSS fputs("j1l: TLOSS error\n",stderr)
348 #define WRITEL_Y1_TLOSS fputs("y1l: TLOSS error\n",stderr)
349 #define WRITEL_JN_TLOSS fputs("jnl: TLOSS error\n",stderr)
350 #define WRITEL_YN_TLOSS fputs("ynl: TLOSS error\n",stderr)
351 #define WRITED_J0_TLOSS fputs("j0: TLOSS error\n",stderr)
352 #define WRITED_Y0_TLOSS fputs("y0: TLOSS error\n",stderr)
353 #define WRITED_J1_TLOSS fputs("j1: TLOSS error\n",stderr)
354 #define WRITED_Y1_TLOSS fputs("y1: TLOSS error\n",stderr)
355 #define WRITED_JN_TLOSS fputs("jn: TLOSS error\n",stderr)
356 #define WRITED_YN_TLOSS fputs("yn: TLOSS error\n",stderr)
357 #define WRITEF_J0_TLOSS fputs("j0f: TLOSS error\n",stderr)
358 #define WRITEF_Y0_TLOSS fputs("y0f: TLOSS error\n",stderr)
359 #define WRITEF_J1_TLOSS fputs("j1f: TLOSS error\n",stderr)
360 #define WRITEF_Y1_TLOSS fputs("y1f: TLOSS error\n",stderr)
361 #define WRITEF_JN_TLOSS fputs("jnf: TLOSS error\n",stderr)
362 #define WRITEF_YN_TLOSS fputs("ynf: TLOSS error\n",stderr)
363 #define WRITEL_ACOSD fputs("acosdl: DOMAIN error\n",stderr)
364 #define WRITED_ACOSD fputs("acosd: DOMAIN error\n",stderr)
365 #define WRITEF_ACOSD fputs("acosdf: DOMAIN error\n",stderr)
366 #define WRITEL_ASIND fputs("asindl: DOMAIN error\n",stderr)
367 #define WRITED_ASIND fputs("asind: DOMAIN error\n",stderr)
368 #define WRITEF_ASIND fputs("asindf: DOMAIN error\n",stderr)
369 #define WRITEL_ATAN2D_ZERO_BY_ZERO fputs("atan2dl: DOMAIN error\n",stderr)
370 #define WRITED_ATAN2D_ZERO_BY_ZERO fputs("atan2d: DOMAIN error\n",stderr)
371 #define WRITEF_ATAN2D_ZERO_BY_ZERO fputs("atan2df: DOMAIN error\n",stderr)
374 /***********************/
375 /* IEEE Path */
376 /***********************/
377 if(_LIB_VERSIONIMF==_IEEE_) return;
379 /***********************/
380 /* C9X Path */
381 /***********************/
382 else if(_LIB_VERSIONIMF==_ISOC_)
384 switch(input_tag)
386 case logl_zero:
387 case log_zero:
388 case logf_zero:
389 case log10l_zero:
390 case log10_zero:
391 case log10f_zero:
392 case log2l_zero:
393 case log2_zero:
394 case log2f_zero:
395 case log1pl_zero:
396 case log1p_zero:
397 case log1pf_zero:
398 case powl_overflow:
399 case pow_overflow:
400 case powf_overflow:
401 case expl_overflow:
402 case exp_overflow:
403 case expf_overflow:
404 case exp2l_overflow:
405 case exp2_overflow:
406 case exp2f_overflow:
407 case exp10l_overflow:
408 case exp10_overflow:
409 case exp10f_overflow:
410 case expm1l_overflow:
411 case expm1_overflow:
412 case expm1f_overflow:
413 case hypotl_overflow:
414 case hypot_overflow:
415 case hypotf_overflow:
416 case sinhl_overflow:
417 case sinh_overflow:
418 case sinhf_overflow:
419 case atanhl_eq_one:
420 case atanh_eq_one:
421 case atanhf_eq_one:
422 case scalbl_overflow:
423 case scalb_overflow:
424 case scalbf_overflow:
425 case coshl_overflow:
426 case cosh_overflow:
427 case coshf_overflow:
428 case nextafterl_overflow:
429 case nextafter_overflow:
430 case nextafterf_overflow:
431 case nexttowardl_overflow:
432 case nexttoward_overflow:
433 case nexttowardf_overflow:
434 case scalbnl_overflow:
435 case scalbn_overflow:
436 case scalbnf_overflow:
437 case scalblnl_overflow:
438 case scalbln_overflow:
439 case scalblnf_overflow:
440 case ldexpl_overflow:
441 case ldexp_overflow:
442 case ldexpf_overflow:
443 case lgammal_overflow:
444 case lgamma_overflow:
445 case lgammaf_overflow:
446 case gammal_overflow:
447 case gamma_overflow:
448 case gammaf_overflow:
449 case lgammal_negative:
450 case lgamma_negative:
451 case lgammaf_negative:
452 case gammal_negative:
453 case gamma_negative:
454 case gammaf_negative:
455 case ilogbl_zero:
456 case ilogb_zero:
457 case ilogbf_zero:
458 case fdiml_overflow:
459 case fdim_overflow:
460 case fdimf_overflow:
461 case llrintl_large:
462 case llrint_large:
463 case llrintf_large:
464 case llroundl_large:
465 case llround_large:
466 case llroundf_large:
467 case lrintl_large:
468 case lrint_large:
469 case lrintf_large:
470 case lroundl_large:
471 case lround_large:
472 case lroundf_large:
473 case tandl_overflow:
474 case tand_overflow:
475 case tandf_overflow:
476 case cotdl_overflow:
477 case cotd_overflow:
478 case cotdf_overflow:
479 case cotl_overflow:
480 case cot_overflow:
481 case cotf_overflow:
482 case sinhcoshl_overflow:
483 case sinhcosh_overflow:
484 case sinhcoshf_overflow:
485 case annuityl_overflow:
486 case annuity_overflow:
487 case annuityf_overflow:
488 case compoundl_overflow:
489 case compound_overflow:
490 case compoundf_overflow:
491 case tgammal_overflow:
492 case tgamma_overflow:
493 case tgammaf_overflow:
495 ERRNO_RANGE; break;
497 case powl_underflow:
498 case expl_underflow:
499 case exp2l_underflow:
500 case scalbl_underflow:
501 case scalbnl_underflow:
502 case scalblnl_underflow:
503 case ldexpl_underflow:
504 case erfcl_underflow:
505 case annuityl_underflow:
506 case compoundl_underflow:
508 if ( *(__INT_64__*)retval == 0 ) ERRNO_RANGE;
509 break;
511 case pow_underflow:
512 case exp_underflow:
513 case exp2_underflow:
514 case scalb_underflow:
515 case scalbn_underflow:
516 case scalbln_underflow:
517 case ldexp_underflow:
518 case erfc_underflow:
519 case annuity_underflow:
520 case compound_underflow:
522 if ( ((*(__INT_64__*)retval)<<1) == 0 ) ERRNO_RANGE;
523 break;
525 case powf_underflow:
526 case expf_underflow:
527 case exp2f_underflow:
528 case scalbf_underflow:
529 case scalbnf_underflow:
530 case scalblnf_underflow:
531 case ldexpf_underflow:
532 case erfcf_underflow:
533 case annuityf_underflow:
534 case compoundf_underflow:
536 if ( ((*(__INT_64__*)retval)<<33) == 0 ) ERRNO_RANGE;
537 break;
539 case logl_negative:
540 case log_negative:
541 case logf_negative:
542 case log10l_negative:
543 case log10_negative:
544 case log10f_negative:
545 case log2l_negative:
546 case log2_negative:
547 case log2f_negative:
548 case log1pl_negative:
549 case log1p_negative:
550 case log1pf_negative:
551 case sqrtl_negative:
552 case sqrt_negative:
553 case sqrtf_negative:
554 case atan2l_zero:
555 case atan2_zero:
556 case atan2f_zero:
557 case powl_zero_to_negative:
558 case powl_neg_to_non_integer:
559 case pow_zero_to_negative:
560 case pow_neg_to_non_integer:
561 case powf_zero_to_negative:
562 case powf_neg_to_non_integer:
563 case fmodl_by_zero:
564 case fmod_by_zero:
565 case fmodf_by_zero:
566 case atanhl_gt_one:
567 case atanh_gt_one:
568 case atanhf_gt_one:
569 case acosl_gt_one:
570 case acos_gt_one:
571 case acosf_gt_one:
572 case asinl_gt_one:
573 case asin_gt_one:
574 case asinf_gt_one:
575 case logbl_zero:
576 case logb_zero:
577 case logbf_zero:
578 case acoshl_lt_one:
579 case acosh_lt_one:
580 case acoshf_lt_one:
581 case y0l_zero:
582 case y0_zero:
583 case y0f_zero:
584 case y1l_zero:
585 case y1_zero:
586 case y1f_zero:
587 case ynl_zero:
588 case yn_zero:
589 case ynf_zero:
590 case y0l_negative:
591 case y0_negative:
592 case y0f_negative:
593 case y1l_negative:
594 case y1_negative:
595 case y1f_negative:
596 case ynl_negative:
597 case yn_negative:
598 case ynf_negative:
599 case acosdl_gt_one:
600 case acosd_gt_one:
601 case acosdf_gt_one:
602 case asindl_gt_one:
603 case asind_gt_one:
604 case asindf_gt_one:
605 case atan2dl_zero:
606 case atan2d_zero:
607 case atan2df_zero:
608 case annuityl_by_zero:
609 case annuity_by_zero:
610 case annuityf_by_zero:
611 case annuityl_less_m1:
612 case annuity_less_m1:
613 case annuityf_less_m1:
614 case compoundl_by_zero:
615 case compound_by_zero:
616 case compoundf_by_zero:
617 case compoundl_less_m1:
618 case compound_less_m1:
619 case compoundf_less_m1:
620 case tgammal_negative:
621 case tgamma_negative:
622 case tgammaf_negative:
624 ERRNO_DOMAIN; break;
626 default:
627 abort();
629 return;
632 /***********************/
633 /* _POSIX_ Path */
634 /***********************/
636 else if(_LIB_VERSIONIMF==_POSIX_)
638 switch(input_tag)
640 case gammal_overflow:
641 case lgammal_overflow:
642 case tgammal_overflow:
644 RETVAL_HUGE_VALL; ERRNO_RANGE; break;
646 case gamma_overflow:
647 case lgamma_overflow:
648 case tgamma_overflow:
650 RETVAL_HUGE_VALD; ERRNO_RANGE; break;
652 case gammaf_overflow:
653 case lgammaf_overflow:
654 case tgammaf_overflow:
656 RETVAL_HUGE_VALF; ERRNO_RANGE; break;
658 case gammal_negative:
659 case lgammal_negative:
660 case gamma_negative:
661 case lgamma_negative:
662 case gammaf_negative:
663 case lgammaf_negative:
664 case tgammal_negative:
665 case tgamma_negative:
666 case tgammaf_negative:
668 ERRNO_DOMAIN; break;
670 case ldexpl_overflow:
671 case ldexpl_underflow:
672 case ldexp_overflow:
673 case ldexp_underflow:
674 case ldexpf_overflow:
675 case ldexpf_underflow:
676 case scalbnl_overflow:
677 case scalbnl_underflow:
678 case scalbn_overflow:
679 case scalbn_underflow:
680 case scalbnf_overflow:
681 case scalbnf_underflow:
682 case scalblnl_overflow:
683 case scalblnl_underflow:
684 case scalbln_overflow:
685 case scalbln_underflow:
686 case scalblnf_overflow:
687 case scalblnf_underflow:
688 case tandl_overflow:
689 case tand_overflow:
690 case tandf_overflow:
691 case cotdl_overflow:
692 case cotd_overflow:
693 case cotdf_overflow:
694 case cotl_overflow:
695 case cot_overflow:
696 case cotf_overflow:
697 case sinhcoshl_overflow:
698 case sinhcosh_overflow:
699 case sinhcoshf_overflow:
701 ERRNO_RANGE; break;
703 case atanhl_gt_one:
704 case atanhl_eq_one:
705 /* atanhl(|x| >= 1) */
707 ERRNO_DOMAIN; break;
709 case atanh_gt_one:
710 case atanh_eq_one:
711 /* atanh(|x| >= 1) */
713 ERRNO_DOMAIN; break;
715 case atanhf_gt_one:
716 case atanhf_eq_one:
717 /* atanhf(|x| >= 1) */
719 ERRNO_DOMAIN; break;
721 case sqrtl_negative:
722 /* sqrtl(x < 0) */
724 ERRNO_DOMAIN; break;
726 case sqrt_negative:
727 /* sqrt(x < 0) */
729 ERRNO_DOMAIN; break;
731 case sqrtf_negative:
732 /* sqrtf(x < 0) */
734 ERRNO_DOMAIN; break;
736 case y0l_zero:
737 case y1l_zero:
738 case ynl_zero:
739 /* y0l(0) */
740 /* y1l(0) */
741 /* ynl(0) */
743 RETVAL_NEG_HUGE_VALL; ERRNO_DOMAIN; break;
745 case y0_zero:
746 case y1_zero:
747 case yn_zero:
748 /* y0(0) */
749 /* y1(0) */
750 /* yn(0) */
752 RETVAL_NEG_HUGE_VALD; ERRNO_DOMAIN; break;
754 case y0f_zero:
755 case y1f_zero:
756 case ynf_zero:
757 /* y0f(0) */
758 /* y1f(0) */
759 /* ynf(0) */
761 RETVAL_NEG_HUGE_VALF; ERRNO_DOMAIN; break;
763 case y0l_negative:
764 case y1l_negative:
765 case ynl_negative:
766 /* y0l(x < 0) */
767 /* y1l(x < 0) */
768 /* ynl(x < 0) */
770 RETVAL_NEG_HUGE_VALL; ERRNO_DOMAIN; break;
772 case y0_negative:
773 case y1_negative:
774 case yn_negative:
775 /* y0(x < 0) */
776 /* y1(x < 0) */
777 /* yn(x < 0) */
779 RETVAL_NEG_HUGE_VALD; ERRNO_DOMAIN; break;
781 case y0f_negative:
782 case y1f_negative:
783 case ynf_negative:
784 /* y0f(x < 0) */
785 /* y1f(x < 0) */
786 /* ynf(x < 0) */
788 RETVAL_NEG_HUGE_VALF; ERRNO_DOMAIN; break;
790 case logl_zero:
791 case log1pl_zero:
792 case log10l_zero:
793 case log2l_zero:
794 /* logl(0) */
795 /* log1pl(0) */
796 /* log10l(0) */
798 RETVAL_NEG_HUGE_VALL; ERRNO_RANGE; break;
800 case log_zero:
801 case log1p_zero:
802 case log10_zero:
803 case log2_zero:
804 /* log(0) */
805 /* log1p(0) */
806 /* log10(0) */
808 RETVAL_NEG_HUGE_VALD; ERRNO_RANGE; break;
810 case logf_zero:
811 case log1pf_zero:
812 case log10f_zero:
813 case log2f_zero:
814 /* logf(0) */
815 /* log1pf(0) */
816 /* log10f(0) */
818 RETVAL_NEG_HUGE_VALF; ERRNO_RANGE; break;
820 case logl_negative:
821 case log1pl_negative:
822 case log10l_negative:
823 case log2l_negative:
824 /* logl(x < 0) */
825 /* log1pl(x < 0) */
826 /* log10l(x < 0) */
828 #ifndef _LIBC
829 RETVAL_NEG_HUGE_VALL;
830 #endif
831 ERRNO_DOMAIN; break;
833 case log_negative:
834 case log1p_negative:
835 case log10_negative:
836 case log2_negative:
837 /* log(x < 0) */
838 /* log1p(x < 0) */
839 /* log10(x < 0) */
841 #ifndef _LIBC
842 RETVAL_NEG_HUGE_VALD;
843 #endif
844 ERRNO_DOMAIN; break;
846 case logf_negative:
847 case log1pf_negative:
848 case log10f_negative:
849 case log2f_negative:
850 /* logf(x < 0) */
851 /* log1pf(x < 0) */
852 /* log10f(x < 0) */
854 #ifndef _LIBC
855 RETVAL_NEG_HUGE_VALF;
856 #endif
857 ERRNO_DOMAIN; break;
859 case expl_overflow:
860 case exp2l_overflow:
861 case exp10l_overflow:
862 /* expl overflow */
864 RETVAL_HUGE_VALL; ERRNO_RANGE; break;
866 case exp_overflow:
867 case exp2_overflow:
868 case exp10_overflow:
869 /* exp overflow */
871 RETVAL_HUGE_VALD; ERRNO_RANGE; break;
873 case expf_overflow:
874 case exp2f_overflow:
875 case exp10f_overflow:
876 /* expf overflow */
878 RETVAL_HUGE_VALF; ERRNO_RANGE; break;
880 case expl_underflow:
881 case exp2l_underflow:
882 /* expl underflow */
884 RETVAL_ZEROL; ERRNO_RANGE; break;
886 case exp_underflow:
887 case exp2_underflow:
888 /* exp underflow */
890 RETVAL_ZEROD; ERRNO_RANGE; break;
892 case expf_underflow:
893 case exp2f_underflow:
894 /* expf underflow */
896 RETVAL_ZEROF; ERRNO_RANGE; break;
898 case j0l_gt_loss:
899 case y0l_gt_loss:
900 case j1l_gt_loss:
901 case y1l_gt_loss:
902 case jnl_gt_loss:
903 case ynl_gt_loss:
904 /* jn and yn doubl-extended> XLOSS */
906 RETVAL_ZEROL; ERRNO_RANGE; break;
908 case j0_gt_loss:
909 case y0_gt_loss:
910 case j1_gt_loss:
911 case y1_gt_loss:
912 case jn_gt_loss:
913 case yn_gt_loss:
914 /* jn and yn double > XLOSS */
916 RETVAL_ZEROD; ERRNO_RANGE; break;
918 case j0f_gt_loss:
919 case y0f_gt_loss:
920 case j1f_gt_loss:
921 case y1f_gt_loss:
922 case jnf_gt_loss:
923 case ynf_gt_loss:
924 /* j0n and y0n > XLOSS */
926 RETVAL_ZEROF; ERRNO_RANGE; break;
928 case powl_zero_to_zero:
929 /* powl 0**0 */
931 break;
933 case pow_zero_to_zero:
934 /* pow 0**0 */
936 break;
938 case powf_zero_to_zero:
939 /* powf 0**0 */
941 break;
943 case powl_overflow:
944 case annuityl_overflow:
945 case compoundl_overflow:
946 /* powl(x,y) overflow */
948 if (INPUT_RESL < 0) RETVAL_NEG_HUGE_VALL;
949 else RETVAL_HUGE_VALL;
950 ERRNO_RANGE; break;
952 case pow_overflow:
953 case annuity_overflow:
954 case compound_overflow:
955 /* pow(x,y) overflow */
957 if (INPUT_RESD < 0) RETVAL_NEG_HUGE_VALD;
958 else RETVAL_HUGE_VALD;
959 ERRNO_RANGE; break;
961 case powf_overflow:
962 case annuityf_overflow:
963 case compoundf_overflow:
964 /* powf(x,y) overflow */
966 if (INPUT_RESF < 0) RETVAL_NEG_HUGE_VALF;
967 else RETVAL_HUGE_VALF;
968 ERRNO_RANGE; break;
970 case powl_underflow:
971 case annuityl_underflow:
972 case compoundl_underflow:
973 /* powl(x,y) underflow */
975 RETVAL_ZEROL; ERRNO_RANGE; break;
977 case pow_underflow:
978 case annuity_underflow:
979 case compound_underflow:
980 /* pow(x,y) underflow */
982 RETVAL_ZEROD; ERRNO_RANGE; break;
984 case powf_underflow:
985 case annuityf_underflow:
986 case compoundf_underflow:
987 /* powf(x,y) underflow */
989 RETVAL_ZEROF; ERRNO_RANGE; break;
991 case annuityl_by_zero:
992 case annuityl_less_m1:
993 case compoundl_by_zero:
994 case compoundl_less_m1:
995 case annuity_by_zero:
996 case annuity_less_m1:
997 case compound_by_zero:
998 case compound_less_m1:
999 case annuityf_by_zero:
1000 case annuityf_less_m1:
1001 case compoundf_by_zero:
1002 case compoundf_less_m1:
1004 ERRNO_DOMAIN; break;
1006 case powl_zero_to_negative:
1007 /* 0**neg */
1009 ERRNO_DOMAIN; break;
1011 case pow_zero_to_negative:
1012 /* 0**neg */
1014 ERRNO_DOMAIN; break;
1016 case powf_zero_to_negative:
1017 /* 0**neg */
1019 ERRNO_DOMAIN; break;
1021 case powl_neg_to_non_integer:
1022 /* neg**non_integral */
1024 ERRNO_DOMAIN; break;
1026 case pow_neg_to_non_integer:
1027 /* neg**non_integral */
1029 ERRNO_DOMAIN; break;
1031 case powf_neg_to_non_integer:
1032 /* neg**non-integral */
1034 ERRNO_DOMAIN; break;
1036 case powl_nan_to_zero:
1037 /* powl(NaN,0.0) */
1038 /* Special Error */
1040 break;
1042 case pow_nan_to_zero:
1043 /* pow(NaN,0.0) */
1045 break;
1047 case powf_nan_to_zero:
1048 /* powf(NaN,0.0) */
1050 break;
1052 case atan2l_zero:
1053 case atan2dl_zero:
1054 /* atan2dl(0,0) */
1056 #ifndef _LIBC
1057 RETVAL_ZEROL;
1058 #else
1059 /* XXX arg1 and arg2 are switched!!!! */
1060 if (signbit (*(long double *) arg1))
1061 /* y == -0 */
1062 *(long double *) retval = __libm_copysignl (M_PIl, *(long double *) arg2);
1063 else
1064 *(long double *) retval = *(long double *) arg2;
1065 #endif
1066 ERRNO_DOMAIN; break;
1068 case atan2_zero:
1069 case atan2d_zero:
1070 /* atan2d(0,0) */
1072 #ifndef _LIBC
1073 RETVAL_ZEROD;
1074 #else
1075 /* XXX arg1 and arg2 are switched!!!! */
1076 if (signbit (*(double *) arg1))
1077 /* y == -0 */
1078 *(double *) retval = __libm_copysign (M_PI, *(double *) arg2);
1079 else
1080 *(double *) retval = *(double *) arg2;
1081 #endif
1082 ERRNO_DOMAIN; break;
1084 case atan2f_zero:
1085 case atan2df_zero:
1086 /* atan2f(0,0) */
1087 /* atan2df(0,0) */
1089 #ifndef _LIBC
1090 RETVAL_ZEROF;
1091 #else
1092 if (signbit (*(float *) arg2))
1093 /* y == -0 */
1094 *(float *) retval = __libm_copysignf (M_PI, *(float *) arg1);
1095 else
1096 *(float *) retval = *(float *) arg1;
1097 #endif
1098 ERRNO_DOMAIN; break;
1100 case expm1l_overflow:
1101 /* expm1 overflow */
1103 ERRNO_RANGE; break;
1105 case expm1_overflow:
1106 /* expm1 overflow */
1108 ERRNO_RANGE; break;
1110 case expm1f_overflow:
1111 /* expm1f overflow */
1113 ERRNO_RANGE; break;
1115 case expm1l_underflow:
1116 /* expm1 underflow */
1118 ERRNO_RANGE; break;
1120 case expm1_underflow:
1121 /* expm1 underflow */
1123 ERRNO_RANGE; break;
1125 case expm1f_underflow:
1126 /* expm1f underflow */
1128 ERRNO_RANGE; break;
1130 case hypotl_overflow:
1131 /* hypotl overflow */
1133 RETVAL_HUGE_VALL; ERRNO_RANGE; break;
1135 case hypot_overflow:
1136 /* hypot overflow */
1138 RETVAL_HUGE_VALD; ERRNO_RANGE; break;
1140 case hypotf_overflow:
1141 /* hypotf overflow */
1143 RETVAL_HUGE_VALF; ERRNO_RANGE; break;
1145 case scalbl_underflow:
1146 /* scalbl underflow */
1148 if (INPUT_XL < 0) RETVAL_NEG_ZEROL;
1149 else RETVAL_ZEROL;
1150 ERRNO_RANGE; break;
1152 case scalb_underflow:
1153 /* scalb underflow */
1155 if (INPUT_XD < 0) RETVAL_NEG_ZEROD;
1156 else RETVAL_ZEROD;
1157 ERRNO_RANGE; break;
1159 case scalbf_underflow:
1160 /* scalbf underflow */
1162 if (INPUT_XF < 0) RETVAL_NEG_ZEROF;
1163 else RETVAL_ZEROF;
1164 ERRNO_RANGE; break;
1166 case scalbl_overflow:
1167 /* scalbl overflow */
1169 if (INPUT_XL < 0) RETVAL_NEG_HUGE_VALL;
1170 else RETVAL_HUGE_VALL;
1171 ERRNO_RANGE; break;
1173 case scalb_overflow:
1174 /* scalb overflow */
1176 if (INPUT_XD < 0) RETVAL_NEG_HUGE_VALD;
1177 else RETVAL_HUGE_VALD;
1178 ERRNO_RANGE; break;
1180 case scalbf_overflow:
1181 /* scalbf overflow */
1183 if (INPUT_XF < 0) RETVAL_NEG_HUGE_VALF;
1184 else RETVAL_HUGE_VALF;
1185 ERRNO_RANGE; break;
1187 case acoshl_lt_one:
1188 /* acoshl(x < 1) */
1190 ERRNO_DOMAIN; break;
1192 case acosh_lt_one:
1193 /* acosh(x < 1) */
1195 ERRNO_DOMAIN; break;
1197 case acoshf_lt_one:
1198 /* acoshf(x < 1) */
1200 ERRNO_DOMAIN; break;
1202 case acosl_gt_one:
1203 case acosdl_gt_one:
1204 /* acosl(x > 1) */
1205 /* acosdl(x > 1) */
1207 #ifndef _LIBC
1208 RETVAL_ZEROL;
1209 #endif
1210 ERRNO_DOMAIN; break;
1212 case acos_gt_one:
1213 case acosd_gt_one:
1214 /* acos(x > 1) */
1215 /* acosd(x > 1) */
1217 #ifndef _LIBC
1218 RETVAL_ZEROD;
1219 #endif
1220 ERRNO_DOMAIN; break;
1222 case acosf_gt_one:
1223 case acosdf_gt_one:
1224 /* acosf(x > 1) */
1225 /* acosdf(x > 1) */
1227 #ifndef _LIBC
1228 RETVAL_ZEROF;
1229 #endif
1230 ERRNO_DOMAIN; break;
1232 case asinl_gt_one:
1233 case asindl_gt_one:
1234 /* asinl(x > 1) */
1235 /* asindl(x > 1) */
1237 #ifndef _LIBC
1238 RETVAL_ZEROL;
1239 #endif
1240 ERRNO_DOMAIN; break;
1242 case asin_gt_one:
1243 case asind_gt_one:
1244 /* asin(x > 1) */
1245 /* asind(x > 1) */
1247 #ifndef _LIBC
1248 RETVAL_ZEROD;
1249 #endif
1250 ERRNO_DOMAIN; break;
1252 case asinf_gt_one:
1253 case asindf_gt_one:
1254 /* asindf(x > 1) */
1256 #ifndef _LIBC
1257 RETVAL_ZEROF;
1258 #endif
1259 ERRNO_DOMAIN; break;
1261 case remainderl_by_zero:
1262 case fmodl_by_zero:
1263 /* fmodl(x,0) */
1265 ERRNO_DOMAIN; break;
1267 case remainder_by_zero:
1268 case fmod_by_zero:
1269 /* fmod(x,0) */
1271 ERRNO_DOMAIN; break;
1273 case remainderf_by_zero:
1274 case fmodf_by_zero:
1275 /* fmodf(x,0) */
1277 ERRNO_DOMAIN; break;
1279 case coshl_overflow:
1280 /* coshl overflows */
1282 RETVAL_HUGE_VALL; ERRNO_RANGE; break;
1284 case cosh_overflow:
1285 /* cosh overflows */
1287 RETVAL_HUGE_VALD; ERRNO_RANGE; break;
1289 case coshf_overflow:
1290 /* coshf overflows */
1292 RETVAL_HUGE_VALF; ERRNO_RANGE; break;
1294 case nextafterl_overflow:
1295 case nextafter_overflow:
1296 case nextafterf_overflow:
1297 case nexttowardl_overflow:
1298 case nexttoward_overflow:
1299 case nexttowardf_overflow:
1301 ERRNO_RANGE; break;
1303 case sinhl_overflow:
1304 /* sinhl overflows */
1306 if (INPUT_XL > 0) RETVAL_HUGE_VALL;
1307 else RETVAL_NEG_HUGE_VALL;
1308 ERRNO_RANGE; break;
1310 case sinh_overflow:
1311 /* sinh overflows */
1313 if (INPUT_XD > 0) RETVAL_HUGE_VALD;
1314 else RETVAL_NEG_HUGE_VALD;
1315 ERRNO_RANGE; break;
1317 case sinhf_overflow:
1318 /* sinhf overflows */
1320 if (INPUT_XF > 0) RETVAL_HUGE_VALF;
1321 else RETVAL_NEG_HUGE_VALF;
1322 ERRNO_RANGE; break;
1324 case logbl_zero:
1325 /* logbl(0) */
1327 ERRNO_DOMAIN; break;
1329 case logb_zero:
1330 /* logb(0) */
1332 ERRNO_DOMAIN; break;
1334 case logbf_zero:
1335 /* logbf(0) */
1337 ERRNO_DOMAIN; break;
1339 case ilogbl_zero:
1340 /* ilogbl(0) */
1342 ERRNO_RANGE; break;
1344 case ilogb_zero:
1345 /* ilogb(0) */
1347 ERRNO_RANGE; break;
1349 case ilogbf_zero:
1350 /* ilogbf(0) */
1352 ERRNO_RANGE; break;
1354 default:
1355 abort();
1357 return;
1358 /* _POSIX_ */
1361 /*******************************/
1362 /* __SVID__ and __XOPEN__ Path */
1363 /*******************************/
1364 else
1366 switch(input_tag)
1368 case ldexpl_overflow:
1369 case ldexpl_underflow:
1370 case ldexp_overflow:
1371 case ldexp_underflow:
1372 case ldexpf_overflow:
1373 case ldexpf_underflow:
1374 case scalbnl_overflow:
1375 case scalbnl_underflow:
1376 case scalbn_overflow:
1377 case scalbn_underflow:
1378 case scalbnf_overflow:
1379 case scalbnf_underflow:
1380 case scalblnl_overflow:
1381 case scalblnl_underflow:
1382 case scalbln_overflow:
1383 case scalbln_underflow:
1384 case scalblnf_overflow:
1385 case scalblnf_underflow:
1386 case tandl_overflow:
1387 case tand_overflow:
1388 case tandf_overflow:
1389 case cotdl_overflow:
1390 case cotd_overflow:
1391 case cotdf_overflow:
1392 case cotl_overflow:
1393 case cot_overflow:
1394 case cotf_overflow:
1395 case annuityl_overflow:
1396 case annuityl_underflow:
1397 case annuity_overflow:
1398 case annuity_underflow:
1399 case annuityf_overflow:
1400 case annuityf_underflow:
1401 case compoundl_overflow:
1402 case compoundl_underflow:
1403 case compound_overflow:
1404 case compound_underflow:
1405 case compoundf_overflow:
1406 case compoundf_underflow:
1408 ERRNO_RANGE; break;
1410 case annuityl_by_zero:
1411 case annuityl_less_m1:
1412 case annuity_by_zero:
1413 case annuity_less_m1:
1414 case annuityf_by_zero:
1415 case annuityf_less_m1:
1416 case compoundl_by_zero:
1417 case compoundl_less_m1:
1418 case compound_by_zero:
1419 case compound_less_m1:
1420 case compoundf_by_zero:
1421 case compoundf_less_m1:
1423 ERRNO_DOMAIN; break;
1425 case sqrtl_negative:
1426 /* sqrtl(x < 0) */
1428 DOMAINL; NAMEL = (char *) "sqrtl";
1429 ifSVID
1431 RETVAL_ZEROL;
1432 NOT_MATHERRL
1434 WRITEL_SQRT;
1435 ERRNO_DOMAIN;
1438 else
1439 { /* NaN already computed */
1440 NOT_MATHERRL {ERRNO_DOMAIN;}
1442 *(long double *)retval = excl.retval;
1443 break;
1445 case sqrt_negative:
1446 /* sqrt(x < 0) */
1448 DOMAIND; NAMED = (char *) "sqrt";
1449 ifSVID
1452 RETVAL_ZEROD;
1453 NOT_MATHERRD
1455 WRITED_SQRT;
1456 ERRNO_DOMAIN;
1459 else
1460 { /* NaN already computed */
1461 NOT_MATHERRD {ERRNO_DOMAIN;}
1463 *(double *)retval = exc.retval;
1464 break;
1466 case sqrtf_negative:
1467 /* sqrtf(x < 0) */
1469 DOMAINF; NAMEF = (char *) "sqrtf";
1470 ifSVID
1472 RETVAL_ZEROF;
1473 NOT_MATHERRF
1475 WRITEF_SQRT;
1476 ERRNO_DOMAIN;
1479 else
1481 NOT_MATHERRF {ERRNO_DOMAIN;}
1483 *(float *)retval = excf.retval;
1484 break;
1486 case logl_zero:
1487 /* logl(0) */
1489 SINGL; NAMEL = (char *) "logl";
1490 ifSVID
1492 RETVAL_NEG_HUGEL;
1493 NOT_MATHERRL
1495 WRITEL_LOG_ZERO;
1496 ERRNO_DOMAIN;
1499 else
1501 RETVAL_NEG_HUGE_VALL;
1502 NOT_MATHERRL {ERRNO_DOMAIN;}
1504 *(long double *)retval = excl.retval;
1505 break;
1507 case log_zero:
1508 /* log(0) */
1510 SINGD; NAMED = (char *) "log";
1511 ifSVID
1513 RETVAL_NEG_HUGED;
1514 NOT_MATHERRD
1516 WRITED_LOG_ZERO;
1517 ERRNO_DOMAIN;
1520 else
1522 RETVAL_NEG_HUGE_VALD;
1523 NOT_MATHERRD {ERRNO_DOMAIN;}
1525 *(double *)retval = exc.retval;
1526 break;
1528 case logf_zero:
1529 /* logf(0) */
1531 SINGF; NAMEF = (char *) "logf";
1532 ifSVID
1534 RETVAL_NEG_HUGEF;
1535 NOT_MATHERRF
1537 WRITEF_LOG_ZERO;
1538 ERRNO_DOMAIN;
1541 else
1543 RETVAL_NEG_HUGE_VALF;
1544 NOT_MATHERRF {ERRNO_DOMAIN;}
1546 *(float *)retval = excf.retval;
1547 break;
1550 case logl_negative:
1551 /* logl(x < 0) */
1553 DOMAINL; NAMEL = (char *) "logl";
1554 ifSVID
1556 RETVAL_NEG_HUGEL;
1557 NOT_MATHERRL
1559 WRITEL_LOG_NEGATIVE;
1560 ERRNO_DOMAIN;
1563 else
1565 RETVAL_NEG_HUGE_VALL;
1566 NOT_MATHERRL {ERRNO_DOMAIN;}
1568 *(long double *)retval = excl.retval;
1569 break;
1571 case log_negative:
1572 /* log(x < 0) */
1574 DOMAIND; NAMED = (char *) "log";
1575 ifSVID
1577 RETVAL_NEG_HUGED;
1578 NOT_MATHERRD
1580 WRITED_LOG_NEGATIVE;
1581 ERRNO_DOMAIN;
1584 else
1586 RETVAL_NEG_HUGE_VALD;
1587 NOT_MATHERRD {ERRNO_DOMAIN;}
1589 *(double *)retval = exc.retval;
1590 break;
1592 case logf_negative:
1593 /* logf(x < 0) */
1595 DOMAINF; NAMEF = (char *) "logf";
1596 ifSVID
1598 RETVAL_NEG_HUGEF;
1599 NOT_MATHERRF
1601 WRITEF_LOG_NEGATIVE;
1602 ERRNO_DOMAIN;
1605 else
1607 RETVAL_NEG_HUGE_VALF;
1608 NOT_MATHERRF{ERRNO_DOMAIN;}
1610 *(float *)retval = excf.retval;
1611 break;
1613 case log1pl_zero:
1614 /* log1pl(-1) */
1616 SINGL; NAMEL = (char *) "log1pl";
1617 ifSVID
1619 RETVAL_NEG_HUGEL;
1620 NOT_MATHERRL
1622 WRITEL_LOG1P_ZERO;
1623 ERRNO_DOMAIN;
1626 else
1628 RETVAL_NEG_HUGE_VALL;
1629 NOT_MATHERRL {ERRNO_DOMAIN;}
1631 *(long double *)retval = excl.retval;
1632 break;
1634 case log1p_zero:
1635 /* log1p(-1) */
1637 SINGD; NAMED = (char *) "log1p";
1638 ifSVID
1640 RETVAL_NEG_HUGED;
1641 NOT_MATHERRD
1643 WRITED_LOG1P_ZERO;
1644 ERRNO_DOMAIN;
1647 else
1649 RETVAL_NEG_HUGE_VALD;
1650 NOT_MATHERRD {ERRNO_DOMAIN;}
1652 *(double *)retval = exc.retval;
1653 break;
1655 case log1pf_zero:
1656 /* log1pf(-1) */
1658 SINGF; NAMEF = (char *) "log1pf";
1659 ifSVID
1661 RETVAL_NEG_HUGEF;
1662 NOT_MATHERRF
1664 WRITEF_LOG1P_ZERO;
1665 ERRNO_DOMAIN;
1668 else
1670 RETVAL_NEG_HUGE_VALF;
1671 NOT_MATHERRF {ERRNO_DOMAIN;}
1673 *(float *)retval = excf.retval;
1674 break;
1676 case log1pl_negative:
1677 /* log1pl(x < -1) */
1679 DOMAINL; NAMEL = (char *) "log1pl";
1680 ifSVID
1682 RETVAL_NEG_HUGEL;
1683 NOT_MATHERRL
1685 WRITEL_LOG1P_NEGATIVE;
1686 ERRNO_DOMAIN;
1689 else
1691 RETVAL_NEG_HUGE_VALL;
1692 NOT_MATHERRL {ERRNO_DOMAIN;}
1694 *(long double *)retval = excl.retval;
1695 break;
1697 case log1p_negative:
1698 /* log1p(x < -1) */
1700 DOMAIND; NAMED = (char *) "log1p";
1701 ifSVID
1703 RETVAL_NEG_HUGED;
1704 NOT_MATHERRD
1706 WRITED_LOG1P_NEGATIVE;
1707 ERRNO_DOMAIN;
1710 else
1712 RETVAL_NEG_HUGE_VALD;
1713 NOT_MATHERRD {ERRNO_DOMAIN;}
1715 *(double *)retval = exc.retval;
1716 break;
1718 case log1pf_negative:
1719 /* log1pf(x < -1) */
1721 DOMAINF; NAMEF = (char *) "log1pf";
1722 ifSVID
1724 RETVAL_NEG_HUGEF;
1725 NOT_MATHERRF
1727 WRITEF_LOG1P_NEGATIVE;
1728 ERRNO_DOMAIN;
1731 else
1733 RETVAL_NEG_HUGE_VALF;
1734 NOT_MATHERRF {ERRNO_DOMAIN;}
1736 *(float *)retval = excf.retval;
1737 break;
1739 case log10l_zero:
1740 /* log10l(0) */
1742 SINGL; NAMEL = (char *) "log10l";
1743 ifSVID
1745 RETVAL_NEG_HUGEL;
1746 NOT_MATHERRL
1748 WRITEL_LOG10_ZERO;
1749 ERRNO_DOMAIN;
1752 else
1754 RETVAL_NEG_HUGE_VALL;
1755 NOT_MATHERRL {ERRNO_DOMAIN;}
1757 *(long double *)retval = excl.retval;
1758 break;
1760 case log10_zero:
1761 /* log10(0) */
1763 SINGD; NAMED = (char *) "log10";
1764 ifSVID
1766 RETVAL_NEG_HUGED;
1767 NOT_MATHERRD
1769 WRITED_LOG10_ZERO;
1770 ERRNO_DOMAIN;
1773 else
1775 RETVAL_NEG_HUGE_VALD;
1776 NOT_MATHERRD {ERRNO_DOMAIN;}
1778 *(double *)retval = exc.retval;
1779 break;
1781 case log10f_zero:
1782 /* log10f(0) */
1784 SINGF; NAMEF = (char *) "log10f";
1785 ifSVID
1787 RETVAL_NEG_HUGEF;
1788 NOT_MATHERRF
1790 WRITEF_LOG10_ZERO;
1791 ERRNO_DOMAIN;
1794 else
1796 RETVAL_NEG_HUGE_VALF;
1797 NOT_MATHERRF {ERRNO_DOMAIN;}
1799 *(float *)retval = excf.retval;
1800 break;
1802 case log10l_negative:
1803 /* log10l(x < 0) */
1805 DOMAINL; NAMEL = (char *) "log10l";
1806 ifSVID
1808 RETVAL_NEG_HUGEL;
1809 NOT_MATHERRL
1811 WRITEL_LOG10_NEGATIVE;
1812 ERRNO_DOMAIN;
1815 else
1817 RETVAL_NEG_HUGE_VALL;
1818 NOT_MATHERRL {ERRNO_DOMAIN;}
1820 *(long double *)retval = excl.retval;
1821 break;
1823 case log10_negative:
1824 /* log10(x < 0) */
1826 DOMAIND; NAMED = (char *) "log10";
1827 ifSVID
1829 RETVAL_NEG_HUGED;
1830 NOT_MATHERRD
1832 WRITED_LOG10_NEGATIVE;
1833 ERRNO_DOMAIN;
1836 else
1838 RETVAL_NEG_HUGE_VALD;
1839 NOT_MATHERRD {ERRNO_DOMAIN;}
1841 *(double *)retval = exc.retval;
1842 break;
1844 case log10f_negative:
1845 /* log10f(x < 0) */
1847 DOMAINF; NAMEF = (char *) "log10f";
1848 ifSVID
1850 RETVAL_NEG_HUGEF;
1851 NOT_MATHERRF
1853 WRITEF_LOG10_NEGATIVE;
1854 ERRNO_DOMAIN;
1857 else
1859 RETVAL_NEG_HUGE_VALF;
1860 NOT_MATHERRF {ERRNO_DOMAIN;}
1862 *(float *)retval = excf.retval;
1863 break;
1865 case log2_zero:
1866 /* log2(0) */
1868 SINGD; NAMED = (char *) "log2";
1869 ifSVID
1871 RETVAL_NEG_HUGED;
1872 NOT_MATHERRD
1874 WRITED_LOG2_ZERO;
1875 ERRNO_DOMAIN;
1878 else
1880 RETVAL_NEG_HUGE_VALD;
1881 NOT_MATHERRD {ERRNO_DOMAIN;}
1883 *(double *)retval = exc.retval;
1884 break;
1886 case log2f_zero:
1887 /* log2f(0) */
1889 SINGF; NAMEF = (char *) "log2f";
1890 ifSVID
1892 RETVAL_NEG_HUGEF;
1893 NOT_MATHERRF
1895 WRITEF_LOG2_ZERO;
1896 ERRNO_DOMAIN;
1899 else
1901 RETVAL_NEG_HUGE_VALF;
1902 NOT_MATHERRF {ERRNO_DOMAIN;}
1904 *(float *)retval = excf.retval;
1905 break;
1907 case log2l_negative:
1908 /* log2l(x < 0) */
1910 DOMAINL; NAMEL = (char *) "log2l";
1911 ifSVID
1913 RETVAL_NEG_HUGEL;
1914 NOT_MATHERRL
1916 WRITEL_LOG2_NEGATIVE;
1917 ERRNO_DOMAIN;
1920 else
1922 RETVAL_NEG_HUGE_VALL;
1923 NOT_MATHERRL {ERRNO_DOMAIN;}
1925 *(long double *)retval = excl.retval;
1926 break;
1928 case log2_negative:
1929 /* log2(x < 0) */
1931 DOMAIND; NAMED = (char *) "log2";
1932 ifSVID
1934 RETVAL_NEG_HUGED;
1935 NOT_MATHERRD
1937 WRITED_LOG2_NEGATIVE;
1938 ERRNO_DOMAIN;
1941 else
1943 RETVAL_NEG_HUGE_VALD;
1944 NOT_MATHERRD {ERRNO_DOMAIN;}
1946 *(double *)retval = exc.retval;
1947 break;
1949 case log2f_negative:
1950 /* log2f(x < 0) */
1952 DOMAINF; NAMEF = (char *) "log2f";
1953 ifSVID
1955 RETVAL_NEG_HUGEF;
1956 NOT_MATHERRF
1958 WRITEF_LOG2_NEGATIVE;
1959 ERRNO_DOMAIN;
1962 else
1964 RETVAL_NEG_HUGE_VALF;
1965 NOT_MATHERRF {ERRNO_DOMAIN;}
1967 *(float *)retval = excf.retval;
1968 break;
1970 case expl_overflow:
1971 /* expl overflow */
1973 OVERFLOWL; NAMEL = (char *) "expl";
1974 ifSVID
1976 RETVAL_HUGEL;
1978 else
1980 RETVAL_HUGE_VALL;
1982 NOT_MATHERRL {ERRNO_RANGE;}
1983 *(long double *)retval = excl.retval;
1984 break;
1986 case exp_overflow:
1987 /* exp overflow */
1989 OVERFLOWD; NAMED = (char *) "exp";
1990 ifSVID
1992 RETVAL_HUGED;
1994 else
1996 RETVAL_HUGE_VALD;
1998 NOT_MATHERRD {ERRNO_RANGE;}
1999 *(double *)retval = exc.retval;
2000 break;
2002 case expf_overflow:
2003 /* expf overflow */
2005 OVERFLOWF; NAMEF = (char *) "expf";
2006 ifSVID
2008 RETVAL_HUGEF;
2010 else
2012 RETVAL_HUGE_VALF;
2014 NOT_MATHERRF {ERRNO_RANGE;}
2015 *(float *)retval = excf.retval;
2016 break;
2018 case expl_underflow:
2019 /* expl underflow */
2021 UNDERFLOWL; NAMEL = (char *) "expl"; RETVAL_ZEROL;
2022 NOT_MATHERRL {ERRNO_RANGE;}
2023 *(long double *)retval = excl.retval;
2024 break;
2026 case exp_underflow:
2027 /* exp underflow */
2029 UNDERFLOWD; NAMED = (char *) "exp"; RETVAL_ZEROD;
2030 NOT_MATHERRD {ERRNO_RANGE;}
2031 *(double *)retval = exc.retval;
2032 break;
2034 case expf_underflow:
2035 /* expf underflow */
2037 UNDERFLOWF; NAMEF = (char *) "expf"; RETVAL_ZEROF;
2038 NOT_MATHERRF {ERRNO_RANGE;}
2039 *(float *)retval = excf.retval;
2040 break;
2042 case powl_zero_to_zero:
2043 /* powl 0**0 */
2045 DOMAINL; NAMEL = (char *) "powl";
2046 ifSVID
2048 RETVAL_ZEROL;
2049 NOT_MATHERRL
2051 WRITEL_POW_ZERO_TO_ZERO;
2052 ERRNO_DOMAIN;
2054 *(long double *)retval = excl.retval;
2056 else RETVAL_ONEL;
2057 break;
2059 case pow_zero_to_zero:
2060 /* pow 0**0 */
2062 DOMAIND; NAMED = (char *) "pow";
2063 ifSVID
2065 RETVAL_ZEROD;
2066 NOT_MATHERRD
2068 WRITED_POW_ZERO_TO_ZERO;
2069 ERRNO_DOMAIN;
2071 *(double *)retval = exc.retval;
2073 else RETVAL_ONED;
2074 break;
2076 case powf_zero_to_zero:
2077 /* powf 0**0 */
2079 DOMAINF; NAMEF = (char *) "powf";
2080 ifSVID
2082 RETVAL_ZEROF;
2083 NOT_MATHERRF
2085 WRITEF_POW_ZERO_TO_ZERO;
2086 ERRNO_DOMAIN;
2088 *(float *)retval = excf.retval;
2090 else RETVAL_ONEF;
2091 break;
2093 case powl_overflow:
2094 /* powl(x,y) overflow */
2096 OVERFLOWL; NAMEL = (char *) "powl";
2097 ifSVID
2099 if (INPUT_XL < 0) RETVAL_NEG_HUGEL;
2100 else RETVAL_HUGEL;
2102 else
2104 if (INPUT_XL < 0) RETVAL_NEG_HUGE_VALL;
2105 else RETVAL_HUGE_VALL;
2107 NOT_MATHERRL {ERRNO_RANGE;}
2108 *(long double *)retval = excl.retval;
2109 break;
2111 case pow_overflow:
2112 /* pow(x,y) overflow */
2114 OVERFLOWD; NAMED = (char *) "pow";
2115 ifSVID
2117 if (INPUT_XD < 0) RETVAL_NEG_HUGED;
2118 else RETVAL_HUGED;
2120 else
2122 if (INPUT_XD < 0) RETVAL_NEG_HUGE_VALD;
2123 else RETVAL_HUGE_VALD;
2125 NOT_MATHERRD {ERRNO_RANGE;}
2126 *(double *)retval = exc.retval;
2127 break;
2129 case powf_overflow:
2130 /* powf(x,y) overflow */
2132 OVERFLOWF; NAMEF = (char *) "powf";
2133 ifSVID
2135 if (INPUT_XF < 0) RETVAL_NEG_HUGEF;
2136 else RETVAL_HUGEF;
2138 else
2140 if (INPUT_XF < 0) RETVAL_NEG_HUGE_VALF;
2141 else RETVAL_HUGE_VALF;
2143 NOT_MATHERRF {ERRNO_RANGE;}
2144 *(float *)retval = excf.retval;
2145 break;
2147 case powl_underflow:
2148 /* powl(x,y) underflow */
2150 UNDERFLOWL; NAMEL = (char *) "powl"; RETVAL_ZEROL;
2151 NOT_MATHERRL {ERRNO_RANGE;}
2152 *(long double *)retval = excl.retval;
2153 break;
2155 case pow_underflow:
2156 /* pow(x,y) underflow */
2158 UNDERFLOWD; NAMED = (char *) "pow"; RETVAL_ZEROD;
2159 NOT_MATHERRD {ERRNO_RANGE;}
2160 *(double *)retval = exc.retval;
2161 break;
2163 case powf_underflow:
2164 /* powf(x,y) underflow */
2166 UNDERFLOWF; NAMEF = (char *) "powf"; RETVAL_ZEROF;
2167 NOT_MATHERRF {ERRNO_RANGE;}
2168 *(float *)retval = excf.retval;
2169 break;
2171 case powl_zero_to_negative:
2172 /* 0 to neg */
2174 DOMAINL; NAMEL = (char *) "powl";
2175 ifSVID
2177 RETVAL_ZEROL;
2178 NOT_MATHERRL
2180 WRITEL_POW_ZERO_TO_NEGATIVE;
2181 ERRNO_DOMAIN;
2184 else
2186 RETVAL_NEG_HUGE_VALL;
2187 NOT_MATHERRL {ERRNO_DOMAIN;}
2189 *(long double *)retval = excl.retval;
2190 break;
2192 case pow_zero_to_negative:
2193 /* 0**neg */
2195 DOMAIND; NAMED = (char *) "pow";
2196 ifSVID
2198 RETVAL_ZEROD;
2199 NOT_MATHERRD
2201 WRITED_POW_ZERO_TO_NEGATIVE;
2202 ERRNO_DOMAIN;
2205 else
2207 RETVAL_NEG_HUGE_VALD;
2208 NOT_MATHERRD {ERRNO_DOMAIN;}
2210 *(double *)retval = exc.retval;
2211 break;
2213 case powf_zero_to_negative:
2214 /* 0**neg */
2216 DOMAINF; NAMEF = (char *) "powf";
2217 RETVAL_NEG_HUGE_VALF;
2218 ifSVID
2220 RETVAL_ZEROF;
2221 NOT_MATHERRF
2223 WRITEF_POW_ZERO_TO_NEGATIVE;
2224 ERRNO_DOMAIN;
2227 else
2229 RETVAL_NEG_HUGE_VALF;
2230 NOT_MATHERRF {ERRNO_DOMAIN;}
2232 *(float *)retval = excf.retval;
2233 break;
2235 case powl_neg_to_non_integer:
2236 /* neg**non_integral */
2238 DOMAINL; NAMEL = (char *) "powl";
2239 ifSVID
2241 RETVAL_ZEROF;
2242 NOT_MATHERRL
2244 WRITEL_POW_NEG_TO_NON_INTEGER;
2245 ERRNO_DOMAIN;
2248 else
2250 NOT_MATHERRL {ERRNO_DOMAIN;}
2252 *(long double *)retval = excl.retval;
2253 break;
2255 case pow_neg_to_non_integer:
2256 /* neg**non_integral */
2258 DOMAIND; NAMED = (char *) "pow";
2259 ifSVID
2261 RETVAL_ZEROD;
2262 NOT_MATHERRD
2264 WRITED_POW_NEG_TO_NON_INTEGER;
2265 ERRNO_DOMAIN;
2268 else
2270 NOT_MATHERRD {ERRNO_DOMAIN;}
2272 *(double *)retval = exc.retval;
2273 break;
2275 case powf_neg_to_non_integer:
2276 /* neg**non-integral */
2278 DOMAINF; NAMEF = (char *) "powf";
2279 ifSVID
2281 RETVAL_ZEROF;
2282 NOT_MATHERRF
2284 WRITEF_POW_NEG_TO_NON_INTEGER;
2285 ERRNO_DOMAIN;
2288 else
2290 NOT_MATHERRF {ERRNO_DOMAIN;}
2292 *(float *)retval = excf.retval;
2293 break;
2295 case powl_nan_to_zero:
2296 /* pow(NaN,0.0) */
2297 /* Special Error */
2299 DOMAINL; NAMEL = (char *) "powl";
2300 *(long double *)retval = *(long double *)arg1;
2301 NOT_MATHERRL {ERRNO_DOMAIN;}
2302 *(long double *)retval = excl.retval;
2303 break;
2305 case pow_nan_to_zero:
2306 /* pow(NaN,0.0) */
2307 /* Special Error */
2309 DOMAIND; NAMED = (char *) "pow";
2310 *(double *)retval = *(double *)arg1;
2311 NOT_MATHERRD {ERRNO_DOMAIN;}
2312 *(double *)retval = exc.retval;
2313 break;
2315 case powf_nan_to_zero:
2316 /* powf(NaN,0.0) */
2317 /* Special Error */
2319 DOMAINF; NAMEF = (char *) "powf";
2320 *(float *)retval = *(float *)arg1;
2321 NOT_MATHERRF {ERRNO_DOMAIN;}
2322 *(float *)retval = excf.retval;
2323 break;
2325 case atan2l_zero:
2326 /* atan2l(0.0,0.0) */
2328 DOMAINL; NAMEL = (char *) "atan2l";
2329 RETVAL_ZEROL;
2330 NOT_MATHERRL
2332 ifSVID
2334 WRITEL_ATAN2_ZERO_BY_ZERO;
2336 ERRNO_DOMAIN;
2338 *(long double *)retval = excl.retval;
2339 break;
2341 case atan2_zero:
2342 /* atan2(0.0,0.0) */
2344 DOMAIND; NAMED = (char *) "atan2";
2345 RETVAL_ZEROD;
2346 NOT_MATHERRD
2348 ifSVID
2350 WRITED_ATAN2_ZERO_BY_ZERO;
2352 ERRNO_DOMAIN;
2354 *(double *)retval = exc.retval;
2355 break;
2357 case atan2f_zero:
2358 /* atan2f(0.0,0.0) */
2360 DOMAINF; NAMEF = (char *) "atan2f";
2361 RETVAL_ZEROF;
2362 NOT_MATHERRF
2363 ifSVID
2365 WRITEF_ATAN2_ZERO_BY_ZERO;
2367 ERRNO_DOMAIN;
2368 *(float *)retval = excf.retval;
2369 break;
2371 case atan2dl_zero:
2372 /* atan2dl(0.0,0.0) */
2374 DOMAINL; NAMEL = (char *) "atan2dl";
2375 RETVAL_ZEROL;
2376 NOT_MATHERRL
2378 ifSVID
2380 WRITEL_ATAN2D_ZERO_BY_ZERO;
2382 ERRNO_DOMAIN;
2384 *(long double *)retval = excl.retval;
2385 break;
2387 case atan2d_zero:
2388 /* atan2d(0.0,0.0) */
2390 DOMAIND; NAMED = (char *) "atan2d";
2391 RETVAL_ZEROD;
2392 NOT_MATHERRD
2394 ifSVID
2396 WRITED_ATAN2D_ZERO_BY_ZERO;
2398 ERRNO_DOMAIN;
2400 *(double *)retval = exc.retval;
2401 break;
2403 case atan2df_zero:
2404 /* atan2df(0.0,0.0) */
2406 DOMAINF; NAMEF = (char *) "atan2df";
2407 RETVAL_ZEROF;
2408 NOT_MATHERRF
2409 ifSVID
2411 WRITEF_ATAN2D_ZERO_BY_ZERO;
2413 ERRNO_DOMAIN;
2414 *(float *)retval = excf.retval;
2415 break;
2417 case expm1_overflow:
2418 /* expm1(finite) overflow */
2419 /* Overflow is the only documented */
2420 /* special value. */
2422 ERRNO_RANGE;
2423 break;
2425 case expm1f_overflow:
2426 /* expm1f(finite) overflow */
2428 ERRNO_RANGE;
2429 break;
2431 case expm1_underflow:
2432 /* expm1(finite) underflow */
2433 /* Underflow is not documented */
2434 /* special value. */
2436 ERRNO_RANGE;
2437 break;
2439 case expm1f_underflow:
2440 /* expm1f(finite) underflow */
2442 ERRNO_RANGE;
2443 break;
2445 case scalbl_underflow:
2446 /* scalbl underflow */
2448 UNDERFLOWL; NAMEL = (char *) "scalbl";
2449 if (INPUT_XL < 0.0L) RETVAL_NEG_ZEROL;
2450 else RETVAL_ZEROL;
2451 NOT_MATHERRL {ERRNO_RANGE;}
2452 *(long double *)retval = excl.retval;
2453 break;
2455 case scalb_underflow:
2456 /* scalb underflow */
2458 UNDERFLOWD; NAMED = (char *) "scalb";
2459 if (INPUT_XD < 0.0) RETVAL_NEG_ZEROD;
2460 else RETVAL_ZEROD;
2461 NOT_MATHERRD {ERRNO_RANGE;}
2462 *(double *)retval = exc.retval;
2463 break;
2465 case scalbf_underflow:
2466 /* scalbf underflow */
2468 UNDERFLOWF; NAMEF = (char *) "scalbf";
2469 if (INPUT_XF < 0.0) RETVAL_NEG_ZEROF;
2470 else RETVAL_ZEROF;
2471 NOT_MATHERRF {ERRNO_RANGE;}
2472 *(float *)retval = excf.retval;
2473 break;
2475 case scalbl_overflow:
2476 /* scalbl overflow */
2478 OVERFLOWL; NAMEL = (char *) "scalbl";
2479 if (INPUT_XL < 0) RETVAL_NEG_HUGE_VALL;
2480 else RETVAL_HUGE_VALL;
2481 NOT_MATHERRL {ERRNO_RANGE;}
2482 *(long double *)retval = excl.retval;
2483 break;
2485 case scalb_overflow:
2486 /* scalb overflow */
2488 OVERFLOWD; NAMED = (char *) "scalb";
2489 if (INPUT_XD < 0) RETVAL_NEG_HUGE_VALD;
2490 else RETVAL_HUGE_VALD;
2491 NOT_MATHERRD {ERRNO_RANGE;}
2492 *(double *)retval = exc.retval;
2493 break;
2495 case scalbf_overflow:
2496 /* scalbf overflow */
2498 OVERFLOWF; NAMEF = (char *) "scalbf";
2499 if (INPUT_XF < 0) RETVAL_NEG_HUGE_VALF;
2500 else RETVAL_HUGE_VALF;
2501 NOT_MATHERRF {ERRNO_RANGE;}
2502 *(float *)retval = excf.retval;
2503 break;
2505 case hypotl_overflow:
2506 /* hypotl overflow */
2508 OVERFLOWL; NAMEL = (char *) "hypotl";
2509 ifSVID
2511 RETVAL_HUGEL;
2513 else
2515 RETVAL_HUGE_VALL;
2517 NOT_MATHERRL {ERRNO_RANGE;}
2518 *(long double *)retval = excl.retval;
2519 break;
2521 case hypot_overflow:
2522 /* hypot overflow */
2524 OVERFLOWD; NAMED = (char *) "hypot";
2525 ifSVID
2527 RETVAL_HUGED;
2529 else
2531 RETVAL_HUGE_VALD;
2533 NOT_MATHERRD {ERRNO_RANGE;}
2534 *(double *)retval = exc.retval;
2535 break;
2537 case hypotf_overflow:
2538 /* hypotf overflow */
2540 OVERFLOWF; NAMEF = (char *) "hypotf";
2541 ifSVID
2543 RETVAL_HUGEF;
2545 else
2547 RETVAL_HUGE_VALF;
2549 NOT_MATHERRF {ERRNO_RANGE;}
2550 *(float *)retval = excf.retval;
2551 break;
2553 case acosl_gt_one:
2554 /* acosl(x > 1) */
2556 DOMAINL; NAMEL = (char *) "acosl";
2557 RETVAL_ZEROL;
2558 ifSVID
2560 NOT_MATHERRL
2562 WRITEL_ACOS;
2563 ERRNO_DOMAIN;
2566 else
2568 NOT_MATHERRL {ERRNO_DOMAIN;}
2570 *(long double *)retval = excl.retval;
2571 break;
2573 case acos_gt_one:
2574 /* acos(x > 1) */
2576 DOMAIND; NAMED = (char *) "acos";
2577 RETVAL_ZEROD;
2578 ifSVID
2580 NOT_MATHERRD
2582 WRITED_ACOS;
2583 ERRNO_DOMAIN;
2586 else
2588 NOT_MATHERRD {ERRNO_DOMAIN;}
2590 *(double *)retval = exc.retval;
2591 break;
2593 case acosf_gt_one:
2594 /* acosf(x > 1) */
2596 DOMAINF; NAMEF = (char *) "acosf";
2597 RETVAL_ZEROF;
2598 ifSVID
2600 NOT_MATHERRF
2602 WRITEF_ACOS;
2603 ERRNO_DOMAIN;
2606 else
2608 NOT_MATHERRF {ERRNO_DOMAIN;}
2610 *(float *)retval = excf.retval;
2611 break;
2613 case asinl_gt_one:
2614 /* asinl(x > 1) */
2616 DOMAINL; NAMEL = (char *) "asinl";
2617 RETVAL_ZEROL;
2618 ifSVID
2620 NOT_MATHERRL
2622 WRITEL_ASIN;
2623 ERRNO_DOMAIN;
2626 else
2628 NOT_MATHERRL {ERRNO_DOMAIN;}
2630 *(long double *)retval = excl.retval;
2631 break;
2633 case asin_gt_one:
2634 /* asin(x > 1) */
2636 DOMAIND; NAMED = (char *) "asin";
2637 RETVAL_ZEROD;
2638 ifSVID
2640 NOT_MATHERRD
2642 WRITED_ASIN;
2643 ERRNO_DOMAIN;
2646 else
2648 NOT_MATHERRD {ERRNO_DOMAIN;}
2650 *(double *)retval = exc.retval;
2651 break;
2653 case asinf_gt_one:
2654 /* asinf(x > 1) */
2656 DOMAINF; NAMEF = (char *) "asinf";
2657 RETVAL_ZEROF;
2658 ifSVID
2660 NOT_MATHERRF
2662 WRITEF_ASIN;
2663 ERRNO_DOMAIN;
2666 else
2668 NOT_MATHERRF {ERRNO_DOMAIN;}
2670 *(float *)retval = excf.retval;
2671 break;
2673 case acosdl_gt_one:
2674 /* acosdl(x > 1) */
2676 DOMAINL; NAMEL = (char *) "acosdl";
2677 RETVAL_ZEROL;
2678 ifSVID
2680 NOT_MATHERRL
2682 WRITEL_ACOSD;
2683 ERRNO_DOMAIN;
2686 else
2688 NOT_MATHERRL {ERRNO_DOMAIN;}
2690 *(long double *)retval = excl.retval;
2691 break;
2693 case acosd_gt_one:
2694 /* acosd(x > 1) */
2696 DOMAIND; NAMED = (char *) "acosd";
2697 RETVAL_ZEROD;
2698 ifSVID
2700 NOT_MATHERRD
2702 WRITED_ACOSD;
2703 ERRNO_DOMAIN;
2706 else
2708 NOT_MATHERRD {ERRNO_DOMAIN;}
2710 *(double *)retval = exc.retval;
2711 break;
2713 case acosdf_gt_one:
2714 /* acosdf(x > 1) */
2716 DOMAINF; NAMEF = (char *) "acosdf";
2717 RETVAL_ZEROF;
2718 ifSVID
2720 NOT_MATHERRF
2722 WRITEF_ACOSD;
2723 ERRNO_DOMAIN;
2726 else
2728 NOT_MATHERRF {ERRNO_DOMAIN;}
2730 *(float *)retval = excf.retval;
2731 break;
2733 case asindl_gt_one:
2734 /* asindl(x > 1) */
2736 DOMAINL; NAMEL = (char *) "asindl";
2737 RETVAL_ZEROL;
2738 ifSVID
2740 NOT_MATHERRL
2742 WRITEL_ASIND;
2743 ERRNO_DOMAIN;
2746 else
2748 NOT_MATHERRL {ERRNO_DOMAIN;}
2750 *(long double *)retval = excl.retval;
2751 break;
2753 case asind_gt_one:
2754 /* asind(x > 1) */
2756 DOMAIND; NAMED = (char *) "asind";
2757 RETVAL_ZEROD;
2758 ifSVID
2760 NOT_MATHERRD
2762 WRITED_ASIND;
2763 ERRNO_DOMAIN;
2766 else
2768 NOT_MATHERRD {ERRNO_DOMAIN;}
2770 *(double *)retval = exc.retval;
2771 break;
2773 case asindf_gt_one:
2774 /* asindf(x > 1) */
2776 DOMAINF; NAMEF = (char *) "asindf";
2777 RETVAL_ZEROF;
2778 ifSVID
2780 NOT_MATHERRF
2782 WRITEF_ASIND;
2783 ERRNO_DOMAIN;
2786 else
2788 NOT_MATHERRF {ERRNO_DOMAIN;}
2790 *(float *)retval = excf.retval;
2791 break;
2793 case coshl_overflow:
2794 /* coshl overflow */
2796 OVERFLOWL; NAMEL = (char *) "coshl";
2797 ifSVID
2799 RETVAL_HUGEL;
2801 else
2803 RETVAL_HUGE_VALL;
2805 NOT_MATHERRL {ERRNO_RANGE;}
2806 *(long double *)retval = excl.retval;
2807 break;
2809 case cosh_overflow:
2810 /* cosh overflow */
2812 OVERFLOWD; NAMED = (char *) "cosh";
2813 ifSVID
2815 RETVAL_HUGED;
2817 else
2819 RETVAL_HUGE_VALD;
2821 NOT_MATHERRD {ERRNO_RANGE;}
2822 *(double *)retval = exc.retval;
2823 break;
2825 case coshf_overflow:
2826 /* coshf overflow */
2828 OVERFLOWF; NAMEF = (char *) "coshf";
2829 ifSVID
2831 RETVAL_HUGEF;
2833 else
2835 RETVAL_HUGE_VALF;
2837 NOT_MATHERRF {ERRNO_RANGE;}
2838 *(float *)retval = excf.retval;
2839 break;
2841 case sinhl_overflow:
2842 /* sinhl overflow */
2844 OVERFLOWL; NAMEL = (char *) "sinhl";
2845 ifSVID
2847 if (INPUT_XL > 0.0) RETVAL_HUGEL;
2848 else RETVAL_NEG_HUGEL;
2850 else
2852 if (INPUT_XL > 0.0) RETVAL_HUGE_VALL;
2853 else RETVAL_NEG_HUGE_VALL;
2855 NOT_MATHERRL {ERRNO_RANGE;}
2856 *(long double *)retval = excl.retval;
2857 break;
2859 case sinh_overflow:
2860 /* sinh overflow */
2862 OVERFLOWD; NAMED = (char *) "sinh";
2863 ifSVID
2865 if (INPUT_XD > 0.0) RETVAL_HUGED;
2866 else RETVAL_NEG_HUGED;
2868 else
2870 if (INPUT_XD > 0.0) RETVAL_HUGE_VALD;
2871 else RETVAL_NEG_HUGE_VALD;
2873 NOT_MATHERRD {ERRNO_RANGE;}
2874 *(double *)retval = exc.retval;
2875 break;
2877 case sinhf_overflow:
2878 /* sinhf overflow */
2880 OVERFLOWF; NAMEF = (char *) "sinhf";
2881 ifSVID
2883 if( INPUT_XF > 0.0) RETVAL_HUGEF;
2884 else RETVAL_NEG_HUGEF;
2886 else
2888 if (INPUT_XF > 0.0) RETVAL_HUGE_VALF;
2889 else RETVAL_NEG_HUGE_VALF;
2891 NOT_MATHERRF {ERRNO_RANGE;}
2892 *(float *)retval = excf.retval;
2893 break;
2895 case acoshl_lt_one:
2896 /* acoshl(x < 1) */
2898 DOMAINL; NAMEL = (char *) "acoshl";
2899 ifSVID
2901 NOT_MATHERRL
2903 WRITEL_ACOSH;
2904 ERRNO_DOMAIN;
2907 else
2909 NOT_MATHERRL {ERRNO_DOMAIN;}
2911 *(long double *)retval = excl.retval;
2912 break;
2914 case acosh_lt_one:
2915 /* acosh(x < 1) */
2917 DOMAIND; NAMED = (char *) "acosh";
2918 ifSVID
2920 NOT_MATHERRD
2922 WRITEL_ACOSH;
2923 ERRNO_DOMAIN;
2926 else
2928 NOT_MATHERRD {ERRNO_DOMAIN;}
2930 *(double *)retval = exc.retval;
2931 break;
2933 case acoshf_lt_one:
2934 /* acoshf(x < 1) */
2936 DOMAINF; NAMEF = (char *) "acoshf";
2937 ifSVID
2939 NOT_MATHERRF
2941 WRITEF_ACOSH;
2942 ERRNO_DOMAIN;
2945 else
2947 NOT_MATHERRF {ERRNO_DOMAIN;}
2949 *(float *)retval = excf.retval;
2950 ERRNO_DOMAIN; break;
2952 case atanhl_gt_one:
2953 /* atanhl(|x| > 1) */
2955 DOMAINL; NAMEL = (char *) "atanhl";
2956 ifSVID
2958 NOT_MATHERRL
2960 WRITEL_ATANH_GT_ONE;
2961 ERRNO_DOMAIN;
2964 else
2966 NOT_MATHERRL {ERRNO_DOMAIN;}
2968 break;
2970 case atanh_gt_one:
2971 /* atanh(|x| > 1) */
2973 DOMAIND; NAMED = (char *) "atanh";
2974 ifSVID
2976 NOT_MATHERRD
2978 WRITED_ATANH_GT_ONE;
2979 ERRNO_DOMAIN;
2982 else
2984 NOT_MATHERRD {ERRNO_DOMAIN;}
2986 break;
2988 case atanhf_gt_one:
2989 /* atanhf(|x| > 1) */
2991 DOMAINF; NAMEF = (char *) "atanhf";
2992 ifSVID
2994 NOT_MATHERRF
2996 WRITEF_ATANH_GT_ONE;
2997 ERRNO_DOMAIN;
3000 else
3002 NOT_MATHERRF {ERRNO_DOMAIN;}
3004 break;
3006 case atanhl_eq_one:
3007 /* atanhl(|x| == 1) */
3009 SINGL; NAMEL = (char *) "atanhl";
3010 ifSVID
3012 NOT_MATHERRL
3014 WRITEL_ATANH_EQ_ONE;
3015 ERRNO_DOMAIN;
3018 else
3020 NOT_MATHERRL {ERRNO_DOMAIN;}
3022 break;
3024 case atanh_eq_one:
3025 /* atanh(|x| == 1) */
3027 SINGD; NAMED = (char *) "atanh";
3028 ifSVID
3030 NOT_MATHERRD
3032 WRITED_ATANH_EQ_ONE;
3033 ERRNO_DOMAIN;
3036 else
3038 NOT_MATHERRD {ERRNO_DOMAIN;}
3040 break;
3042 case atanhf_eq_one:
3043 /* atanhf(|x| == 1) */
3045 SINGF; NAMEF = (char *) "atanhf";
3046 ifSVID
3048 NOT_MATHERRF
3050 WRITEF_ATANH_EQ_ONE;
3051 ERRNO_DOMAIN;
3054 else
3056 NOT_MATHERRF {ERRNO_DOMAIN;}
3058 break;
3060 case gammal_overflow:
3061 /* gammal overflow */
3063 OVERFLOWL; NAMEL = (char *) "gammal";
3064 ifSVID
3066 RETVAL_HUGEL;
3068 else
3070 RETVAL_HUGE_VALL;
3072 NOT_MATHERRL{ERRNO_RANGE;}
3073 *(long double*)retval = excl.retval;
3074 break;
3076 case gamma_overflow:
3077 /* gamma overflow */
3079 OVERFLOWD; NAMED = (char *) "gamma";
3080 ifSVID
3082 RETVAL_HUGED;
3084 else
3086 RETVAL_HUGE_VALD;
3088 NOT_MATHERRD{ERRNO_RANGE;}
3089 *(double*)retval = exc.retval;
3090 break;
3092 case gammaf_overflow:
3093 /* gammaf overflow */
3095 OVERFLOWF; NAMEF = (char *) "gammaf";
3096 ifSVID
3098 RETVAL_HUGEF;
3100 else
3102 RETVAL_HUGE_VALF;
3104 NOT_MATHERRF{ERRNO_RANGE;}
3105 *(float*)retval = excf.retval;
3106 break;
3108 case gammal_negative:
3109 /* gammal -int or 0 */
3111 SINGL; NAMEL = (char *) "gammal";
3112 ifSVID
3114 RETVAL_HUGEL;
3115 NOT_MATHERRL
3117 WRITEL_GAMMA_NEGATIVE;
3118 ERRNO_DOMAIN;
3121 else
3123 RETVAL_HUGE_VALL;
3124 NOT_MATHERRL{ERRNO_DOMAIN;}
3126 *(long double*)retval = excl.retval;
3127 break;
3129 case gamma_negative:
3130 /* gamma -int or 0 */
3132 SINGD; NAMED = (char *) "gamma";
3133 ifSVID
3135 RETVAL_HUGED;
3136 NOT_MATHERRD
3138 WRITED_GAMMA_NEGATIVE;
3139 ERRNO_DOMAIN;
3142 else
3144 RETVAL_HUGE_VALD;
3145 NOT_MATHERRD{ERRNO_DOMAIN;}
3147 *(double*)retval = exc.retval;
3148 break;
3150 case gammaf_negative:
3151 /* gammaf -int or 0 */
3153 SINGF; NAMEF = (char *) "gammaf";
3154 ifSVID
3156 RETVAL_HUGEF;
3157 NOT_MATHERRF
3159 WRITEF_GAMMA_NEGATIVE;
3160 ERRNO_DOMAIN;
3163 else
3165 RETVAL_HUGE_VALF;
3166 NOT_MATHERRF{ERRNO_DOMAIN;}
3168 *(float*)retval = excf.retval;
3169 break;
3171 case lgammal_overflow:
3172 /* lgammal overflow */
3174 OVERFLOWL; NAMEL = (char *) "lgammal";
3175 ifSVID
3177 RETVAL_HUGEL;
3179 else
3181 RETVAL_HUGE_VALL;
3183 NOT_MATHERRL{ERRNO_RANGE;}
3184 *(long double*)retval = excl.retval;
3185 break;
3187 case lgamma_overflow:
3188 /* lgamma overflow */
3190 OVERFLOWD; NAMED = (char *) "lgamma";
3191 ifSVID
3193 RETVAL_HUGED;
3195 else
3197 RETVAL_HUGE_VALD;
3199 NOT_MATHERRD{ERRNO_RANGE;}
3200 *(double*)retval = exc.retval;
3201 break;
3203 case lgammaf_overflow:
3204 /* lgammaf overflow */
3206 OVERFLOWF; NAMEF = (char *) "lgammaf";
3207 ifSVID
3209 RETVAL_HUGEF;
3211 else
3213 RETVAL_HUGE_VALF;
3215 NOT_MATHERRF{ERRNO_RANGE;}
3216 *(float*)retval = excf.retval;
3217 break;
3219 case lgammal_negative:
3220 /* lgammal -int or 0 */
3222 SINGL; NAMEL = (char *) "lgammal";
3223 ifSVID
3225 RETVAL_HUGEL;
3226 NOT_MATHERRL
3228 WRITEL_GAMMA_NEGATIVE;
3229 ERRNO_DOMAIN;
3232 else
3234 RETVAL_HUGE_VALL;
3235 NOT_MATHERRL{ERRNO_DOMAIN;}
3237 *(long double*)retval = excl.retval;
3238 break;
3240 case lgamma_negative:
3241 /* lgamma -int or 0 */
3243 SINGD; NAMED = (char *) "lgamma";
3244 ifSVID
3246 RETVAL_HUGED;
3247 NOT_MATHERRD
3249 WRITED_LGAMMA_NEGATIVE;
3250 ERRNO_DOMAIN;
3253 else
3255 RETVAL_HUGE_VALD;
3256 NOT_MATHERRD{ERRNO_DOMAIN;}
3258 *(double*)retval = exc.retval;
3259 break;
3261 case lgammaf_negative:
3262 /* lgammaf -int or 0 */
3264 SINGF; NAMEF = (char *) "lgammaf";
3265 ifSVID
3267 RETVAL_HUGEF;
3268 NOT_MATHERRF
3270 WRITEF_LGAMMA_NEGATIVE;
3271 ERRNO_DOMAIN;
3274 else
3276 RETVAL_HUGE_VALF;
3277 NOT_MATHERRF{ERRNO_DOMAIN;}
3279 *(float*)retval = excf.retval;
3280 break;
3282 case tgammal_overflow:
3283 /* tgammal overflow */
3285 OVERFLOWL; NAMEL = (char *) "tgammal";
3286 ifSVID
3288 RETVAL_HUGEL;
3290 else
3292 RETVAL_HUGE_VALL;
3294 NOT_MATHERRL{ERRNO_RANGE;}
3295 *(long double*)retval = excl.retval;
3296 break;
3298 case tgamma_overflow:
3299 /* tgamma overflow */
3301 OVERFLOWD; NAMED = (char *) "tgamma";
3302 ifSVID
3304 RETVAL_HUGED;
3306 else
3308 RETVAL_HUGE_VALD;
3310 NOT_MATHERRD{ERRNO_RANGE;}
3311 *(double*)retval = exc.retval;
3312 break;
3314 case tgammaf_overflow:
3315 /* tgammaf overflow */
3317 OVERFLOWF; NAMEF = (char *) "tgammaf";
3318 ifSVID
3320 RETVAL_HUGEF;
3322 else
3324 RETVAL_HUGE_VALF;
3326 NOT_MATHERRF{ERRNO_RANGE;}
3327 *(float*)retval = excf.retval;
3328 break;
3330 case tgammal_negative:
3331 /* tgammal -int or 0 */
3333 SINGL; NAMEL = (char *) "tgammal";
3334 ifSVID
3336 NOT_MATHERRL
3338 WRITEL_TGAMMA_NEGATIVE;
3339 ERRNO_DOMAIN;
3342 else
3344 NOT_MATHERRL{ERRNO_DOMAIN;}
3346 *(long double*)retval = excl.retval;
3347 break;
3349 case tgamma_negative:
3350 /* tgamma -int or 0 */
3352 SINGD; NAMED = (char *) "tgamma";
3353 ifSVID
3355 NOT_MATHERRD
3357 WRITED_TGAMMA_NEGATIVE;
3358 ERRNO_DOMAIN;
3361 else
3363 NOT_MATHERRD{ERRNO_DOMAIN;}
3365 *(double*)retval = exc.retval;
3366 break;
3368 case tgammaf_negative:
3369 /* tgammaf -int or 0 */
3371 SINGF; NAMEF = (char *) "tgammaf";
3372 ifSVID
3374 NOT_MATHERRF
3376 WRITEF_TGAMMA_NEGATIVE;
3377 ERRNO_DOMAIN;
3380 else
3382 NOT_MATHERRF{ERRNO_DOMAIN;}
3384 *(float*)retval = excf.retval;
3385 break;
3387 case j0l_gt_loss:
3388 /* j0l > loss */
3390 TLOSSL; NAMEL = (char *) "j0l";
3391 RETVAL_ZEROL;
3392 ifSVID
3394 NOT_MATHERRL
3396 WRITEL_J0_TLOSS;
3397 ERRNO_RANGE;
3400 else
3402 NOT_MATHERRL {ERRNO_RANGE;}
3404 *(long double *)retval = excl.retval;
3405 break;
3407 case j0_gt_loss:
3408 /* j0 > loss */
3410 TLOSSD; NAMED = (char *) "j0";
3411 RETVAL_ZEROD;
3412 ifSVID
3414 NOT_MATHERRD
3416 WRITED_J0_TLOSS;
3417 ERRNO_RANGE;
3420 else
3422 NOT_MATHERRD {ERRNO_RANGE;}
3424 *(double*)retval = exc.retval;
3425 break;
3427 case j0f_gt_loss:
3428 /* j0f > loss */
3430 TLOSSF; NAMEF = (char *) "j0f";
3431 RETVAL_ZEROF;
3432 ifSVID
3434 NOT_MATHERRF
3436 WRITEF_J0_TLOSS;
3437 ERRNO_RANGE;
3440 else
3442 NOT_MATHERRF {ERRNO_RANGE;}
3444 *(float*)retval = excf.retval;
3445 break;
3447 case j1l_gt_loss:
3448 /* j1l > loss */
3450 TLOSSL; NAMEL = (char *) "j1l";
3451 RETVAL_ZEROL;
3452 ifSVID
3454 NOT_MATHERRL
3456 WRITEL_J1_TLOSS;
3457 ERRNO_RANGE;
3460 else
3462 NOT_MATHERRL {ERRNO_RANGE;}
3464 *(long double *)retval = excl.retval;
3465 break;
3467 case j1_gt_loss:
3468 /* j1 > loss */
3470 TLOSSD; NAMED = (char *) "j1";
3471 RETVAL_ZEROD;
3472 ifSVID
3474 NOT_MATHERRD
3476 WRITED_J1_TLOSS;
3477 ERRNO_RANGE;
3480 else
3482 NOT_MATHERRD {ERRNO_RANGE;}
3484 *(double*)retval = exc.retval;
3485 break;
3487 case j1f_gt_loss:
3488 /* j1f > loss */
3490 TLOSSF; NAMEF = (char *) "j1f";
3491 RETVAL_ZEROF;
3492 ifSVID
3494 NOT_MATHERRF
3496 WRITEF_J1_TLOSS;
3497 ERRNO_RANGE;
3500 else
3502 NOT_MATHERRF {ERRNO_RANGE;}
3504 *(float*)retval = excf.retval;
3505 break;
3507 case jnl_gt_loss:
3508 /* jnl > loss */
3510 TLOSSL; NAMEL = (char *) "jnl";
3511 RETVAL_ZEROL;
3512 ifSVID
3514 NOT_MATHERRL
3516 WRITEL_JN_TLOSS;
3517 ERRNO_RANGE;
3520 else
3522 NOT_MATHERRL {ERRNO_RANGE;}
3524 *(long double *)retval = excl.retval;
3525 break;
3527 case jn_gt_loss:
3528 /* jn > loss */
3530 TLOSSD; NAMED = (char *) "jn";
3531 RETVAL_ZEROD;
3532 ifSVID
3534 NOT_MATHERRD
3536 WRITED_JN_TLOSS;
3537 ERRNO_RANGE;
3540 else
3542 NOT_MATHERRD {ERRNO_RANGE;}
3544 *(double*)retval = exc.retval;
3545 break;
3547 case jnf_gt_loss:
3548 /* jnf > loss */
3550 TLOSSF; NAMEF = (char *) "jnf";
3551 RETVAL_ZEROF;
3552 ifSVID
3554 NOT_MATHERRF
3556 WRITEF_JN_TLOSS;
3557 ERRNO_RANGE;
3560 else
3562 NOT_MATHERRF {ERRNO_RANGE;}
3564 *(float*)retval = excf.retval;
3565 break;
3567 case y0l_gt_loss:
3568 /* y0l > loss */
3570 TLOSSL; NAMEL = (char *) "y0l";
3571 RETVAL_ZEROL;
3572 ifSVID
3574 NOT_MATHERRL
3576 WRITEL_Y0_TLOSS;
3577 ERRNO_RANGE;
3580 else
3582 NOT_MATHERRL {ERRNO_RANGE;}
3584 *(long double *)retval = excl.retval;
3585 break;
3587 case y0_gt_loss:
3588 /* y0 > loss */
3590 TLOSSD; NAMED = (char *) "y0";
3591 RETVAL_ZEROD;
3592 ifSVID
3594 NOT_MATHERRD
3596 WRITED_Y0_TLOSS;
3597 ERRNO_RANGE;
3600 else
3602 NOT_MATHERRD {ERRNO_RANGE;}
3604 *(double*)retval = exc.retval;
3605 break;
3607 case y0f_gt_loss:
3608 /* y0f > loss */
3610 TLOSSF; NAMEF = (char *) "y0f";
3611 RETVAL_ZEROF;
3612 ifSVID
3614 NOT_MATHERRF
3616 WRITEF_Y0_TLOSS;
3617 ERRNO_RANGE;
3620 else
3622 NOT_MATHERRF {ERRNO_RANGE;}
3624 *(float*)retval = excf.retval;
3625 break;
3627 case y0l_zero:
3628 /* y0l(0) */
3630 DOMAINL; NAMEL = (char *) "y0l";
3631 ifSVID
3633 RETVAL_NEG_HUGEL;
3634 NOT_MATHERRL
3636 WRITEL_Y0_ZERO;
3637 ERRNO_DOMAIN;
3640 else
3642 RETVAL_NEG_HUGE_VALL;
3643 NOT_MATHERRL {ERRNO_DOMAIN;}
3645 *(long double *)retval = excl.retval;
3646 break;
3648 case y0_zero:
3649 /* y0(0) */
3651 DOMAIND; NAMED = (char *) "y0";
3652 ifSVID
3654 RETVAL_NEG_HUGED;
3655 NOT_MATHERRD
3657 WRITED_Y0_ZERO;
3658 ERRNO_DOMAIN;
3661 else
3663 RETVAL_NEG_HUGE_VALD;
3664 NOT_MATHERRD {ERRNO_DOMAIN;}
3666 *(double *)retval = exc.retval;
3667 break;
3669 case y0f_zero:
3670 /* y0f(0) */
3672 DOMAINF; NAMEF = (char *) "y0f";
3673 ifSVID
3675 RETVAL_NEG_HUGEF;
3676 NOT_MATHERRF
3678 WRITEF_Y0_ZERO;
3679 ERRNO_DOMAIN;
3682 else
3684 RETVAL_NEG_HUGE_VALF;
3685 NOT_MATHERRF {ERRNO_DOMAIN;}
3687 *(float *)retval = excf.retval;
3688 break;
3690 case y1l_gt_loss:
3691 /* y1l > loss */
3693 TLOSSL; NAMEL = (char *) "y1l";
3694 RETVAL_ZEROL;
3695 ifSVID
3697 NOT_MATHERRL
3699 WRITEL_Y1_TLOSS;
3700 ERRNO_RANGE;
3703 else
3705 NOT_MATHERRL {ERRNO_RANGE;}
3707 *(long double *)retval = excl.retval;
3708 break;
3710 case y1_gt_loss:
3711 /* y1 > loss */
3713 TLOSSD; NAMED = (char *) "y1";
3714 RETVAL_ZEROD;
3715 ifSVID
3717 NOT_MATHERRD
3719 WRITED_Y1_TLOSS;
3720 ERRNO_RANGE;
3723 else
3725 NOT_MATHERRD {ERRNO_RANGE;}
3727 *(double*)retval = exc.retval;
3728 break;
3730 case y1f_gt_loss:
3731 /* y1f > loss */
3733 TLOSSF; NAMEF = (char *) "y1f";
3734 RETVAL_ZEROF;
3735 ifSVID
3737 NOT_MATHERRF
3739 WRITEF_Y1_TLOSS;
3740 ERRNO_RANGE;
3743 else
3745 NOT_MATHERRF {ERRNO_RANGE;}
3747 *(float*)retval = excf.retval;
3748 break;
3750 case y1l_zero:
3751 /* y1l(0) */
3753 DOMAINL; NAMEL = (char *) "y1l";
3754 ifSVID
3756 RETVAL_NEG_HUGEL;
3757 NOT_MATHERRL
3759 WRITEL_Y1_ZERO;
3760 ERRNO_DOMAIN;
3763 else
3765 RETVAL_NEG_HUGE_VALL;
3766 NOT_MATHERRL {ERRNO_DOMAIN;}
3768 *(long double *)retval = excl.retval;
3769 break;
3771 case y1_zero:
3772 /* y1(0) */
3774 DOMAIND; NAMED = (char *) "y1";
3775 ifSVID
3777 RETVAL_NEG_HUGED;
3778 NOT_MATHERRD
3780 WRITED_Y1_ZERO;
3781 ERRNO_DOMAIN;
3784 else
3786 RETVAL_NEG_HUGE_VALD;
3787 NOT_MATHERRD {ERRNO_DOMAIN;}
3789 *(double *)retval = exc.retval;
3790 break;
3792 case y1f_zero:
3793 /* y1f(0) */
3795 DOMAINF; NAMEF = (char *) "y1f";
3796 ifSVID
3798 RETVAL_NEG_HUGEF;
3799 NOT_MATHERRF
3801 WRITEF_Y1_ZERO;
3802 ERRNO_DOMAIN;
3804 }else
3806 RETVAL_NEG_HUGE_VALF;
3807 NOT_MATHERRF {ERRNO_DOMAIN;}
3809 *(float *)retval = excf.retval;
3810 break;
3812 case ynl_gt_loss:
3813 /* ynl > loss */
3815 TLOSSL; NAMEL = (char *) "ynl";
3816 RETVAL_ZEROL;
3817 ifSVID
3819 NOT_MATHERRL
3821 WRITEL_YN_TLOSS;
3822 ERRNO_RANGE;
3825 else
3827 NOT_MATHERRL {ERRNO_RANGE;}
3829 *(long double *)retval = excl.retval;
3830 break;
3832 case yn_gt_loss:
3833 /* yn > loss */
3835 TLOSSD; NAMED = (char *) "yn";
3836 RETVAL_ZEROD;
3837 ifSVID
3839 NOT_MATHERRD
3841 WRITED_YN_TLOSS;
3842 ERRNO_RANGE;
3845 else
3847 NOT_MATHERRD {ERRNO_RANGE;}
3849 *(double*)retval = exc.retval;
3850 break;
3852 case ynf_gt_loss:
3853 /* ynf > loss */
3855 TLOSSF; NAMEF = (char *) "ynf";
3856 RETVAL_ZEROF;
3857 ifSVID
3859 NOT_MATHERRF
3861 WRITEF_YN_TLOSS;
3862 ERRNO_RANGE;
3865 else
3867 NOT_MATHERRF {ERRNO_RANGE;}
3869 *(float*)retval = excf.retval;
3870 break;
3872 case ynl_zero:
3873 /* ynl(0) */
3875 DOMAINL; NAMEL = (char *) "ynl";
3876 ifSVID
3878 RETVAL_NEG_HUGEL;
3879 NOT_MATHERRL
3881 WRITEL_YN_ZERO;
3882 ERRNO_DOMAIN;
3885 else
3887 RETVAL_NEG_HUGE_VALL;
3888 NOT_MATHERRL {ERRNO_DOMAIN;}
3890 *(long double *)retval = excl.retval;
3891 break;
3893 case yn_zero:
3894 /* yn(0) */
3896 DOMAIND; NAMED = (char *) "yn";
3897 ifSVID
3899 RETVAL_NEG_HUGED;
3900 NOT_MATHERRD
3902 WRITED_YN_ZERO;
3903 ERRNO_DOMAIN;
3906 else
3908 RETVAL_NEG_HUGE_VALD;
3909 NOT_MATHERRD {ERRNO_DOMAIN;}
3911 *(double *)retval = exc.retval;
3912 break;
3914 case ynf_zero:
3915 /* ynf(0) */
3917 DOMAINF; NAMEF = (char *) "ynf";
3918 ifSVID
3920 RETVAL_NEG_HUGEF;
3921 NOT_MATHERRF
3923 WRITEF_YN_ZERO;
3924 ERRNO_DOMAIN;
3927 else
3929 RETVAL_NEG_HUGE_VALF;
3930 NOT_MATHERRF {ERRNO_DOMAIN;}
3932 *(float *)retval = excf.retval;
3933 break;
3935 case y0l_negative:
3936 /* y0l(x<0) */
3938 DOMAINL; NAMEL = (char *) "y0l";
3939 ifSVID
3941 RETVAL_NEG_HUGEL;
3942 NOT_MATHERRL
3944 WRITEL_Y0_NEGATIVE;
3945 ERRNO_DOMAIN;
3948 else
3950 RETVAL_NEG_HUGE_VALL;
3951 NOT_MATHERRL {ERRNO_DOMAIN;}
3953 *(long double *)retval = excl.retval;
3954 break;
3956 case y0_negative:
3957 /* y0(x<0) */
3959 DOMAIND; NAMED = (char *) "y0";
3960 ifSVID
3962 RETVAL_NEG_HUGED;
3963 NOT_MATHERRD
3965 WRITED_Y0_NEGATIVE;
3966 ERRNO_DOMAIN;
3969 else
3971 RETVAL_NEG_HUGE_VALD;
3972 NOT_MATHERRD {ERRNO_DOMAIN;}
3974 *(double *)retval = exc.retval;
3975 break;
3977 case y0f_negative:
3978 /* y0f(x<0) */
3980 DOMAINF; NAMEF = (char *) "y0f";
3981 ifSVID
3983 RETVAL_NEG_HUGEF;
3984 NOT_MATHERRF
3986 WRITEF_Y0_NEGATIVE;
3987 ERRNO_DOMAIN;
3990 else
3992 RETVAL_NEG_HUGE_VALF;
3993 NOT_MATHERRF {ERRNO_DOMAIN;}
3995 *(float *)retval = excf.retval;
3996 break;
3998 case y1l_negative:
3999 /* y1l(x<0) */
4001 DOMAINL; NAMEL = (char *) "y1l";
4002 ifSVID
4004 RETVAL_NEG_HUGEL;
4005 NOT_MATHERRL
4007 WRITEL_Y1_NEGATIVE;
4008 ERRNO_DOMAIN;
4011 else
4013 RETVAL_NEG_HUGE_VALL;
4014 NOT_MATHERRL {ERRNO_DOMAIN;}
4016 *(long double *)retval = excl.retval;
4017 break;
4019 case y1_negative:
4020 /* y1(x<0) */
4022 DOMAIND; NAMED = (char *) "y1";
4023 ifSVID
4025 RETVAL_NEG_HUGED;
4026 NOT_MATHERRD
4028 WRITED_Y1_NEGATIUE;
4029 ERRNO_DOMAIN;
4032 else
4034 RETVAL_NEG_HUGE_VALD;
4035 NOT_MATHERRD {ERRNO_DOMAIN;}
4037 *(double *)retval = exc.retval;
4038 break;
4040 case y1f_negative:
4041 /* y1f(x<0) */
4043 DOMAINF; NAMEF = (char *) "y1f";
4044 ifSVID
4046 RETVAL_NEG_HUGEF;
4047 NOT_MATHERRF
4049 WRITEF_Y1_NEGATIVE;
4050 ERRNO_DOMAIN;
4053 else
4055 RETVAL_NEG_HUGE_VALF;
4056 NOT_MATHERRF {ERRNO_DOMAIN;}
4058 *(float *)retval = excf.retval;
4059 break;
4061 case ynl_negative:
4062 /* ynl(x<0) */
4064 DOMAINL; NAMEL = (char *) "ynl";
4065 ifSVID
4067 RETVAL_NEG_HUGEL;
4068 NOT_MATHERRL
4070 WRITEL_YN_NEGATIVE;
4071 ERRNO_DOMAIN;
4074 else
4076 RETVAL_NEG_HUGE_VALL;
4077 NOT_MATHERRL {ERRNO_DOMAIN;}
4079 *(long double *)retval = excl.retval;
4080 break;
4082 case yn_negative:
4083 /* yn(x<0) */
4085 DOMAIND; NAMED = (char *) "yn";
4086 ifSVID
4088 RETVAL_NEG_HUGED;
4089 NOT_MATHERRD
4091 WRITED_YN_NEGATIVE;
4092 ERRNO_DOMAIN;
4095 else
4097 RETVAL_NEG_HUGE_VALD;
4098 NOT_MATHERRD {ERRNO_DOMAIN;}
4100 *(double *)retval = exc.retval;
4101 break;
4103 case ynf_negative:
4104 /* ynf(x<0) */
4106 DOMAINF; NAMEF = (char *) "ynf";
4107 ifSVID
4109 RETVAL_NEG_HUGEF;
4110 NOT_MATHERRF
4112 WRITEF_YN_NEGATIVE;
4113 ERRNO_DOMAIN;
4116 else
4118 RETVAL_NEG_HUGE_VALF;
4119 NOT_MATHERRF {ERRNO_DOMAIN;}
4121 *(float *)retval = excf.retval;
4122 break;
4124 case fmodl_by_zero:
4125 /* fmodl(x,0) */
4127 DOMAINL; NAMEL = (char *) "fmodl";
4128 ifSVID
4130 *(long double *)retval = *(long double *)arg1;
4131 NOT_MATHERRL
4133 WRITEL_FMOD;
4134 ERRNO_DOMAIN;
4137 else
4138 { /* NaN already computed */
4139 NOT_MATHERRL {ERRNO_DOMAIN;}
4141 *(long double *)retval = excl.retval;
4142 break;
4144 case fmod_by_zero:
4145 /* fmod(x,0) */
4147 DOMAIND; NAMED = (char *) "fmod";
4148 ifSVID
4150 *(double *)retval = *(double *)arg1;
4151 NOT_MATHERRD
4153 WRITED_FMOD;
4154 ERRNO_DOMAIN;
4157 else
4158 { /* NaN already computed */
4159 NOT_MATHERRD {ERRNO_DOMAIN;}
4161 *(double *)retval = exc.retval;
4162 break;
4164 case fmodf_by_zero:
4165 /* fmodf(x,0) */
4167 DOMAINF; NAMEF = (char *) "fmodf";
4168 ifSVID
4170 *(float *)retval = *(float *)arg1;
4171 NOT_MATHERRF
4173 WRITEF_FMOD;
4174 ERRNO_DOMAIN;
4177 else
4179 NOT_MATHERRF {ERRNO_DOMAIN;}
4181 *(float *)retval = excf.retval;
4182 break;
4184 case remainderl_by_zero:
4185 /* remainderl(x,0) */
4187 DOMAINL; NAMEL = (char *) "remainderl";
4188 ifSVID
4190 NOT_MATHERRL
4192 WRITEL_REM;
4193 ERRNO_DOMAIN;
4196 else
4197 { /* NaN already computed */
4198 NOT_MATHERRL {ERRNO_DOMAIN;}
4200 *(long double *)retval = excl.retval;
4201 break;
4203 case remainder_by_zero:
4204 /* remainder(x,0) */
4206 DOMAIND; NAMED = (char *) "remainder";
4207 ifSVID
4209 NOT_MATHERRD
4211 WRITED_REM;
4212 ERRNO_DOMAIN;
4215 else
4216 { /* NaN already computed */
4217 NOT_MATHERRD {ERRNO_DOMAIN;}
4219 *(double *)retval = exc.retval;
4220 break;
4222 case remainderf_by_zero:
4223 /* remainderf(x,0) */
4225 DOMAINF; NAMEF = (char *) "remainderf";
4226 ifSVID
4228 NOT_MATHERRF
4230 WRITEF_REM;
4231 ERRNO_DOMAIN;
4234 else
4236 NOT_MATHERRF {ERRNO_DOMAIN;}
4238 *(float *)retval = excf.retval;
4239 break;
4241 default:
4242 /* We don't want to abort () since SVID doesn't cover all math
4243 library functions. */
4244 break;
4246 return;