(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
[glibc.git] / sysdeps / ia64 / fpu / libm_error.c
blobebbaad02ad678e07297dff85968e26a207451a1e
1 //
2 // Copyright (C) 2000, 2001, Intel Corporation
3 // All rights reserved.
4 //
5 // Contributed 2/2/2000 by John Harrison, Ted Kubaska, Bob Norin, Shane Story, James
6 // Edwards, and Ping Tak Peter Tang of the Computational Software Lab, Intel Corporation.
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions are
10 // met:
12 // * Redistributions of source code must retain the above copyright
13 // notice, this list of conditions and the following disclaimer.
15 // * Redistributions in binary form must reproduce the above copyright
16 // notice, this list of conditions and the following disclaimer in the
17 // documentation and/or other materials provided with the distribution.
19 // * The name of Intel Corporation may not be used to endorse or promote
20 // products derived from this software without specific prior written
21 // permission.
23 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
27 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
31 // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
32 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 // Intel Corporation is the author of this code, and requests that all
36 // problem reports or change requests be submitted to it directly at
37 // http://developer.intel.com/opensource.
39 // History
40 //==============================================================
41 // 2/02/00: Initial version
42 // 3/22/00: Updated to support flexible and dynamic error handling.
43 // 8/16/00: Changed all matherr function-calls to use the pmatherr
44 // function-pointers.
45 // 10/03/00: Corrected a scalb type.
46 // 11/28/00: Changed INPUT_XL to INPUT_XD for scalb_underflow case.
47 // 12/07/00: Added code to make scalbn error support equivalent to ldexp.
48 // 2/07/01: Added __declspec(align(16)) to long double constants to correct
49 // alignment problem.
52 #include <errno.h>
53 #include <stdio.h>
54 #include <stdlib.h>
55 #include "libm_support.h"
57 #ifndef _LIBC
58 _LIB_VERSION_TYPE
59 #if defined( __POSIX__ )
60 _LIB_VERSION = _POSIX_;
61 #elif defined( __XOPEN__ )
62 _LIB_VERSION = _XOPEN_;
63 #elif defined( __SVID__ )
64 _LIB_VERSION = _SVID_;
65 #elif defined( __IEEE__ )
66 _LIB_VERSION = _IEEE_;
67 #else
68 _LIB_VERSION = _ISOC_;
69 #endif
70 #endif
72 /************************************************************/
73 /* matherrX function pointers and setusermatherrX functions */
74 /************************************************************/
75 #if 0
76 int (*pmatherrf)(struct exceptionf*) = MATHERR_F;
77 int (*pmatherr)(struct EXC_DECL_D*) = MATHERR_D;
78 int (*pmatherrl)(struct exceptionl*) = matherrl;
80 void __libm_setusermatherrf( int(*user_merrf)(struct exceptionf*) )
81 { pmatherrf = ( (user_merrf==NULL)? (MATHERR_F) : (user_merrf) ); }
83 void __libm_setusermatherr( int(*user_merr)(struct EXC_DECL_D*) )
84 { pmatherr = ( (user_merr==NULL)? (MATHERR_D) : (user_merr) ); }
86 void __libm_setusermatherrl( int(*user_merrl)(struct exceptionl*) )
87 { pmatherrl = ( (user_merrl==NULL)? (matherrl) : (user_merrl) ); }
88 #endif
90 /***********************************************/
91 /* error-handling function, libm_error_support */
92 /***********************************************/
93 void __libm_error_support(void *arg1,void *arg2,void *retval,error_types input_tag)
97 # ifdef __cplusplus
98 struct __exception exc;
99 # else
100 struct exception exc;
101 # endif
103 struct exceptionf excf;
104 struct exceptionl excl;
106 # if defined opensource || defined _LIBC
107 #define ALIGNIT
108 #define ALIGNATTR __attribute__ ((__aligned__ (16)))
109 # else
110 #define ALIGNIT __declspec(align(16))
111 #define ALIGNATTR
112 # endif
114 const char float_inf[4] = {0x00,0x00,0x80,0x7F};
115 const char float_huge[4] = {0xFF,0xFF,0x7F,0x7F};
116 const char float_zero[4] = {0x00,0x00,0x00,0x00};
117 const char float_neg_inf[4] = {0x00,0x00,0x80,0xFF};
118 const char float_neg_huge[4] = {0xFF,0xFF,0x7F,0xFF};
119 const char float_neg_zero[4] = {0x00,0x00,0x00,0x80};
120 ALIGNIT
121 const char double_inf[8] ALIGNATTR = {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7F};
122 ALIGNIT
123 //const char double_huge[8] ALIGNATTR = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0x7F};
124 ALIGNIT
125 const char double_zero[8] ALIGNATTR = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
126 ALIGNIT
127 const char double_neg_inf[8] ALIGNATTR = {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF};
128 ALIGNIT
129 //const char double_neg_huge[8] ALIGNATTR = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF};
130 ALIGNIT
131 const char double_neg_zero[8] ALIGNATTR = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80};
132 ALIGNIT
133 const char long_double_inf[16] ALIGNATTR = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00};
134 ALIGNIT
135 //const char long_double_huge[16] ALIGNATTR = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00};
136 ALIGNIT
137 const char long_double_zero[16] ALIGNATTR = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
138 ALIGNIT
139 const char long_double_neg_inf[16] ALIGNATTR = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00};
140 ALIGNIT
141 //const char long_double_neg_huge[16] ALIGNATTR = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00};
142 ALIGNIT
143 const char long_double_neg_zero[16] ALIGNATTR = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00};
145 #define RETVAL_HUGE_VALL *(long double *)retval = *(long double *)long_double_inf
146 #define RETVAL_NEG_HUGE_VALL *(long double *)retval = *(long double *)long_double_neg_inf
147 #define RETVAL_HUGEL *(long double *)retval = (long double)*(float *)float_huge
148 #define RETVAL_NEG_HUGEL *(long double *)retval =(long double)*(float*)float_neg_huge
150 #define RETVAL_HUGE_VALD *(double *)retval = *(double *) double_inf
151 #define RETVAL_NEG_HUGE_VALD *(double *)retval = *(double *) double_neg_inf
152 #define RETVAL_HUGED *(double *)retval = (double) *(float *)float_huge
153 #define RETVAL_NEG_HUGED *(double *)retval = (double) *(float *) float_neg_huge
155 #define RETVAL_HUGE_VALF *(float *)retval = *(float *) float_inf
156 #define RETVAL_NEG_HUGE_VALF *(float *)retval = *(float *) float_neg_inf
157 #define RETVAL_HUGEF *(float *)retval = *(float *) float_huge
158 #define RETVAL_NEG_HUGEF *(float *)retval = *(float *) float_neg_huge
160 #define RETVAL_ZEROL *(long double *)retval = *(long double *)long_double_zero
161 #define RETVAL_ZEROD *(double *)retval = *(double *)double_zero
162 #define RETVAL_ZEROF *(float *)retval = *(float *)float_zero
164 #define RETVAL_NEG_ZEROL *(long double *)retval = *(long double *)long_double_neg_zero
165 #define RETVAL_NEG_ZEROD *(double *)retval = *(double *)double_neg_zero
166 #define RETVAL_NEG_ZEROF *(float *)retval = *(float *)float_neg_zero
168 #define RETVAL_ONEL *(long double *)retval = (long double) 1.0
169 #define RETVAL_ONED *(double *)retval = 1.0
170 #define RETVAL_ONEF *(float *)retval = 1.0f
172 #define NOT_MATHERRL excl.arg1=*(long double *)arg1;excl.arg2=*(long double *)arg2;excl.retval=*(long double *)retval;if(!matherrl(&excl))
173 #define NOT_MATHERRD exc.arg1=*(double *)arg1;exc.arg2=*(double *)arg2;exc.retval=*(double *)retval;if(!MATHERR_D(&exc))
174 #define NOT_MATHERRF excf.arg1=*(float *)arg1;excf.arg2=*(float *)arg2;excf.retval=*(float *)retval;if(!MATHERR_F(&excf))
176 #define ifSVID if(_LIB_VERSION==_SVID_)
178 #define NAMEL excl.name
179 #define NAMED exc.name
180 #define NAMEF excf.name
183 // These should work OK for MS because they are ints -
184 // leading underbars are not necessary.
187 #define DOMAIN 1
188 #define SING 2
189 #define OVERFLOW 3
190 #define UNDERFLOW 4
191 #define TLOSS 5
192 #define PLOSS 6
194 #define SINGL excl.type = SING
195 #define DOMAINL excl.type = DOMAIN
196 #define OVERFLOWL excl.type = OVERFLOW
197 #define UNDERFLOWL excl.type = UNDERFLOW
198 #define TLOSSL excl.type = TLOSS
199 #define SINGD exc.type = SING
200 #define DOMAIND exc.type = DOMAIN
201 #define OVERFLOWD exc.type = OVERFLOW
202 #define UNDERFLOWD exc.type = UNDERFLOW
203 #define TLOSSD exc.type = TLOSS
204 #define SINGF excf.type = SING
205 #define DOMAINF excf.type = DOMAIN
206 #define OVERFLOWF excf.type = OVERFLOW
207 #define UNDERFLOWF excf.type = UNDERFLOW
208 #define TLOSSF excf.type = TLOSS
210 #define INPUT_XL (excl.arg1=*(long double*)arg1)
211 #define INPUT_XD (exc.arg1=*(double*)arg1)
212 #define INPUT_XF (excf.arg1=*(float*)arg1)
213 #define INPUT_YL (excl.arg1=*(long double*)arg2)
214 #define INPUT_YD (exc.arg1=*(double*)arg2)
215 #define INPUT_YF (excf.arg1=*(float*)arg2)
216 #define INPUT_RESL (*(long double *)retval)
217 #define INPUT_RESD (*(double *)retval)
218 #define INPUT_RESF (*(float *)retval)
220 #define WRITEL_LOG_ZERO fputs("logl: SING error\n",stderr)
221 #define WRITED_LOG_ZERO fputs("log: SING error\n",stderr)
222 #define WRITEF_LOG_ZERO fputs("logf: SING error\n",stderr)
223 #define WRITEL_LOG_NEGATIVE fputs("logl: DOMAIN error\n",stderr)
224 #define WRITED_LOG_NEGATIVE fputs("log: DOMAIN error\n",stderr)
225 #define WRITEF_LOG_NEGATIVE fputs("logf: DOMAIN error\n",stderr)
226 #define WRITEL_Y0_ZERO fputs("y0l: DOMAIN error\n",stderr)
227 #define WRITED_Y0_ZERO fputs("y0: DOMAIN error\n",stderr)
228 #define WRITEF_Y0_ZERO fputs("y0f: DOMAIN error\n",stderr)
229 #define WRITEL_Y0_NEGATIVE fputs("y0l: DOMAIN error\n",stderr)
230 #define WRITED_Y0_NEGATIVE fputs("y0: DOMAIN error\n",stderr)
231 #define WRITEF_Y0_NEGATIVE fputs("y0f: DOMAIN error\n",stderr)
232 #define WRITEL_Y1_ZERO fputs("y1l: DOMAIN error\n",stderr)
233 #define WRITED_Y1_ZERO fputs("y1: DOMAIN error\n",stderr)
234 #define WRITEF_Y1_ZERO fputs("y1f: DOMAIN error\n",stderr)
235 #define WRITEL_Y1_NEGATIVE fputs("y1l: DOMAIN error\n",stderr)
236 #define WRITED_Y1_NEGATIUE fputs("y1: DOMAIN error\n",stderr)
237 #define WRITEF_Y1_NEGATIVE fputs("y1f: DOMAIN error\n",stderr)
238 #define WRITEL_YN_ZERO fputs("ynl: DOMAIN error\n",stderr)
239 #define WRITED_YN_ZERO fputs("yn: DOMAIN error\n",stderr)
240 #define WRITEF_YN_ZERO fputs("ynf: DOMAIN error\n",stderr)
241 #define WRITEL_YN_NEGATIVE fputs("ynl: DOMAIN error\n",stderr)
242 #define WRITED_YN_NEGATIVE fputs("yn: DOMAIN error\n",stderr)
243 #define WRITEF_YN_NEGATIVE fputs("ynf: DOMAIN error\n",stderr)
244 #define WRITEL_LOG1P_ZERO fputs("log1pl: SING error\n",stderr)
245 #define WRITED_LOG1P_ZERO fputs("log1p: SING error\n",stderr)
246 #define WRITEF_LOG1P_ZERO fputs("log1pf: SING error\n",stderr)
247 #define WRITEL_LOG1P_NEGATIVE fputs("log1pl: DOMAIN error\n",stderr)
248 #define WRITED_LOG1P_NEGATIVE fputs("log1p: DOMAIN error\n",stderr)
249 #define WRITEF_LOG1P_NEGATIVE fputs("log1pf: DOMAIN error\n",stderr)
250 #define WRITEL_LOG10_ZERO fputs("log10l: SING error\n",stderr)
251 #define WRITED_LOG10_ZERO fputs("log10: SING error\n",stderr)
252 #define WRITEF_LOG10_ZERO fputs("log10f: SING error\n",stderr)
253 #define WRITEL_LOG10_NEGATIVE fputs("log10l: DOMAIN error\n",stderr)
254 #define WRITED_LOG10_NEGATIVE fputs("log10: DOMAIN error\n",stderr)
255 #define WRITEF_LOG10_NEGATIVE fputs("log10f: DOMAIN error\n",stderr)
256 #define WRITEL_POW_ZERO_TO_ZERO fputs("powl(0,0): DOMAIN error\n",stderr)
257 #define WRITED_POW_ZERO_TO_ZERO fputs("pow(0,0): DOMAIN error\n",stderr)
258 #define WRITEF_POW_ZERO_TO_ZERO fputs("powf(0,0): DOMAIN error\n",stderr)
259 #define WRITEL_POW_ZERO_TO_NEGATIVE fputs("powl(0,negative): DOMAIN error\n",stderr)
260 #define WRITED_POW_ZERO_TO_NEGATIVE fputs("pow(0,negative): DOMAIN error\n",stderr)
261 #define WRITEF_POW_ZERO_TO_NEGATIVE fputs("powf(0,negative): DOMAIN error\n",stderr)
262 #define WRITEL_POW_NEG_TO_NON_INTEGER fputs("powl(negative,non-integer): DOMAIN error\n",stderr)
263 #define WRITED_POW_NEG_TO_NON_INTEGER fputs("pow(negative,non-integer): DOMAIN error\n",stderr)
264 #define WRITEF_POW_NEG_TO_NON_INTEGER fputs("powf(negative,non-integer): DOMAIN error\n",stderr)
265 #define WRITEL_ATAN2_ZERO_BY_ZERO fputs("atan2l: DOMAIN error\n",stderr)
266 #define WRITED_ATAN2_ZERO_BY_ZERO fputs("atan2: DOMAIN error\n",stderr)
267 #define WRITEF_ATAN2_ZERO_BY_ZERO fputs("atan2f: DOMAIN error\n",stderr)
268 #define WRITEL_SQRT fputs("sqrtl: DOMAIN error\n",stderr)
269 #define WRITED_SQRT fputs("sqrt: DOMAIN error\n",stderr)
270 #define WRITEF_SQRT fputs("sqrtf: DOMAIN error\n",stderr)
271 #define WRITEL_FMOD fputs("fmodl: DOMAIN error\n",stderr)
272 #define WRITED_FMOD fputs("fmod: DOMAIN error\n",stderr)
273 #define WRITEF_FMOD fputs("fmodf: DOMAIN error\n",stderr)
274 #define WRITEL_REM fputs("remainderl: DOMAIN error\n",stderr)
275 #define WRITED_REM fputs("remainder: DOMAIN error\n",stderr)
276 #define WRITEF_REM fputs("remainderf: DOMAIN error\n",stderr)
277 #define WRITEL_ACOS fputs("acosl: DOMAIN error\n",stderr)
278 #define WRITED_ACOS fputs("acos: DOMAIN error\n",stderr)
279 #define WRITEF_ACOS fputs("acosf: DOMAIN error\n",stderr)
280 #define WRITEL_ASIN fputs("asinl: DOMAIN error\n",stderr)
281 #define WRITED_ASIN fputs("asin: DOMAIN error\n",stderr)
282 #define WRITEF_ASIN fputs("asinf: DOMAIN error\n",stderr)
283 #define WRITEL_ACOSH fputs("acoshl: DOMAIN error\n",stderr)
284 #define WRITED_ACOSH fputs("acosh: DOMAIN error\n",stderr)
285 #define WRITEF_ACOSH fputs("acoshf: DOMAIN error\n",stderr)
286 #define WRITEL_ATANH_GT_ONE fputs("atanhl: DOMAIN error\n",stderr)
287 #define WRITED_ATANH_GT_ONE fputs("atanh: DOMAIN error\n",stderr)
288 #define WRITEF_ATANH_GT_ONE fputs("atanhf: DOMAIN error\n",stderr)
289 #define WRITEL_ATANH_EQ_ONE fputs("atanhl: SING error\n",stderr)
290 #define WRITED_ATANH_EQ_ONE fputs("atanh: SING error\n",stderr)
291 #define WRITEF_ATANH_EQ_ONE fputs("atanhf: SING error\n",stderr)
292 #define WRITEL_LGAMMA_NEGATIVE fputs("lgammal: SING error\n",stderr)
293 #define WRITED_LGAMMA_NEGATIVE fputs("lgamma: SING error\n",stderr)
294 #define WRITEF_LGAMMA_NEGATIVE fputs("lgammaf: SING error\n",stderr)
295 #define WRITEL_GAMMA_NEGATIVE fputs("gammal: SING error\n",stderr)
296 #define WRITED_GAMMA_NEGATIVE fputs("gamma: SING error\n",stderr)
297 #define WRITEF_GAMMA_NEGATIVE fputs("gammaf: SING error\n",stderr)
298 #define WRITEL_J0_TLOSS fputs("j0l: TLOSS error\n",stderr)
299 #define WRITEL_Y0_TLOSS fputs("y0l: TLOSS error\n",stderr)
300 #define WRITEL_J1_TLOSS fputs("j1l: TLOSS error\n",stderr)
301 #define WRITEL_Y1_TLOSS fputs("y1l: TLOSS error\n",stderr)
302 #define WRITEL_JN_TLOSS fputs("jnl: TLOSS error\n",stderr)
303 #define WRITEL_YN_TLOSS fputs("ynl: TLOSS error\n",stderr)
304 #define WRITED_J0_TLOSS fputs("j0: TLOSS error\n",stderr)
305 #define WRITED_Y0_TLOSS fputs("y0: TLOSS error\n",stderr)
306 #define WRITED_J1_TLOSS fputs("j1: TLOSS error\n",stderr)
307 #define WRITED_Y1_TLOSS fputs("y1: TLOSS error\n",stderr)
308 #define WRITED_JN_TLOSS fputs("jn: TLOSS error\n",stderr)
309 #define WRITED_YN_TLOSS fputs("yn: TLOSS error\n",stderr)
310 #define WRITEF_J0_TLOSS fputs("j0f: TLOSS error\n",stderr)
311 #define WRITEF_Y0_TLOSS fputs("y0f: TLOSS error\n",stderr)
312 #define WRITEF_J1_TLOSS fputs("j1f: TLOSS error\n",stderr)
313 #define WRITEF_Y1_TLOSS fputs("y1f: TLOSS error\n",stderr)
314 #define WRITEF_JN_TLOSS fputs("jnf: TLOSS error\n",stderr)
315 #define WRITEF_YN_TLOSS fputs("ynf: TLOSS error\n",stderr)
317 /***********************/
318 /* IEEE Path */
319 /***********************/
320 if(_LIB_VERSION==_IEEE_) return;
322 /***********************/
323 /* C9X Path */
324 /***********************/
325 else if(_LIB_VERSION==_ISOC_)
327 switch(input_tag)
329 case logl_zero:
330 case log_zero:
331 case logf_zero:
332 case log10l_zero:
333 case log10_zero:
334 case log10f_zero:
335 case log2l_zero:
336 case log2_zero:
337 case log2f_zero:
338 case log1pl_zero:
339 case log1p_zero:
340 case log1pf_zero:
341 case powl_overflow:
342 case pow_overflow:
343 case powf_overflow:
344 case powl_underflow:
345 case pow_underflow:
346 case powf_underflow:
347 case expl_overflow:
348 case exp_overflow:
349 case expf_overflow:
350 case expl_underflow:
351 case exp_underflow:
352 case expf_underflow:
353 case exp2l_overflow:
354 case exp2_overflow:
355 case exp2f_overflow:
356 case exp2l_underflow:
357 case exp2_underflow:
358 case exp2f_underflow:
359 case exp10l_overflow:
360 case exp10_overflow:
361 case exp10f_overflow:
362 case expm1l_overflow:
363 case expm1_overflow:
364 case expm1f_overflow:
365 case hypotl_overflow:
366 case hypot_overflow:
367 case hypotf_overflow:
368 case sinhl_overflow:
369 case sinh_overflow:
370 case sinhf_overflow:
371 case atanhl_eq_one:
372 case atanh_eq_one:
373 case atanhf_eq_one:
374 case scalbl_overflow:
375 case scalb_overflow:
376 case scalbf_overflow:
377 case scalbl_underflow:
378 case scalb_underflow:
379 case scalbf_underflow:
380 case coshl_overflow:
381 case cosh_overflow:
382 case coshf_overflow:
383 case nextafterl_overflow:
384 case nextafter_overflow:
385 case nextafterf_overflow:
386 case scalbnl_overflow:
387 case scalbn_overflow:
388 case scalbnf_overflow:
389 case scalbnl_underflow:
390 case scalbn_underflow:
391 case scalbnf_underflow:
392 case ldexpl_overflow:
393 case ldexp_overflow:
394 case ldexpf_overflow:
395 case ldexpl_underflow:
396 case ldexp_underflow:
397 case ldexpf_underflow:
398 case lgammal_overflow:
399 case lgamma_overflow:
400 case lgammaf_overflow:
401 case lgammal_negative:
402 case lgamma_negative:
403 case lgammaf_negative:
404 case gammal_overflow:
405 case gamma_overflow:
406 case gammaf_overflow:
407 case gammal_negative:
408 case gamma_negative:
409 case gammaf_negative:
410 case ilogbl_zero:
411 case ilogb_zero:
412 case ilogbf_zero:
414 ERRNO_RANGE; break;
416 case logl_negative:
417 case log_negative:
418 case logf_negative:
419 case log10l_negative:
420 case log10_negative:
421 case log10f_negative:
422 case log2l_negative:
423 case log2_negative:
424 case log2f_negative:
425 case log1pl_negative:
426 case log1p_negative:
427 case log1pf_negative:
428 case sqrtl_negative:
429 case sqrt_negative:
430 case sqrtf_negative:
431 case atan2l_zero:
432 case atan2_zero:
433 case atan2f_zero:
434 case powl_zero_to_negative:
435 case powl_neg_to_non_integer:
436 case pow_zero_to_negative:
437 case pow_neg_to_non_integer:
438 case powf_zero_to_negative:
439 case powf_neg_to_non_integer:
440 case fmodl_by_zero:
441 case fmod_by_zero:
442 case fmodf_by_zero:
443 case atanhl_gt_one:
444 case atanh_gt_one:
445 case atanhf_gt_one:
446 case acosl_gt_one:
447 case acos_gt_one:
448 case acosf_gt_one:
449 case asinl_gt_one:
450 case asin_gt_one:
451 case asinf_gt_one:
452 case logbl_zero:
453 case logb_zero:
454 case logbf_zero:
455 case acoshl_lt_one:
456 case acosh_lt_one:
457 case acoshf_lt_one:
458 case y0l_zero:
459 case y0_zero:
460 case y0f_zero:
461 case y1l_zero:
462 case y1_zero:
463 case y1f_zero:
464 case ynl_zero:
465 case yn_zero:
466 case ynf_zero:
467 case y0l_negative:
468 case y0_negative:
469 case y0f_negative:
470 case y1l_negative:
471 case y1_negative:
472 case y1f_negative:
473 case ynl_negative:
474 case yn_negative:
475 case ynf_negative:
477 ERRNO_DOMAIN; break;
479 default:
480 abort();
482 return;
485 /***********************/
486 /* _POSIX_ Path */
487 /***********************/
489 else if(_LIB_VERSION==_POSIX_)
491 switch(input_tag)
493 case gammal_overflow:
494 case lgammal_overflow:
496 RETVAL_HUGE_VALL; ERRNO_RANGE; break;
498 case gamma_overflow:
499 case lgamma_overflow:
501 RETVAL_HUGE_VALD; ERRNO_RANGE; break;
503 case gammaf_overflow:
504 case lgammaf_overflow:
506 RETVAL_HUGE_VALF; ERRNO_RANGE; break;
508 case gammal_negative:
509 case gamma_negative:
510 case gammaf_negative:
511 case lgammal_negative:
512 case lgamma_negative:
513 case lgammaf_negative:
515 ERRNO_DOMAIN; break;
517 case ldexpl_overflow:
518 case ldexpl_underflow:
519 case ldexp_overflow:
520 case ldexp_underflow:
521 case ldexpf_overflow:
522 case ldexpf_underflow:
523 case scalbnl_overflow:
524 case scalbnl_underflow:
525 case scalbn_overflow:
526 case scalbn_underflow:
527 case scalbnf_overflow:
528 case scalbnf_underflow:
530 ERRNO_RANGE; break;
532 case atanhl_gt_one:
533 case atanhl_eq_one:
534 /* atanhl(|x| >= 1) */
536 ERRNO_DOMAIN; break;
538 case atanh_gt_one:
539 case atanh_eq_one:
540 /* atanh(|x| >= 1) */
542 ERRNO_DOMAIN; break;
544 case atanhf_gt_one:
545 case atanhf_eq_one:
546 /* atanhf(|x| >= 1) */
548 ERRNO_DOMAIN; break;
550 case sqrtl_negative:
551 /* sqrtl(x < 0) */
553 ERRNO_DOMAIN; break;
555 case sqrt_negative:
556 /* sqrt(x < 0) */
558 ERRNO_DOMAIN; break;
560 case sqrtf_negative:
561 /* sqrtf(x < 0) */
563 ERRNO_DOMAIN; break;
565 case y0l_zero:
566 case y1l_zero:
567 case ynl_zero:
568 /* y0l(0) */
569 /* y1l(0) */
570 /* ynl(0) */
572 RETVAL_NEG_HUGE_VALL; ERRNO_DOMAIN; break;
574 case y0_zero:
575 case y1_zero:
576 case yn_zero:
577 /* y0(0) */
578 /* y1(0) */
579 /* yn(0) */
581 RETVAL_NEG_HUGE_VALD; ERRNO_DOMAIN; break;
583 case y0f_zero:
584 case y1f_zero:
585 case ynf_zero:
586 /* y0f(0) */
587 /* y1f(0) */
588 /* ynf(0) */
590 RETVAL_NEG_HUGE_VALF; ERRNO_DOMAIN; break;
592 case y0l_negative:
593 case y1l_negative:
594 case ynl_negative:
595 /* y0l(x < 0) */
596 /* y1l(x < 0) */
597 /* ynl(x < 0) */
599 RETVAL_NEG_HUGE_VALL; ERRNO_DOMAIN; break;
601 case y0_negative:
602 case y1_negative:
603 case yn_negative:
604 /* y0(x < 0) */
605 /* y1(x < 0) */
606 /* yn(x < 0) */
608 RETVAL_NEG_HUGE_VALD; ERRNO_DOMAIN; break;
610 case y0f_negative:
611 case y1f_negative:
612 case ynf_negative:
613 /* y0f(x < 0) */
614 /* y1f(x < 0) */
615 /* ynf(x < 0) */
617 RETVAL_NEG_HUGE_VALF; ERRNO_DOMAIN; break;
619 case logl_zero:
620 case log1pl_zero:
621 case log10l_zero:
622 /* logl(0) */
623 /* log1pl(0) */
624 /* log10l(0) */
626 RETVAL_NEG_HUGE_VALL; ERRNO_RANGE; break;
628 case log_zero:
629 case log1p_zero:
630 case log10_zero:
631 case log2l_zero:
632 /* log(0) */
633 /* log1p(0) */
634 /* log10(0) */
636 RETVAL_NEG_HUGE_VALD; ERRNO_RANGE; break;
638 case logf_zero:
639 case log1pf_zero:
640 case log10f_zero:
641 /* logf(0) */
642 /* log1pf(0) */
643 /* log10f(0) */
645 RETVAL_NEG_HUGE_VALF; ERRNO_RANGE; break;
647 case logl_negative:
648 case log1pl_negative:
649 case log10l_negative:
650 case log2l_negative:
651 /* logl(x < 0) */
652 /* log1pl(x < 0) */
653 /* log10l(x < 0) */
655 ERRNO_DOMAIN; break;
657 case log_negative:
658 case log1p_negative:
659 case log10_negative:
660 case log2_negative:
661 /* log(x < 0) */
662 /* log1p(x < 0) */
663 /* log10(x < 0) */
665 ERRNO_DOMAIN; break;
667 case logf_negative:
668 case log1pf_negative:
669 case log10f_negative:
670 case log2f_negative:
671 /* logf(x < 0) */
672 /* log1pf(x < 0) */
673 /* log10f(x < 0) */
675 ERRNO_DOMAIN; break;
677 case expl_overflow:
678 /* expl overflow */
680 RETVAL_HUGE_VALL; ERRNO_RANGE; break;
682 case exp_overflow:
683 /* exp overflow */
685 RETVAL_HUGE_VALD; ERRNO_RANGE; break;
687 case expf_overflow:
688 /* expf overflow */
690 RETVAL_HUGE_VALF; ERRNO_RANGE; break;
692 case expl_underflow:
693 /* expl underflow */
695 RETVAL_ZEROL; ERRNO_RANGE; break;
697 case exp_underflow:
698 /* exp underflow */
700 RETVAL_ZEROD; ERRNO_RANGE; break;
702 case expf_underflow:
703 /* expf underflow */
705 RETVAL_ZEROF; ERRNO_RANGE; break;
707 case j0l_gt_loss:
708 case y0l_gt_loss:
709 case j1l_gt_loss:
710 case y1l_gt_loss:
711 case jnl_gt_loss:
712 case ynl_gt_loss:
713 /* jn and yn doubl-extended> XLOSS */
715 RETVAL_ZEROL; ERRNO_RANGE; break;
717 case j0_gt_loss:
718 case y0_gt_loss:
719 case j1_gt_loss:
720 case y1_gt_loss:
721 case jn_gt_loss:
722 case yn_gt_loss:
723 /* jn and yn double > XLOSS */
725 RETVAL_ZEROD; ERRNO_RANGE; break;
727 case j0f_gt_loss:
728 case y0f_gt_loss:
729 case j1f_gt_loss:
730 case y1f_gt_loss:
731 case jnf_gt_loss:
732 case ynf_gt_loss:
733 /* j0n and y0n > XLOSS */
735 RETVAL_ZEROF; ERRNO_RANGE; break;
737 case powl_zero_to_zero:
738 /* powl 0**0 */
740 break;
742 case pow_zero_to_zero:
743 /* pow 0**0 */
745 break;
747 case powf_zero_to_zero:
748 /* powf 0**0 */
750 break;
752 case powl_overflow:
753 /* powl(x,y) overflow */
755 if (INPUT_RESL < 0) RETVAL_NEG_HUGE_VALL;
756 else RETVAL_HUGE_VALL;
757 ERRNO_RANGE; break;
759 case pow_overflow:
760 /* pow(x,y) overflow */
762 if (INPUT_RESD < 0) RETVAL_NEG_HUGE_VALD;
763 else RETVAL_HUGE_VALD;
764 ERRNO_RANGE; break;
766 case powf_overflow:
767 /* powf(x,y) overflow */
769 if (INPUT_RESF < 0) RETVAL_NEG_HUGE_VALF;
770 else RETVAL_HUGE_VALF;
771 ERRNO_RANGE; break;
773 case powl_underflow:
774 /* powl(x,y) underflow */
776 RETVAL_ZEROL; ERRNO_RANGE; break;
778 case pow_underflow:
779 /* pow(x,y) underflow */
781 RETVAL_ZEROD; ERRNO_RANGE; break;
783 case powf_underflow:
784 /* powf(x,y) underflow */
786 RETVAL_ZEROF; ERRNO_RANGE; break;
788 case powl_zero_to_negative:
789 /* 0**neg */
791 ERRNO_DOMAIN; break;
793 case pow_zero_to_negative:
794 /* 0**neg */
796 ERRNO_DOMAIN; break;
798 case powf_zero_to_negative:
799 /* 0**neg */
801 ERRNO_DOMAIN; break;
803 case powl_neg_to_non_integer:
804 /* neg**non_integral */
806 ERRNO_DOMAIN; break;
808 case pow_neg_to_non_integer:
809 /* neg**non_integral */
811 ERRNO_DOMAIN; break;
813 case powf_neg_to_non_integer:
814 /* neg**non-integral */
816 ERRNO_DOMAIN; break;
818 case powl_nan_to_zero:
819 /* powl(NaN,0.0) */
820 /* Special Error */
822 break;
824 case pow_nan_to_zero:
825 /* pow(NaN,0.0) */
827 break;
829 case powf_nan_to_zero:
830 /* powf(NaN,0.0) */
832 break;
834 case atan2l_zero:
835 /* atan2l(0,0) */
837 /* XXX arg1 and arg2 are switched!!!! */
838 if (signbit (*(long double *) arg1))
839 /* y == -0 */
840 *(long double *) retval = copysignl (M_PIl, *(long double *) arg2);
841 else
842 *(long double *) retval = *(long double *) arg2;
843 ERRNO_DOMAIN; break;
845 case atan2_zero:
846 /* atan2(0,0) */
848 /* XXX arg1 and arg2 are switched!!!! */
849 if (signbit (*(double *) arg1))
850 /* y == -0 */
851 *(double *) retval = copysign (M_PI, *(double *) arg2);
852 else
853 *(double *) retval = *(double *) arg2;
854 ERRNO_DOMAIN; break;
856 case
857 atan2f_zero:
858 /* atan2f(0,0) */
860 if (signbit (*(float *) arg2))
861 /* y == -0 */
862 *(float *) retval = copysignf (M_PI, *(float *) arg1);
863 else
864 *(float *) retval = *(float *) arg1;
865 ERRNO_DOMAIN; break;
867 case expm1l_overflow:
868 /* expm1 overflow */
870 ERRNO_RANGE; break;
872 case expm1_overflow:
873 /* expm1 overflow */
875 ERRNO_RANGE; break;
877 case expm1f_overflow:
878 /* expm1f overflow */
880 ERRNO_RANGE; break;
882 case expm1l_underflow:
883 /* expm1 underflow */
885 ERRNO_RANGE; break;
887 case expm1_underflow:
888 /* expm1 underflow */
890 ERRNO_RANGE; break;
892 case expm1f_underflow:
893 /* expm1f underflow */
895 ERRNO_RANGE; break;
897 case hypotl_overflow:
898 /* hypotl overflow */
900 RETVAL_HUGE_VALL; ERRNO_RANGE; break;
902 case hypot_overflow:
903 /* hypot overflow */
905 RETVAL_HUGE_VALD; ERRNO_RANGE; break;
907 case hypotf_overflow:
908 /* hypotf overflow */
910 RETVAL_HUGE_VALF; ERRNO_RANGE; break;
912 case scalbl_underflow:
913 /* scalbl underflow */
915 if (INPUT_XL < 0) RETVAL_NEG_ZEROL;
916 else RETVAL_ZEROL;
917 ERRNO_RANGE; break;
919 case scalb_underflow:
920 /* scalb underflow */
922 if (INPUT_XD < 0) RETVAL_NEG_ZEROD;
923 else RETVAL_ZEROD;
924 ERRNO_RANGE; break;
926 case scalbf_underflow:
927 /* scalbf underflow */
929 if (INPUT_XF < 0) RETVAL_NEG_ZEROF;
930 else RETVAL_ZEROF;
931 ERRNO_RANGE; break;
933 case scalbl_overflow:
934 /* scalbl overflow */
936 if (INPUT_XL < 0) RETVAL_NEG_HUGE_VALL;
937 else RETVAL_HUGE_VALL;
938 ERRNO_RANGE; break;
940 case scalb_overflow:
941 /* scalb overflow */
943 if (INPUT_XD < 0) RETVAL_NEG_HUGE_VALD;
944 else RETVAL_HUGE_VALD;
945 ERRNO_RANGE; break;
947 case scalbf_overflow:
948 /* scalbf overflow */
950 if (INPUT_XF < 0) RETVAL_NEG_HUGE_VALF;
951 else RETVAL_HUGE_VALF;
952 ERRNO_RANGE; break;
954 case acoshl_lt_one:
955 /* acoshl(x < 1) */
957 ERRNO_DOMAIN; break;
959 case acosh_lt_one:
960 /* acosh(x < 1) */
962 ERRNO_DOMAIN; break;
964 case acoshf_lt_one:
965 /* acoshf(x < 1) */
967 ERRNO_DOMAIN; break;
969 case acosl_gt_one:
970 /* acosl(x > 1) */
972 ERRNO_DOMAIN; break;
974 case acos_gt_one:
975 /* acos(x > 1) */
977 ERRNO_DOMAIN; break;
979 case acosf_gt_one:
980 /* acosf(x > 1) */
982 ERRNO_DOMAIN; break;
984 case asinl_gt_one:
985 /* asinl(x > 1) */
987 ERRNO_DOMAIN; break;
989 case asin_gt_one:
990 /* asin(x > 1) */
992 ERRNO_DOMAIN; break;
994 case asinf_gt_one:
995 /* asinf(x > 1) */
997 ERRNO_DOMAIN; break;
999 case remainderl_by_zero:
1000 case fmodl_by_zero:
1001 /* fmodl(x,0) */
1003 ERRNO_DOMAIN; break;
1005 case remainder_by_zero:
1006 case fmod_by_zero:
1007 /* fmod(x,0) */
1009 ERRNO_DOMAIN; break;
1011 case remainderf_by_zero:
1012 case fmodf_by_zero:
1013 /* fmodf(x,0) */
1015 ERRNO_DOMAIN; break;
1017 case coshl_overflow:
1018 /* coshl overflows */
1020 RETVAL_HUGE_VALL; ERRNO_RANGE; break;
1022 case cosh_overflow:
1023 /* cosh overflows */
1025 RETVAL_HUGE_VALD; ERRNO_RANGE; break;
1027 case coshf_overflow:
1028 /* coshf overflows */
1030 RETVAL_HUGE_VALF; ERRNO_RANGE; break;
1032 case sinhl_overflow:
1033 /* sinhl overflows */
1035 if (INPUT_XL > 0) RETVAL_HUGE_VALL;
1036 else RETVAL_NEG_HUGE_VALL;
1037 ERRNO_RANGE; break;
1039 case sinh_overflow:
1040 /* sinh overflows */
1042 if (INPUT_XD > 0) RETVAL_HUGE_VALD;
1043 else RETVAL_NEG_HUGE_VALD;
1044 ERRNO_RANGE; break;
1046 case sinhf_overflow:
1047 /* sinhf overflows */
1049 if (INPUT_XF > 0) RETVAL_HUGE_VALF;
1050 else RETVAL_NEG_HUGE_VALF;
1051 ERRNO_RANGE; break;
1053 case logbl_zero:
1054 /* logbl(0) */
1056 ERRNO_DOMAIN; break;
1058 case logb_zero:
1059 /* logb(0) */
1061 ERRNO_DOMAIN; break;
1063 case logbf_zero:
1064 /* logbf(0) */
1066 ERRNO_DOMAIN; break;
1068 case ilogbl_zero:
1069 /* ilogbl(0) */
1071 ERRNO_RANGE; break;
1073 case ilogb_zero:
1074 /* ilogb(0) */
1076 ERRNO_RANGE; break;
1078 case ilogbf_zero:
1079 /* ilogbf(0) */
1081 ERRNO_RANGE; break;
1083 default:
1084 abort();
1086 return;
1087 /* _POSIX_ */
1090 /*******************************/
1091 /* __SVID__ and __XOPEN__ Path */
1092 /*******************************/
1093 else
1095 switch(input_tag)
1097 case ldexpl_overflow:
1098 case ldexpl_underflow:
1099 case ldexp_overflow:
1100 case ldexp_underflow:
1101 case ldexpf_overflow:
1102 case ldexpf_underflow:
1103 case scalbnl_overflow:
1104 case scalbnl_underflow:
1105 case scalbn_overflow:
1106 case scalbn_underflow:
1107 case scalbnf_overflow:
1108 case scalbnf_underflow:
1110 ERRNO_RANGE; break;
1112 case sqrtl_negative:
1113 /* sqrtl(x < 0) */
1115 DOMAINL; NAMEL = (char *) "sqrtl";
1116 ifSVID
1118 RETVAL_ZEROL;
1119 NOT_MATHERRL
1121 WRITEL_SQRT;
1122 ERRNO_DOMAIN;
1125 else
1126 { /* NaN already computed */
1127 NOT_MATHERRL {ERRNO_DOMAIN;}
1129 *(long double *)retval = excl.retval;
1130 break;
1132 case sqrt_negative:
1133 /* sqrt(x < 0) */
1135 DOMAIND; NAMED = (char *) "sqrt";
1136 ifSVID
1139 RETVAL_ZEROD;
1140 NOT_MATHERRD
1142 WRITED_SQRT;
1143 ERRNO_DOMAIN;
1146 else
1147 { /* NaN already computed */
1148 NOT_MATHERRD {ERRNO_DOMAIN;}
1150 *(double *)retval = exc.retval;
1151 break;
1153 case sqrtf_negative:
1154 /* sqrtf(x < 0) */
1156 DOMAINF; NAMEF = (char *) "sqrtf";
1157 ifSVID
1159 RETVAL_ZEROF;
1160 NOT_MATHERRF
1162 WRITEF_SQRT;
1163 ERRNO_DOMAIN;
1166 else
1168 NOT_MATHERRF {ERRNO_DOMAIN;}
1170 *(float *)retval = excf.retval;
1171 break;
1173 case logl_zero:
1174 case log2l_zero:
1175 /* logl(0) */
1177 SINGL; NAMEL = (char *) "logl";
1178 ifSVID
1180 RETVAL_NEG_HUGEL;
1181 NOT_MATHERRL
1183 WRITEL_LOG_ZERO;
1184 ERRNO_DOMAIN;
1187 else
1189 RETVAL_NEG_HUGE_VALL;
1190 NOT_MATHERRL {ERRNO_DOMAIN;}
1192 *(long double *)retval = excl.retval;
1193 break;
1195 case log_zero:
1196 case log2_zero:
1197 /* log(0) */
1199 SINGD; NAMED = (char *) "log";
1200 ifSVID
1202 RETVAL_NEG_HUGED;
1203 NOT_MATHERRD
1205 WRITED_LOG_ZERO;
1206 ERRNO_DOMAIN;
1209 else
1211 RETVAL_NEG_HUGE_VALD;
1212 NOT_MATHERRD {ERRNO_DOMAIN;}
1214 *(double *)retval = exc.retval;
1215 break;
1217 case logf_zero:
1218 case log2f_zero:
1219 /* logf(0) */
1221 SINGF; NAMEF = (char *) "logf";
1222 ifSVID
1224 RETVAL_NEG_HUGEF;
1225 NOT_MATHERRF
1227 WRITEF_LOG_ZERO;
1228 ERRNO_DOMAIN;
1231 else
1233 RETVAL_NEG_HUGE_VALF;
1234 NOT_MATHERRF {ERRNO_DOMAIN;}
1236 *(float *)retval = excf.retval;
1237 break;
1240 case logl_negative:
1241 case log2l_negative:
1242 /* logl(x < 0) */
1244 DOMAINL; NAMEL = (char *) "logl";
1245 ifSVID
1247 RETVAL_NEG_HUGEL;
1248 NOT_MATHERRL
1250 WRITEL_LOG_NEGATIVE;
1251 ERRNO_DOMAIN;
1254 else
1256 RETVAL_NEG_HUGE_VALL;
1257 NOT_MATHERRL {ERRNO_DOMAIN;}
1259 *(long double *)retval = excl.retval;
1260 break;
1262 case log_negative:
1263 case log2_negative:
1264 /* log(x < 0) */
1266 DOMAIND; NAMED = (char *) "log";
1267 ifSVID
1269 RETVAL_NEG_HUGED;
1270 NOT_MATHERRD
1272 WRITED_LOG_NEGATIVE;
1273 ERRNO_DOMAIN;
1276 else
1278 RETVAL_NEG_HUGE_VALD;
1279 NOT_MATHERRD {ERRNO_DOMAIN;}
1281 *(double *)retval = exc.retval;
1282 break;
1284 case logf_negative:
1285 case log2f_negative:
1286 /* logf(x < 0) */
1288 DOMAINF; NAMEF = (char *) "logf";
1289 ifSVID
1291 RETVAL_NEG_HUGEF;
1292 NOT_MATHERRF
1294 WRITEF_LOG_NEGATIVE;
1295 ERRNO_DOMAIN;
1298 else
1300 RETVAL_NEG_HUGE_VALF;
1301 NOT_MATHERRF{ERRNO_DOMAIN;}
1303 *(float *)retval = excf.retval;
1304 break;
1306 case log1pl_zero:
1307 /* log1pl(-1) */
1309 SINGL; NAMEL = (char *) "log1pl";
1310 ifSVID
1312 RETVAL_NEG_HUGEL;
1313 NOT_MATHERRL
1315 WRITEL_LOG1P_ZERO;
1316 ERRNO_DOMAIN;
1319 else
1321 RETVAL_NEG_HUGE_VALL;
1322 NOT_MATHERRL {ERRNO_DOMAIN;}
1324 *(long double *)retval = excl.retval;
1325 break;
1327 case log1p_zero:
1328 /* log1p(-1) */
1330 SINGD; NAMED = (char *) "log1p";
1331 ifSVID
1333 RETVAL_NEG_HUGED;
1334 NOT_MATHERRD
1336 WRITED_LOG1P_ZERO;
1337 ERRNO_DOMAIN;
1340 else
1342 RETVAL_NEG_HUGE_VALD;
1343 NOT_MATHERRD {ERRNO_DOMAIN;}
1345 *(double *)retval = exc.retval;
1346 break;
1348 case log1pf_zero:
1349 /* log1pf(-1) */
1351 SINGF; NAMEF = (char *) "log1pf";
1352 ifSVID
1354 RETVAL_NEG_HUGEF;
1355 NOT_MATHERRF
1357 WRITEF_LOG1P_ZERO;
1358 ERRNO_DOMAIN;
1361 else
1363 RETVAL_NEG_HUGE_VALF;
1364 NOT_MATHERRF {}ERRNO_DOMAIN;
1366 *(float *)retval = excf.retval;
1367 break;
1369 case log1pl_negative:
1370 /* log1pl(x < -1) */
1372 DOMAINL; NAMEL = (char *) "log1pl";
1373 ifSVID
1375 RETVAL_NEG_HUGEL;
1376 NOT_MATHERRL
1378 WRITEL_LOG1P_NEGATIVE;
1379 ERRNO_DOMAIN;
1382 else
1384 RETVAL_NEG_HUGE_VALL;
1385 NOT_MATHERRL {ERRNO_DOMAIN;}
1387 *(long double *)retval = excl.retval;
1388 break;
1390 case log1p_negative:
1391 /* log1p(x < -1) */
1393 DOMAIND; NAMED = (char *) "log1p";
1394 ifSVID
1396 RETVAL_NEG_HUGED;
1397 NOT_MATHERRD
1399 WRITED_LOG1P_NEGATIVE;
1400 ERRNO_DOMAIN;
1403 else
1405 RETVAL_NEG_HUGE_VALD;
1406 NOT_MATHERRD {ERRNO_DOMAIN;}
1408 *(double *)retval = exc.retval;
1409 break;
1411 case log1pf_negative:
1412 /* log1pf(x < -1) */
1414 DOMAINF; NAMEF = (char *) "log1pf";
1415 ifSVID
1417 RETVAL_NEG_HUGEF;
1418 NOT_MATHERRF
1420 WRITEF_LOG1P_NEGATIVE;
1421 ERRNO_DOMAIN;
1424 else
1426 RETVAL_NEG_HUGE_VALF;
1427 NOT_MATHERRF {ERRNO_DOMAIN;}
1429 *(float *)retval = excf.retval;
1430 break;
1432 case log10l_zero:
1433 /* log10l(0) */
1435 SINGL; NAMEL = (char *) "log10l";
1436 ifSVID
1438 RETVAL_NEG_HUGEL;
1439 NOT_MATHERRL
1441 WRITEL_LOG10_ZERO;
1442 ERRNO_DOMAIN;
1445 else
1447 RETVAL_NEG_HUGE_VALL;
1448 NOT_MATHERRL {ERRNO_DOMAIN;}
1450 *(long double *)retval = excl.retval;
1451 break;
1453 case log10_zero:
1454 /* log10(0) */
1456 SINGD; NAMED = (char *) "log10";
1457 ifSVID
1459 RETVAL_NEG_HUGED;
1460 NOT_MATHERRD
1462 WRITED_LOG10_ZERO;
1463 ERRNO_DOMAIN;
1466 else
1468 RETVAL_NEG_HUGE_VALD;
1469 NOT_MATHERRD {ERRNO_DOMAIN;}
1471 *(double *)retval = exc.retval;
1472 break;
1474 case log10f_zero:
1475 /* log10f(0) */
1477 SINGF; NAMEF = (char *) "log10f";
1478 ifSVID
1480 RETVAL_NEG_HUGEF;
1481 NOT_MATHERRF
1483 WRITEF_LOG10_ZERO;
1484 ERRNO_DOMAIN;
1487 else
1489 RETVAL_NEG_HUGE_VALF;
1490 NOT_MATHERRF {ERRNO_DOMAIN;}
1492 *(float *)retval = excf.retval;
1493 break;
1495 case log10l_negative:
1496 /* log10l(x < 0) */
1498 DOMAINL; NAMEL = (char *) "log10l";
1499 ifSVID
1501 RETVAL_NEG_HUGEL;
1502 NOT_MATHERRL
1504 WRITEL_LOG10_NEGATIVE;
1505 ERRNO_DOMAIN;
1508 else
1510 RETVAL_NEG_HUGE_VALL;
1511 NOT_MATHERRL {ERRNO_DOMAIN;}
1513 *(long double *)retval = excl.retval;
1514 break;
1516 case log10_negative:
1517 /* log10(x < 0) */
1519 DOMAIND; NAMED = (char *) "log10";
1520 ifSVID
1522 RETVAL_NEG_HUGED;
1523 NOT_MATHERRD
1525 WRITED_LOG10_NEGATIVE;
1526 ERRNO_DOMAIN;
1529 else
1531 RETVAL_NEG_HUGE_VALD;
1532 NOT_MATHERRD {ERRNO_DOMAIN;}
1534 *(double *)retval = exc.retval;
1535 break;
1537 case log10f_negative:
1538 /* log10f(x < 0) */
1540 DOMAINF; NAMEF = (char *) "log10f";
1541 ifSVID
1543 RETVAL_NEG_HUGEF;
1544 NOT_MATHERRF
1546 WRITEF_LOG10_NEGATIVE;
1547 ERRNO_DOMAIN;
1550 else
1552 RETVAL_NEG_HUGE_VALF;
1553 NOT_MATHERRF {ERRNO_DOMAIN;}
1555 *(float *)retval = excf.retval;
1556 break;
1558 case expl_overflow:
1559 /* expl overflow */
1561 OVERFLOWL; NAMEL = (char *) "expl";
1562 ifSVID
1564 RETVAL_HUGEL;
1566 else
1568 RETVAL_HUGE_VALL;
1570 NOT_MATHERRL {ERRNO_RANGE;}
1571 *(long double *)retval = excl.retval;
1572 break;
1574 case exp_overflow:
1575 /* exp overflow */
1577 OVERFLOWD; NAMED = (char *) "exp";
1578 ifSVID
1580 RETVAL_HUGED;
1582 else
1584 RETVAL_HUGE_VALD;
1586 NOT_MATHERRD {ERRNO_RANGE;}
1587 *(double *)retval = exc.retval;
1588 break;
1590 case expf_overflow:
1591 /* expf overflow */
1593 OVERFLOWF; NAMEF = (char *) "expf";
1594 ifSVID
1596 RETVAL_HUGEF;
1598 else
1600 RETVAL_HUGE_VALF;
1602 NOT_MATHERRF {ERRNO_RANGE;}
1603 *(float *)retval = excf.retval;
1604 break;
1606 case expl_underflow:
1607 /* expl underflow */
1609 UNDERFLOWL; NAMEL = (char *) "expl"; RETVAL_ZEROL;
1610 NOT_MATHERRL {ERRNO_RANGE;}
1611 *(long double *)retval = excl.retval;
1612 break;
1614 case exp_underflow:
1615 /* exp underflow */
1617 UNDERFLOWD; NAMED = (char *) "exp"; RETVAL_ZEROD;
1618 NOT_MATHERRD {ERRNO_RANGE;}
1619 *(double *)retval = exc.retval;
1620 break;
1622 case expf_underflow:
1623 /* expf underflow */
1625 UNDERFLOWF; NAMEF = (char *) "expf"; RETVAL_ZEROF;
1626 NOT_MATHERRF {ERRNO_RANGE;}
1627 *(float *)retval = excf.retval;
1628 break;
1630 case powl_zero_to_zero:
1631 /* powl 0**0 */
1633 DOMAINL; NAMEL = (char *) "powl";
1634 ifSVID
1636 RETVAL_ZEROL;
1637 NOT_MATHERRL
1639 WRITEL_POW_ZERO_TO_ZERO;
1640 ERRNO_RANGE;
1642 *(long double *)retval = excl.retval;
1644 else RETVAL_ONEL;
1645 break;
1647 case pow_zero_to_zero:
1648 /* pow 0**0 */
1650 DOMAIND; NAMED = (char *) "pow";
1651 ifSVID
1653 RETVAL_ZEROD;
1654 NOT_MATHERRD
1656 WRITED_POW_ZERO_TO_ZERO;
1657 ERRNO_RANGE;
1659 *(double *)retval = exc.retval;
1661 else RETVAL_ONED;
1662 break;
1664 case powf_zero_to_zero:
1665 /* powf 0**0 */
1667 DOMAINF; NAMEF = (char *) "powf";
1668 ifSVID
1670 RETVAL_ZEROF;
1671 NOT_MATHERRF
1673 WRITEF_POW_ZERO_TO_ZERO;
1674 ERRNO_RANGE;
1676 *(float *)retval = excf.retval;
1678 else RETVAL_ONEF;
1679 break;
1681 case powl_overflow:
1682 /* powl(x,y) overflow */
1684 OVERFLOWL; NAMEL = (char *) "powl";
1685 ifSVID
1687 if (INPUT_XL < 0) RETVAL_NEG_HUGEL;
1688 else RETVAL_HUGEL;
1690 else
1692 if (INPUT_XL < 0) RETVAL_NEG_HUGE_VALL;
1693 else RETVAL_HUGE_VALL;
1695 NOT_MATHERRL {ERRNO_RANGE;}
1696 *(long double *)retval = excl.retval;
1697 break;
1699 case pow_overflow:
1700 /* pow(x,y) overflow */
1702 OVERFLOWD; NAMED = (char *) "pow";
1703 ifSVID
1705 if (INPUT_XD < 0) RETVAL_NEG_HUGED;
1706 else RETVAL_HUGED;
1708 else
1710 if (INPUT_XD < 0) RETVAL_NEG_HUGE_VALD;
1711 else RETVAL_HUGE_VALD;
1713 NOT_MATHERRD {ERRNO_RANGE;}
1714 *(double *)retval = exc.retval;
1715 break;
1717 case powf_overflow:
1718 /* powf(x,y) overflow */
1720 OVERFLOWF; NAMEF = (char *) "powf";
1721 ifSVID
1723 if (INPUT_XF < 0) RETVAL_NEG_HUGEF;
1724 else RETVAL_HUGEF;
1726 else
1728 if (INPUT_XF < 0) RETVAL_NEG_HUGE_VALF;
1729 else RETVAL_HUGE_VALF;
1731 NOT_MATHERRF {ERRNO_RANGE;}
1732 *(float *)retval = excf.retval;
1733 break;
1735 case powl_underflow:
1736 /* powl(x,y) underflow */
1738 UNDERFLOWL; NAMEL = (char *) "powl"; RETVAL_ZEROL;
1739 NOT_MATHERRL {ERRNO_RANGE;}
1740 *(long double *)retval = excl.retval;
1741 break;
1743 case pow_underflow:
1744 /* pow(x,y) underflow */
1746 UNDERFLOWD; NAMED = (char *) "pow"; RETVAL_ZEROD;
1747 NOT_MATHERRD {ERRNO_RANGE;}
1748 *(double *)retval = exc.retval;
1749 break;
1751 case powf_underflow:
1752 /* powf(x,y) underflow */
1754 UNDERFLOWF; NAMEF = (char *) "powf"; RETVAL_ZEROF;
1755 NOT_MATHERRF {ERRNO_RANGE;}
1756 *(float *)retval = excf.retval;
1757 break;
1759 case powl_zero_to_negative:
1760 /* 0 to neg */
1762 DOMAINL; NAMEL = (char *) "powl";
1763 ifSVID
1765 RETVAL_ZEROL;
1766 NOT_MATHERRL
1768 WRITEL_POW_ZERO_TO_NEGATIVE;
1769 ERRNO_DOMAIN;
1772 else
1774 RETVAL_NEG_HUGE_VALL;
1775 NOT_MATHERRL {ERRNO_DOMAIN;}
1777 *(long double *)retval = excl.retval;
1778 break;
1780 case pow_zero_to_negative:
1781 /* 0**neg */
1783 DOMAIND; NAMED = (char *) "pow";
1784 ifSVID
1786 RETVAL_ZEROD;
1787 NOT_MATHERRD
1789 WRITED_POW_ZERO_TO_NEGATIVE;
1790 ERRNO_DOMAIN;
1793 else
1795 RETVAL_NEG_HUGE_VALD;
1796 NOT_MATHERRD {ERRNO_DOMAIN;}
1798 *(double *)retval = exc.retval;
1799 break;
1801 case powf_zero_to_negative:
1802 /* 0**neg */
1804 DOMAINF; NAMEF = (char *) "powf";
1805 RETVAL_NEG_HUGE_VALF;
1806 ifSVID
1808 RETVAL_ZEROF;
1809 NOT_MATHERRF
1811 WRITEF_POW_ZERO_TO_NEGATIVE;
1812 ERRNO_DOMAIN;
1815 else
1817 RETVAL_NEG_HUGE_VALF;
1818 NOT_MATHERRF {ERRNO_DOMAIN;}
1820 *(float *)retval = excf.retval;
1821 break;
1823 case powl_neg_to_non_integer:
1824 /* neg**non_integral */
1826 DOMAINL; NAMEL = (char *) "powl";
1827 ifSVID
1829 RETVAL_ZEROF;
1830 NOT_MATHERRL
1832 WRITEL_POW_NEG_TO_NON_INTEGER;
1833 ERRNO_DOMAIN;
1836 else
1838 NOT_MATHERRL {ERRNO_DOMAIN;}
1840 *(long double *)retval = excl.retval;
1841 break;
1843 case pow_neg_to_non_integer:
1844 /* neg**non_integral */
1846 DOMAIND; NAMED = (char *) "pow";
1847 ifSVID
1849 RETVAL_ZEROD;
1850 NOT_MATHERRD
1852 WRITED_POW_NEG_TO_NON_INTEGER;
1853 ERRNO_DOMAIN;
1856 else
1858 NOT_MATHERRD {ERRNO_DOMAIN;}
1860 *(double *)retval = exc.retval;
1861 break;
1863 case powf_neg_to_non_integer:
1864 /* neg**non-integral */
1866 DOMAINF; NAMEF = (char *) "powf";
1867 ifSVID
1869 RETVAL_ZEROF;
1870 NOT_MATHERRF
1872 WRITEF_POW_NEG_TO_NON_INTEGER;
1873 ERRNO_DOMAIN;
1876 else
1878 NOT_MATHERRF {ERRNO_DOMAIN;}
1880 *(float *)retval = excf.retval;
1881 break;
1883 case powl_nan_to_zero:
1884 /* pow(NaN,0.0) */
1885 /* Special Error */
1887 DOMAINL; NAMEL = (char *) "powl"; INPUT_XL; INPUT_YL;
1888 excl.retval = *(long double *)arg1;
1889 NOT_MATHERRL {ERRNO_DOMAIN;}
1890 *(long double *)retval = excl.retval;
1891 break;
1893 case pow_nan_to_zero:
1894 /* pow(NaN,0.0) */
1895 /* Special Error */
1897 DOMAIND; NAMED = (char *) "pow"; INPUT_XD; INPUT_YD;
1898 exc.retval = *(double *)arg1;
1899 NOT_MATHERRD {ERRNO_DOMAIN;}
1900 *(double *)retval = exc.retval;
1901 break;
1903 case powf_nan_to_zero:
1904 /* powf(NaN,0.0) */
1905 /* Special Error */
1907 DOMAINF; NAMEF = (char *) "powf"; INPUT_XF; INPUT_YF;
1908 excf.retval = *(float *)arg1;
1909 NOT_MATHERRF {ERRNO_DOMAIN;}
1910 *(float *)retval = excf.retval;
1911 break;
1913 case atan2l_zero:
1914 /* atan2l(0.0,0.0) */
1916 DOMAINL; NAMEL = (char *) "atan2l";
1917 RETVAL_ZEROL;
1918 NOT_MATHERRL
1920 ifSVID
1922 WRITEL_ATAN2_ZERO_BY_ZERO;
1924 ERRNO_DOMAIN;
1926 *(long double *)retval = excl.retval;
1927 break;
1929 case atan2_zero:
1930 /* atan2(0.0,0.0) */
1932 DOMAIND; NAMED = (char *) "atan2";
1933 RETVAL_ZEROD;
1934 NOT_MATHERRD
1936 ifSVID
1938 WRITED_ATAN2_ZERO_BY_ZERO;
1940 ERRNO_DOMAIN;
1942 *(double *)retval = exc.retval;
1943 break;
1945 case atan2f_zero:
1946 /* atan2f(0.0,0.0) */
1948 DOMAINF; NAMEF = (char *) "atan2f";
1949 RETVAL_ZEROF;
1950 NOT_MATHERRF
1951 ifSVID
1953 WRITEF_ATAN2_ZERO_BY_ZERO;
1955 ERRNO_DOMAIN;
1956 *(float *)retval = excf.retval;
1957 break;
1959 case expm1_overflow:
1960 /* expm1(finite) overflow */
1961 /* Overflow is the only documented */
1962 /* special value. */
1964 ERRNO_RANGE;
1965 break;
1967 case expm1f_overflow:
1968 /* expm1f(finite) overflow */
1970 ERRNO_RANGE;
1971 break;
1973 case expm1_underflow:
1974 /* expm1(finite) underflow */
1975 /* Underflow is not documented */
1976 /* special value. */
1978 ERRNO_RANGE;
1979 break;
1981 case expm1f_underflow:
1982 /* expm1f(finite) underflow */
1984 ERRNO_RANGE;
1985 break;
1987 case scalbl_underflow:
1988 /* scalbl underflow */
1990 UNDERFLOWL; NAMEL = (char *) "scalbl";
1991 if (INPUT_XL < 0.0L) RETVAL_NEG_ZEROL;
1992 else RETVAL_ZEROL;
1993 NOT_MATHERRL {ERRNO_RANGE;}
1994 *(long double *)retval = excf.retval;
1995 break;
1997 case scalb_underflow:
1998 /* scalb underflow */
2000 UNDERFLOWD; NAMED = (char *) "scalb";
2001 if (INPUT_XD < 0.0) RETVAL_NEG_ZEROD;
2002 else RETVAL_ZEROD;
2003 NOT_MATHERRD {ERRNO_RANGE;}
2004 *(double *)retval = exc.retval;
2005 break;
2007 case scalbf_underflow:
2008 /* scalbf underflow */
2010 UNDERFLOWF; NAMEF = (char *) "scalbf";
2011 if (INPUT_XF < 0.0) RETVAL_NEG_ZEROF;
2012 else RETVAL_ZEROF;
2013 NOT_MATHERRF {ERRNO_RANGE;}
2014 *(float *)retval = excf.retval;
2015 break;
2017 case scalbl_overflow:
2018 /* scalbl overflow */
2020 OVERFLOWL; NAMEL = (char *) "scalbl";
2021 if (INPUT_XL < 0) RETVAL_NEG_HUGE_VALL;
2022 else RETVAL_HUGE_VALL;
2023 NOT_MATHERRL {ERRNO_RANGE;}
2024 *(long double *)retval = excl.retval;
2025 break;
2027 case scalb_overflow:
2028 /* scalb overflow */
2030 OVERFLOWD; NAMED = (char *) "scalb";
2031 if (INPUT_XD < 0) RETVAL_NEG_HUGE_VALD;
2032 else RETVAL_HUGE_VALD;
2033 NOT_MATHERRD {ERRNO_RANGE;}
2034 *(double *)retval = exc.retval;
2035 break;
2037 case scalbf_overflow:
2038 /* scalbf overflow */
2040 OVERFLOWF; NAMEF = (char *) "scalbf";
2041 if (INPUT_XF < 0) RETVAL_NEG_HUGE_VALF;
2042 else RETVAL_HUGE_VALF;
2043 NOT_MATHERRF {ERRNO_RANGE;}
2044 *(float *)retval = excf.retval;
2045 break;
2047 case hypotl_overflow:
2048 /* hypotl overflow */
2050 OVERFLOWL; NAMEL = (char *) "hypotl";
2051 ifSVID
2053 RETVAL_HUGEL;
2055 else
2057 RETVAL_HUGE_VALL;
2059 NOT_MATHERRL {ERRNO_RANGE;}
2060 *(long double *)retval = excl.retval;
2061 break;
2063 case hypot_overflow:
2064 /* hypot overflow */
2066 OVERFLOWD; NAMED = (char *) "hypot";
2067 ifSVID
2069 RETVAL_HUGED;
2071 else
2073 RETVAL_HUGE_VALD;
2075 NOT_MATHERRD {ERRNO_RANGE;}
2076 *(double *)retval = exc.retval;
2077 break;
2079 case hypotf_overflow:
2080 /* hypotf overflow */
2082 OVERFLOWF; NAMEF = (char *) "hypotf";
2083 ifSVID
2085 RETVAL_HUGEF;
2087 else
2089 RETVAL_HUGE_VALF;
2091 NOT_MATHERRF {ERRNO_RANGE;}
2092 *(float *)retval = excf.retval;
2093 break;
2095 case acosl_gt_one:
2096 /* acosl(x > 1) */
2098 DOMAINL; NAMEL = (char *) "acosl";
2099 RETVAL_ZEROL;
2100 ifSVID
2102 NOT_MATHERRL
2104 WRITEL_ACOS;
2105 ERRNO_DOMAIN;
2108 else
2110 NOT_MATHERRL {ERRNO_DOMAIN;}
2112 *(long double *)retval = excl.retval;
2113 break;
2115 case acos_gt_one:
2116 /* acos(x > 1) */
2118 DOMAIND; NAMED = (char *) "acos";
2119 RETVAL_ZEROD;
2120 ifSVID
2122 NOT_MATHERRD
2124 WRITED_ACOS;
2125 ERRNO_DOMAIN;
2128 else
2130 NOT_MATHERRD {ERRNO_DOMAIN;}
2132 *(double *)retval = exc.retval;
2133 break;
2135 case acosf_gt_one:
2136 /* acosf(x > 1) */
2138 DOMAINF; NAMEF = (char *) "acosf";
2139 RETVAL_ZEROF;
2140 ifSVID
2142 NOT_MATHERRF
2144 WRITEF_ACOS;
2145 ERRNO_DOMAIN;
2148 else
2150 NOT_MATHERRF {ERRNO_DOMAIN;}
2152 *(float *)retval = excf.retval;
2153 break;
2155 case asinl_gt_one:
2156 /* asinl(x > 1) */
2158 DOMAINL; NAMEL = (char *) "asinl";
2159 RETVAL_ZEROL;
2160 ifSVID
2162 NOT_MATHERRL
2164 WRITEL_ASIN;
2165 ERRNO_DOMAIN;
2168 else
2170 NOT_MATHERRL {ERRNO_DOMAIN;}
2172 *(long double *)retval = excl.retval;
2173 break;
2175 case asin_gt_one:
2176 /* asin(x > 1) */
2178 DOMAIND; NAMED = (char *) "asin";
2179 RETVAL_ZEROD;
2180 ifSVID
2182 NOT_MATHERRD
2184 WRITED_ASIN;
2185 ERRNO_DOMAIN;
2188 else
2190 NOT_MATHERRD {ERRNO_DOMAIN;}
2192 *(double *)retval = exc.retval;
2193 break;
2195 case asinf_gt_one:
2196 /* asinf(x > 1) */
2198 DOMAINF; NAMEF = (char *) "asinf";
2199 RETVAL_ZEROF;
2200 ifSVID
2202 NOT_MATHERRF
2204 WRITEF_ASIN;
2205 ERRNO_DOMAIN;
2208 else
2210 NOT_MATHERRF {ERRNO_DOMAIN;}
2212 *(float *)retval = excf.retval;
2213 break;
2215 case coshl_overflow:
2216 /* coshl overflow */
2218 OVERFLOWL; NAMEL = (char *) "coshl";
2219 ifSVID
2221 RETVAL_HUGEL;
2223 else
2225 RETVAL_HUGE_VALL;
2227 NOT_MATHERRL {ERRNO_RANGE;}
2228 *(long double *)retval = excl.retval;
2229 break;
2231 case cosh_overflow:
2232 /* cosh overflow */
2234 OVERFLOWD; NAMED = (char *) "cosh";
2235 ifSVID
2237 RETVAL_HUGED;
2239 else
2241 RETVAL_HUGE_VALD;
2243 NOT_MATHERRD {ERRNO_RANGE;}
2244 *(double *)retval = exc.retval;
2245 break;
2247 case coshf_overflow:
2248 /* coshf overflow */
2250 OVERFLOWF; NAMEF = (char *) "coshf";
2251 ifSVID
2253 RETVAL_HUGEF;
2255 else
2257 RETVAL_HUGE_VALF;
2259 NOT_MATHERRF {ERRNO_RANGE;}
2260 *(float *)retval = excf.retval;
2261 break;
2263 case sinhl_overflow:
2264 /* sinhl overflow */
2266 OVERFLOWL; NAMEL = (char *) "sinhl";
2267 ifSVID
2269 if (INPUT_XL > 0.0) RETVAL_HUGEL;
2270 else RETVAL_NEG_HUGEL;
2272 else
2274 if (INPUT_XL > 0.0) RETVAL_HUGE_VALL;
2275 else RETVAL_NEG_HUGE_VALL;
2277 NOT_MATHERRL {ERRNO_RANGE;}
2278 *(long double *)retval = excl.retval;
2279 break;
2281 case sinh_overflow:
2282 /* sinh overflow */
2284 OVERFLOWD; NAMED = (char *) "sinh";
2285 ifSVID
2287 if (INPUT_XD > 0.0) RETVAL_HUGED;
2288 else RETVAL_NEG_HUGED;
2290 else
2292 if (INPUT_XD > 0.0) RETVAL_HUGE_VALD;
2293 else RETVAL_NEG_HUGE_VALD;
2295 NOT_MATHERRD {ERRNO_RANGE;}
2296 *(double *)retval = exc.retval;
2297 break;
2299 case sinhf_overflow:
2300 /* sinhf overflow */
2302 OVERFLOWF; NAMEF = (char *) "sinhf";
2303 ifSVID
2305 if( INPUT_XF > 0.0) RETVAL_HUGEF;
2306 else RETVAL_NEG_HUGEF;
2308 else
2310 if (INPUT_XF > 0.0) RETVAL_HUGE_VALF;
2311 else RETVAL_NEG_HUGE_VALF;
2313 NOT_MATHERRF {ERRNO_RANGE;}
2314 *(float *)retval = excf.retval;
2315 break;
2317 case acoshl_lt_one:
2318 /* acoshl(x < 1) */
2320 DOMAINL; NAMEL = (char *) "acoshl";
2321 ifSVID
2323 NOT_MATHERRL
2325 WRITEL_ACOSH;
2326 ERRNO_DOMAIN;
2329 else NOT_MATHERRL {ERRNO_DOMAIN;}
2330 *(long double *)retval = excl.retval;
2331 break;
2333 case acosh_lt_one:
2334 /* acosh(x < 1) */
2336 DOMAIND; NAMED = (char *) "acosh";
2337 ifSVID
2339 NOT_MATHERRD
2341 WRITEL_ACOSH;
2342 ERRNO_DOMAIN;
2345 else NOT_MATHERRD {ERRNO_DOMAIN;}
2346 *(double *)retval = exc.retval;
2347 break;
2349 case acoshf_lt_one:
2350 /* acoshf(x < 1) */
2352 DOMAINF; NAMEF = (char *) "acoshf";
2353 ifSVID
2355 NOT_MATHERRF
2357 WRITEF_ACOSH;
2358 ERRNO_DOMAIN;
2361 else
2363 NOT_MATHERRF {ERRNO_DOMAIN;}
2365 *(float *)retval = excf.retval;
2366 ERRNO_DOMAIN; break;
2368 case atanhl_gt_one:
2369 /* atanhl(|x| > 1) */
2371 DOMAINL; NAMEL = (char *) "atanhl";
2372 ifSVID
2374 NOT_MATHERRL
2376 WRITEL_ATANH_GT_ONE;
2377 ERRNO_DOMAIN;
2380 else
2382 NOT_MATHERRL {ERRNO_DOMAIN;}
2384 break;
2386 case atanh_gt_one:
2387 /* atanh(|x| > 1) */
2389 DOMAIND; NAMED = (char *) "atanh";
2390 ifSVID
2392 NOT_MATHERRD
2394 WRITED_ATANH_GT_ONE;
2395 ERRNO_DOMAIN;
2398 else
2400 NOT_MATHERRD {ERRNO_DOMAIN;}
2402 break;
2404 case atanhf_gt_one:
2405 /* atanhf(|x| > 1) */
2407 DOMAINF; NAMEF = (char *) "atanhf";
2408 ifSVID
2410 NOT_MATHERRF
2412 WRITEF_ATANH_GT_ONE;
2413 ERRNO_DOMAIN;
2416 else
2418 NOT_MATHERRF {ERRNO_DOMAIN;}
2420 break;
2422 case atanhl_eq_one:
2423 /* atanhl(|x| == 1) */
2425 SINGL; NAMEL = (char *)"atanhl";
2426 ifSVID
2428 NOT_MATHERRL
2430 WRITEL_ATANH_EQ_ONE;
2431 ERRNO_DOMAIN;
2434 else
2436 NOT_MATHERRL {ERRNO_DOMAIN;}
2438 break;
2440 case atanh_eq_one:
2441 /* atanh(|x| == 1) */
2443 SINGD; NAMED = (char *) "atanh";
2444 ifSVID
2446 NOT_MATHERRD
2448 WRITED_ATANH_EQ_ONE;
2449 ERRNO_DOMAIN;
2452 else
2454 NOT_MATHERRD {ERRNO_DOMAIN;}
2456 break;
2458 case atanhf_eq_one:
2459 /* atanhf(|x| == 1) */
2461 SINGF; NAMEF = (char *) "atanhf";
2462 ifSVID
2464 NOT_MATHERRF
2466 WRITEF_ATANH_EQ_ONE;
2467 ERRNO_DOMAIN;
2470 else
2472 NOT_MATHERRF {ERRNO_DOMAIN;}
2474 break;
2476 case gammal_overflow:
2477 /* gammal overflow */
2479 OVERFLOWL; NAMEL = (char *) "gammal";
2480 ifSVID
2482 RETVAL_HUGEL;
2484 else
2486 RETVAL_HUGE_VALL;
2488 NOT_MATHERRL {ERRNO_RANGE;}
2489 *(long double *)retval = excl.retval;
2490 break;
2492 case gamma_overflow:
2493 /* gamma overflow */
2495 OVERFLOWD; NAMED = (char *) "gamma";
2496 ifSVID
2498 RETVAL_HUGED;
2500 else
2502 RETVAL_HUGE_VALD;
2504 NOT_MATHERRD {ERRNO_RANGE;}
2505 *(double *)retval = exc.retval;
2506 break;
2508 case gammaf_overflow:
2509 /* gammaf overflow */
2511 OVERFLOWF; NAMEF = (char *) "gammaf";
2512 ifSVID
2514 RETVAL_HUGEF;
2516 else
2518 RETVAL_HUGE_VALF;
2520 NOT_MATHERRF {ERRNO_RANGE;}
2521 *(float *)retval = excf.retval;
2522 break;
2524 case lgammal_overflow:
2525 /* lgammal overflow */
2527 OVERFLOWL; NAMEL = (char *) "lgammal";
2528 ifSVID
2530 RETVAL_HUGEL;
2532 else
2534 RETVAL_HUGE_VALL;
2536 NOT_MATHERRL {ERRNO_RANGE;}
2537 *(long double *)retval = excl.retval;
2538 break;
2540 case lgamma_overflow:
2541 /* lgamma overflow */
2543 OVERFLOWD; NAMED = (char *) "lgamma";
2544 ifSVID
2546 RETVAL_HUGED;
2548 else
2550 RETVAL_HUGE_VALD;
2552 NOT_MATHERRD {ERRNO_RANGE;}
2553 *(double *)retval = exc.retval;
2554 break;
2556 case lgammaf_overflow:
2557 /* lgammaf overflow */
2559 OVERFLOWF; NAMEF = (char *) "lgammaf";
2560 ifSVID
2562 RETVAL_HUGEF;
2564 else
2566 RETVAL_HUGE_VALF;
2568 NOT_MATHERRF {ERRNO_RANGE;}
2569 *(float *)retval = excf.retval;
2570 break;
2572 case lgammal_negative:
2573 /* lgammal -int or 0 */
2575 SINGL; NAMEL = (char *) "lgammal";
2576 ifSVID
2578 RETVAL_HUGEL;
2579 NOT_MATHERRL
2581 WRITEL_LGAMMA_NEGATIVE;
2582 ERRNO_DOMAIN;
2585 else
2587 RETVAL_HUGE_VALL;
2588 NOT_MATHERRL {ERRNO_DOMAIN;}
2590 *(long double *)retval = excl.retval;
2591 break;
2593 case lgamma_negative:
2594 /* lgamma -int or 0 */
2596 SINGD; NAMED = (char *) "lgamma";
2597 ifSVID
2599 RETVAL_HUGED;
2600 NOT_MATHERRD
2602 WRITED_LGAMMA_NEGATIVE;
2603 ERRNO_DOMAIN;
2606 else
2608 RETVAL_HUGE_VALD;
2609 NOT_MATHERRD {ERRNO_DOMAIN;}
2611 *(double *)retval = exc.retval;
2612 break;
2614 case lgammaf_negative:
2615 /* lgammaf -int or 0 */
2617 SINGF; NAMEF = (char *) "lgammaf";
2618 ifSVID
2620 RETVAL_HUGEF;
2621 NOT_MATHERRF
2623 WRITEF_LGAMMA_NEGATIVE;
2624 ERRNO_DOMAIN;
2627 else
2629 RETVAL_HUGE_VALF;
2630 NOT_MATHERRF {ERRNO_DOMAIN;}
2632 *(float *)retval = excf.retval;
2633 break;
2635 case gammal_negative:
2636 /* gammal -int or 0 */
2638 SINGL; NAMEL = (char *) "gammal";
2639 ifSVID
2641 RETVAL_HUGEL;
2642 NOT_MATHERRL
2644 WRITEL_GAMMA_NEGATIVE;
2645 ERRNO_DOMAIN;
2648 else
2650 RETVAL_HUGE_VALL;
2651 NOT_MATHERRL {ERRNO_DOMAIN;}
2653 *(long double *)retval = excl.retval;
2654 break;
2656 case gamma_negative:
2657 /* gamma -int or 0 */
2659 SINGD; NAMED = (char *) "gamma";
2660 ifSVID
2662 RETVAL_HUGED;
2663 NOT_MATHERRD
2665 WRITED_GAMMA_NEGATIVE;
2666 ERRNO_DOMAIN;
2669 else
2671 RETVAL_HUGE_VALD;
2672 NOT_MATHERRD {ERRNO_DOMAIN;}
2674 *(double *)retval = exc.retval;
2675 break;
2677 case gammaf_negative:
2678 /* gammaf -int or 0 */
2680 SINGF; NAMEF = (char *) "gammaf";
2681 ifSVID
2683 RETVAL_HUGEF;
2684 NOT_MATHERRF
2686 WRITEF_GAMMA_NEGATIVE;
2687 ERRNO_DOMAIN;
2690 else
2692 RETVAL_HUGE_VALF;
2693 NOT_MATHERRF {ERRNO_DOMAIN;}
2695 *(float *)retval = excf.retval;
2696 break;
2698 case j0l_gt_loss:
2699 /* j0l > loss */
2701 TLOSSL; NAMEL = (char *) "j0l";
2702 RETVAL_ZEROL;
2703 ifSVID
2705 NOT_MATHERRL
2707 WRITEL_J0_TLOSS;
2708 ERRNO_RANGE;
2711 else
2713 NOT_MATHERRL {ERRNO_RANGE;}
2715 *(long double *)retval = excl.retval;
2716 break;
2718 case j0_gt_loss:
2719 /* j0 > loss */
2721 TLOSSD; NAMED = (char *) "j0";
2722 RETVAL_ZEROD;
2723 ifSVID
2725 NOT_MATHERRD
2727 WRITED_J0_TLOSS;
2728 ERRNO_RANGE;
2731 else
2733 NOT_MATHERRD {ERRNO_RANGE;}
2735 *(double*)retval = exc.retval;
2736 break;
2738 case j0f_gt_loss:
2739 /* j0f > loss */
2741 TLOSSF; NAMEF = (char *) "j0f";
2742 RETVAL_ZEROF;
2743 ifSVID
2745 NOT_MATHERRF
2747 WRITEF_J0_TLOSS;
2748 ERRNO_RANGE;
2751 else
2753 NOT_MATHERRF {ERRNO_RANGE;}
2755 *(float*)retval = excf.retval;
2756 break;
2758 case j1l_gt_loss:
2759 /* j1l > loss */
2761 TLOSSL; NAMEL = (char *) "j1l";
2762 RETVAL_ZEROL;
2763 ifSVID
2765 NOT_MATHERRL
2767 WRITEL_J1_TLOSS;
2768 ERRNO_RANGE;
2771 else
2773 NOT_MATHERRL {ERRNO_RANGE;}
2775 *(long double *)retval = excl.retval;
2776 break;
2778 case j1_gt_loss:
2779 /* j1 > loss */
2781 TLOSSD; NAMED = (char *) "j1";
2782 RETVAL_ZEROD;
2783 ifSVID
2785 NOT_MATHERRD
2787 WRITED_J1_TLOSS;
2788 ERRNO_RANGE;
2791 else
2793 NOT_MATHERRD {ERRNO_RANGE;}
2795 *(double*)retval = exc.retval;
2796 break;
2798 case j1f_gt_loss:
2799 /* j1f > loss */
2801 TLOSSF; NAMEF = (char *) "j1f";
2802 RETVAL_ZEROF;
2803 ifSVID
2805 NOT_MATHERRF
2807 WRITEF_J1_TLOSS;
2808 ERRNO_RANGE;
2811 else
2813 NOT_MATHERRF {ERRNO_RANGE;}
2815 *(float*)retval = excf.retval;
2816 break;
2818 case jnl_gt_loss:
2819 /* jnl > loss */
2821 TLOSSL; NAMEL = (char *) "jnl";
2822 RETVAL_ZEROL;
2823 ifSVID
2825 NOT_MATHERRL
2827 WRITEL_JN_TLOSS;
2828 ERRNO_RANGE;
2831 else
2833 NOT_MATHERRL {ERRNO_RANGE;}
2835 *(long double *)retval = excl.retval;
2836 break;
2838 case jn_gt_loss:
2839 /* jn > loss */
2841 TLOSSD; NAMED = (char *) "jn";
2842 RETVAL_ZEROD;
2843 ifSVID
2845 NOT_MATHERRD
2847 WRITED_JN_TLOSS;
2848 ERRNO_RANGE;
2851 else
2853 NOT_MATHERRD {ERRNO_RANGE;}
2855 *(double*)retval = exc.retval;
2856 break;
2858 case jnf_gt_loss:
2859 /* jnf > loss */
2861 TLOSSF; NAMEF = (char *) "jnf";
2862 RETVAL_ZEROF;
2863 ifSVID
2865 NOT_MATHERRF
2867 WRITEF_JN_TLOSS;
2868 ERRNO_RANGE;
2871 else
2873 NOT_MATHERRF {ERRNO_RANGE;}
2875 *(float*)retval = excf.retval;
2876 break;
2878 case y0l_gt_loss:
2879 /* y0l > loss */
2881 TLOSSL; NAMEL = (char *) "y0l";
2882 RETVAL_ZEROL;
2883 ifSVID
2885 NOT_MATHERRL
2887 WRITEL_Y0_TLOSS;
2888 ERRNO_RANGE;
2891 else
2893 NOT_MATHERRL {ERRNO_RANGE;}
2895 *(long double *)retval = excl.retval;
2896 break;
2898 case y0_gt_loss:
2899 /* y0 > loss */
2901 TLOSSD; NAMED = (char *) "y0";
2902 RETVAL_ZEROD;
2903 ifSVID
2905 NOT_MATHERRD
2907 WRITED_Y0_TLOSS;
2908 ERRNO_RANGE;
2911 else
2913 NOT_MATHERRD {ERRNO_RANGE;}
2915 *(double*)retval = exc.retval;
2916 break;
2918 case y0f_gt_loss:
2919 /* y0f > loss */
2921 TLOSSF; NAMEF = (char *) "y0f";
2922 RETVAL_ZEROF;
2923 ifSVID
2925 NOT_MATHERRF
2927 WRITEF_Y0_TLOSS;
2928 ERRNO_RANGE;
2931 else
2933 NOT_MATHERRF {ERRNO_RANGE;}
2935 *(float*)retval = excf.retval;
2936 break;
2938 case y0l_zero:
2939 /* y0l(0) */
2941 DOMAINL; NAMEL = (char *) "y0l";
2942 ifSVID
2944 RETVAL_NEG_HUGEL;
2945 NOT_MATHERRL
2947 WRITEL_Y0_ZERO;
2948 ERRNO_DOMAIN;
2951 else
2953 RETVAL_NEG_HUGE_VALL;
2954 NOT_MATHERRL {ERRNO_DOMAIN;}
2956 *(long double *)retval = excl.retval;
2957 break;
2959 case y0_zero:
2960 /* y0(0) */
2962 DOMAIND; NAMED = (char *) "y0";
2963 ifSVID
2965 RETVAL_NEG_HUGED;
2966 NOT_MATHERRD
2968 WRITED_Y0_ZERO;
2969 ERRNO_DOMAIN;
2972 else
2974 RETVAL_NEG_HUGE_VALD;
2975 NOT_MATHERRD {ERRNO_DOMAIN;}
2977 *(double *)retval = exc.retval;
2978 break;
2980 case y0f_zero:
2981 /* y0f(0) */
2983 DOMAINF; NAMEF = (char *) "y0f";
2984 ifSVID
2986 RETVAL_NEG_HUGEF;
2987 NOT_MATHERRF
2989 WRITEF_Y0_ZERO;
2990 ERRNO_DOMAIN;
2993 else
2995 RETVAL_NEG_HUGE_VALF;
2996 NOT_MATHERRF {ERRNO_DOMAIN;}
2998 *(float *)retval = excf.retval;
2999 break;
3001 case y1l_gt_loss:
3002 /* y1l > loss */
3004 TLOSSL; NAMEL = (char *) "y1l";
3005 RETVAL_ZEROL;
3006 ifSVID
3008 NOT_MATHERRL
3010 WRITEL_Y1_TLOSS;
3011 ERRNO_RANGE;
3014 else
3016 NOT_MATHERRL {ERRNO_RANGE;}
3018 *(long double *)retval = excl.retval;
3019 break;
3021 case y1_gt_loss:
3022 /* y1 > loss */
3024 TLOSSD; NAMED = (char *) "y1";
3025 RETVAL_ZEROD;
3026 ifSVID
3028 NOT_MATHERRD
3030 WRITED_Y1_TLOSS;
3031 ERRNO_RANGE;
3034 else
3036 NOT_MATHERRD {ERRNO_RANGE;}
3038 *(double*)retval = exc.retval;
3039 break;
3041 case y1f_gt_loss:
3042 /* y1f > loss */
3044 TLOSSF; NAMEF = (char *) "y1f";
3045 RETVAL_ZEROF;
3046 ifSVID
3048 NOT_MATHERRF
3050 WRITEF_Y1_TLOSS;
3051 ERRNO_RANGE;
3054 else
3056 NOT_MATHERRF {ERRNO_RANGE;}
3058 *(float*)retval = excf.retval;
3059 break;
3061 case y1l_zero:
3062 /* y1l(0) */
3064 DOMAINL; NAMEL = (char *) "y1l";
3065 ifSVID
3067 RETVAL_NEG_HUGEL;
3068 NOT_MATHERRL
3070 WRITEL_Y1_ZERO;
3071 ERRNO_DOMAIN;
3074 else
3076 RETVAL_NEG_HUGE_VALL;
3077 NOT_MATHERRL {ERRNO_DOMAIN;}
3079 *(long double *)retval = excl.retval;
3080 break;
3082 case y1_zero:
3083 /* y1(0) */
3085 DOMAIND; NAMED = (char *) "y1";
3086 ifSVID
3088 RETVAL_NEG_HUGED;
3089 NOT_MATHERRD
3091 WRITED_Y1_ZERO;
3092 ERRNO_DOMAIN;
3095 else
3097 RETVAL_NEG_HUGE_VALD;
3098 NOT_MATHERRD {ERRNO_DOMAIN;}
3100 *(double *)retval = exc.retval;
3101 break;
3103 case y1f_zero:
3104 /* y1f(0) */
3106 DOMAINF; NAMEF = (char *) "y1f";
3107 ifSVID
3109 RETVAL_NEG_HUGEF;
3110 NOT_MATHERRF
3112 WRITEF_Y1_ZERO;
3113 ERRNO_DOMAIN;
3115 }else
3117 RETVAL_NEG_HUGE_VALF;
3118 NOT_MATHERRF {ERRNO_DOMAIN;}
3120 *(float *)retval = excf.retval;
3121 break;
3123 case ynl_gt_loss:
3124 /* ynl > loss */
3126 TLOSSL; NAMEL = (char *) "ynl";
3127 RETVAL_ZEROL;
3128 ifSVID
3130 NOT_MATHERRL
3132 WRITEL_YN_TLOSS;
3133 ERRNO_RANGE;
3136 else
3138 NOT_MATHERRL {ERRNO_RANGE;}
3140 *(long double *)retval = excl.retval;
3141 break;
3143 case yn_gt_loss:
3144 /* yn > loss */
3146 TLOSSD; NAMED = (char *) "yn";
3147 RETVAL_ZEROD;
3148 ifSVID
3150 NOT_MATHERRD
3152 WRITED_YN_TLOSS;
3153 ERRNO_RANGE;
3156 else
3158 NOT_MATHERRD {ERRNO_RANGE;}
3160 *(double*)retval = exc.retval;
3161 break;
3163 case ynf_gt_loss:
3164 /* ynf > loss */
3166 TLOSSF; NAMEF = (char *) "ynf";
3167 RETVAL_ZEROF;
3168 ifSVID
3170 NOT_MATHERRF
3172 WRITEF_YN_TLOSS;
3173 ERRNO_RANGE;
3176 else
3178 NOT_MATHERRF {ERRNO_RANGE;}
3180 *(float*)retval = excf.retval;
3181 break;
3183 case ynl_zero:
3184 /* ynl(0) */
3186 DOMAINL; NAMEL = (char *) "ynl";
3187 ifSVID
3189 RETVAL_NEG_HUGEL;
3190 NOT_MATHERRL
3192 WRITEL_YN_ZERO;
3193 ERRNO_DOMAIN;
3196 else
3198 RETVAL_NEG_HUGE_VALL;
3199 NOT_MATHERRL {ERRNO_DOMAIN;}
3201 *(long double *)retval = excl.retval;
3202 break;
3204 case yn_zero:
3205 /* yn(0) */
3207 DOMAIND; NAMED = (char *) "yn";
3208 ifSVID
3210 RETVAL_NEG_HUGED;
3211 NOT_MATHERRD
3213 WRITED_YN_ZERO;
3214 ERRNO_DOMAIN;
3217 else
3219 RETVAL_NEG_HUGE_VALD;
3220 NOT_MATHERRD {ERRNO_DOMAIN;}
3222 *(double *)retval = exc.retval;
3223 break;
3225 case ynf_zero:
3226 /* ynf(0) */
3228 DOMAINF; NAMEF = (char *) "ynf";
3229 ifSVID
3231 RETVAL_NEG_HUGEF;
3232 NOT_MATHERRF
3234 WRITEF_YN_ZERO;
3235 ERRNO_DOMAIN;
3238 else
3240 RETVAL_NEG_HUGE_VALF;
3241 NOT_MATHERRF {ERRNO_DOMAIN;}
3243 *(float *)retval = excf.retval;
3244 break;
3246 case y0l_negative:
3247 /* y0l(x<0) */
3249 DOMAINL; NAMEL = (char *) "y0l";
3250 ifSVID
3252 RETVAL_NEG_HUGEL;
3253 NOT_MATHERRL
3255 WRITEL_Y0_NEGATIVE;
3256 ERRNO_DOMAIN;
3259 else
3261 RETVAL_NEG_HUGE_VALL;
3262 NOT_MATHERRL {ERRNO_DOMAIN;}
3264 *(long double *)retval = excl.retval;
3265 break;
3267 case y0_negative:
3268 /* y0(x<0) */
3270 DOMAIND; NAMED = (char *) "y0";
3271 ifSVID
3273 RETVAL_NEG_HUGED;
3274 NOT_MATHERRD
3276 WRITED_Y0_NEGATIVE;
3277 ERRNO_DOMAIN;
3280 else
3282 RETVAL_NEG_HUGE_VALD;
3283 NOT_MATHERRD {ERRNO_DOMAIN;}
3285 *(double *)retval = exc.retval;
3286 break;
3288 case y0f_negative:
3289 /* y0f(x<0) */
3291 DOMAINF; NAMEF = (char *) "y0f";
3292 ifSVID
3294 RETVAL_NEG_HUGEF;
3295 NOT_MATHERRF
3297 WRITEF_Y0_NEGATIVE;
3298 ERRNO_DOMAIN;
3301 else
3303 RETVAL_NEG_HUGE_VALF;
3304 NOT_MATHERRF {ERRNO_DOMAIN;}
3306 *(float *)retval = excf.retval;
3307 break;
3309 case y1l_negative:
3310 /* y1l(x<0) */
3312 DOMAINL; NAMEL = (char *) "y1l";
3313 ifSVID
3315 RETVAL_NEG_HUGEL;
3316 NOT_MATHERRL
3318 WRITEL_Y1_NEGATIVE;
3319 ERRNO_DOMAIN;
3322 else
3324 RETVAL_NEG_HUGE_VALL;
3325 NOT_MATHERRL {ERRNO_DOMAIN;}
3327 *(long double *)retval = excl.retval;
3328 break;
3330 case y1_negative:
3331 /* y1(x<0) */
3333 DOMAIND; NAMED = (char *) "y1";
3334 ifSVID
3336 RETVAL_NEG_HUGED;
3337 NOT_MATHERRD
3339 WRITED_Y1_NEGATIUE;
3340 ERRNO_DOMAIN;
3343 else
3345 RETVAL_NEG_HUGE_VALD;
3346 NOT_MATHERRD {ERRNO_DOMAIN;}
3348 *(double *)retval = exc.retval;
3349 break;
3351 case y1f_negative:
3352 /* y1f(x<0) */
3354 DOMAINF; NAMEF = (char *) "y1f";
3355 ifSVID
3357 RETVAL_NEG_HUGEF;
3358 NOT_MATHERRF
3360 WRITEF_Y1_NEGATIVE;
3361 ERRNO_DOMAIN;
3364 else
3366 RETVAL_NEG_HUGE_VALF;
3367 NOT_MATHERRF {ERRNO_DOMAIN;}
3369 *(float *)retval = excf.retval;
3370 break;
3372 case ynl_negative:
3373 /* ynl(x<0) */
3375 DOMAINL; NAMEL = (char *) "ynl";
3376 ifSVID
3378 RETVAL_NEG_HUGEL;
3379 NOT_MATHERRL
3381 WRITEL_YN_NEGATIVE;
3382 ERRNO_DOMAIN;
3385 else
3387 RETVAL_NEG_HUGE_VALL;
3388 NOT_MATHERRL {ERRNO_DOMAIN;}
3390 *(long double *)retval = excl.retval;
3391 break;
3393 case yn_negative:
3394 /* yn(x<0) */
3396 DOMAIND; NAMED = (char *) "yn";
3397 ifSVID
3399 RETVAL_NEG_HUGED;
3400 NOT_MATHERRD
3402 WRITED_YN_NEGATIVE;
3403 ERRNO_DOMAIN;
3406 else
3408 RETVAL_NEG_HUGE_VALD;
3409 NOT_MATHERRD {ERRNO_DOMAIN;}
3411 *(double *)retval = exc.retval;
3412 break;
3414 case ynf_negative:
3415 /* ynf(x<0) */
3417 DOMAINF; NAMEF = (char *) "ynf";
3418 ifSVID
3420 RETVAL_NEG_HUGEF;
3421 NOT_MATHERRF
3423 WRITEF_YN_NEGATIVE;
3424 ERRNO_DOMAIN;
3427 else
3429 RETVAL_NEG_HUGE_VALF;
3430 NOT_MATHERRF {ERRNO_DOMAIN;}
3432 *(float *)retval = excf.retval;
3433 break;
3435 case fmodl_by_zero:
3436 /* fmodl(x,0) */
3438 DOMAINL; NAMEL = (char *) "fmodl";
3439 ifSVID
3441 *(long double *)retval = *(long double *)arg1;
3442 NOT_MATHERRL
3444 WRITEL_FMOD;
3445 ERRNO_DOMAIN;
3448 else
3449 { /* NaN already computed */
3450 NOT_MATHERRL {ERRNO_DOMAIN;}
3452 *(long double *)retval = excl.retval;
3453 break;
3455 case fmod_by_zero:
3456 /* fmod(x,0) */
3458 DOMAIND; NAMED = (char *) "fmod";
3459 ifSVID
3461 *(double *)retval = *(double *)arg1;
3462 NOT_MATHERRD
3464 WRITED_FMOD;
3465 ERRNO_DOMAIN;
3468 else
3469 { /* NaN already computed */
3470 NOT_MATHERRD {ERRNO_DOMAIN;}
3472 *(double *)retval = exc.retval;
3473 break;
3475 case fmodf_by_zero:
3476 /* fmodf(x,0) */
3478 DOMAINF; NAMEF = (char *) "fmodf";
3479 ifSVID
3481 *(float *)retval = *(float *)arg1;
3482 NOT_MATHERRF
3484 WRITEF_FMOD;
3485 ERRNO_DOMAIN;
3488 else
3490 NOT_MATHERRF {ERRNO_DOMAIN;}
3492 *(float *)retval = excf.retval;
3493 break;
3495 case remainderl_by_zero:
3496 /* remainderl(x,0) */
3498 DOMAINL; NAMEL = (char *) "remainderl";
3499 ifSVID
3501 NOT_MATHERRL
3503 WRITEL_REM;
3504 ERRNO_DOMAIN;
3507 else
3508 { /* NaN already computed */
3509 NOT_MATHERRL {ERRNO_DOMAIN;}
3511 *(long double *)retval = excl.retval;
3512 break;
3514 case remainder_by_zero:
3515 /* remainder(x,0) */
3517 DOMAIND; NAMED = (char *) "remainder";
3518 ifSVID
3520 NOT_MATHERRD
3522 WRITED_REM;
3523 ERRNO_DOMAIN;
3526 else
3527 { /* NaN already computed */
3528 NOT_MATHERRD {ERRNO_DOMAIN;}
3530 *(double *)retval = exc.retval;
3531 break;
3533 case remainderf_by_zero:
3534 /* remainderf(x,0) */
3536 DOMAINF; NAMEF = (char *) "remainderf";
3537 ifSVID
3539 NOT_MATHERRF
3541 WRITEF_REM;
3542 ERRNO_DOMAIN;
3545 else
3547 NOT_MATHERRF {ERRNO_DOMAIN;}
3549 *(float *)retval = excf.retval;
3550 break;
3552 default:
3553 abort();
3555 return;