Convert TEST_c_f tests from code to data.
[glibc.git] / math / libm-test.inc
blob9e14bf2c0e1510b95f11331f35823f7e7daa2f09
1 /* Copyright (C) 1997-2013 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Andreas Jaeger <aj@suse.de>, 1997.
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <http://www.gnu.org/licenses/>.  */
19 /* Part of testsuite for libm.
21    This file is processed by a perl script.  The resulting file has to
22    be included by a master file that defines:
24    Macros:
25    FUNC(function): converts general function name (like cos) to
26    name with correct suffix (e.g. cosl or cosf)
27    MATHCONST(x):   like FUNC but for constants (e.g convert 0.0 to 0.0L)
28    FLOAT:          floating point type to test
29    - TEST_MSG:     informal message to be displayed
30    CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat):
31    chooses one of the parameters as delta for testing
32    equality
33    PRINTF_EXPR     Floating point conversion specification to print a variable
34    of type FLOAT with printf.  PRINTF_EXPR just contains
35    the specifier, not the percent and width arguments,
36    e.g. "f".
37    PRINTF_XEXPR    Like PRINTF_EXPR, but print in hexadecimal format.
38    PRINTF_NEXPR Like PRINTF_EXPR, but print nice.  */
40 /* This testsuite has currently tests for:
41    acos, acosh, asin, asinh, atan, atan2, atanh,
42    cbrt, ceil, copysign, cos, cosh, erf, erfc, exp, exp10, exp2, expm1,
43    fabs, fdim, finite, floor, fma, fmax, fmin, fmod, fpclassify,
44    frexp, gamma, hypot,
45    ilogb, isfinite, isinf, isnan, isnormal, issignaling,
46    isless, islessequal, isgreater, isgreaterequal, islessgreater, isunordered,
47    j0, j1, jn,
48    ldexp, lgamma, log, log10, log1p, log2, logb,
49    modf, nearbyint, nextafter, nexttoward,
50    pow, remainder, remquo, rint, lrint, llrint,
51    round, lround, llround,
52    scalb, scalbn, scalbln, signbit, sin, sincos, sinh, sqrt, tan, tanh, tgamma, trunc,
53    y0, y1, yn, significand
55    and for the following complex math functions:
56    cabs, cacos, cacosh, carg, casin, casinh, catan, catanh,
57    ccos, ccosh, cexp, cimag, clog, clog10, conj, cpow, cproj, creal,
58    csin, csinh, csqrt, ctan, ctanh.
60    At the moment the following functions and macros aren't tested:
61    drem (alias for remainder),
62    lgamma_r,
63    nan,
64    pow10 (alias for exp10).
66    Parameter handling is primitive in the moment:
67    --verbose=[0..3] for different levels of output:
68    0: only error count
69    1: basic report on failed tests (default)
70    2: full report on all tests
71    -v for full output (equals --verbose=3)
72    -u for generation of an ULPs file
73  */
75 /* "Philosophy":
77    This suite tests some aspects of the correct implementation of
78    mathematical functions in libm.  Some simple, specific parameters
79    are tested for correctness but there's no exhaustive
80    testing.  Handling of specific inputs (e.g. infinity, not-a-number)
81    is also tested.  Correct handling of exceptions is checked
82    against.  These implemented tests should check all cases that are
83    specified in ISO C99.
85    Exception testing: At the moment only divide-by-zero, invalid,
86    overflow and underflow exceptions are tested.  Inexact exceptions
87    aren't checked at the moment.
89    NaN values: There exist signalling and quiet NaNs.  This implementation
90    only uses quiet NaN as parameter.  Where the sign of a NaN is
91    significant, this is not tested.  The payload of NaNs is not examined.
93    Inline functions: Inlining functions should give an improvement in
94    speed - but not in precission.  The inlined functions return
95    reasonable values for a reasonable range of input values.  The
96    result is not necessarily correct for all values and exceptions are
97    not correctly raised in all cases.  Problematic input and return
98    values are infinity, not-a-number and minus zero.  This suite
99    therefore does not check these specific inputs and the exception
100    handling for inlined mathematical functions - just the "reasonable"
101    values are checked.
103    Beware: The tests might fail for any of the following reasons:
104    - Tests are wrong
105    - Functions are wrong
106    - Floating Point Unit not working properly
107    - Compiler has errors
109    With e.g. gcc 2.7.2.2 the test for cexp fails because of a compiler error.
112    To Do: All parameter should be numbers that can be represented as
113    exact floating point values.  Currently some values cannot be
114    represented exactly and therefore the result is not the expected
115    result.  For this we will use 36 digits so that numbers can be
116    represented exactly.  */
118 #ifndef _GNU_SOURCE
119 # define _GNU_SOURCE
120 #endif
122 #include "libm-test-ulps.h"
123 #include <complex.h>
124 #include <math.h>
125 #include <float.h>
126 #include <fenv.h>
127 #include <limits.h>
129 #include <errno.h>
130 #include <stdlib.h>
131 #include <stdio.h>
132 #include <string.h>
133 #include <argp.h>
134 #include <tininess.h>
136 /* Allow platforms without all rounding modes to test properly,
137    assuming they provide an __FE_UNDEFINED in <bits/fenv.h> which
138    causes fesetround() to return failure.  */
139 #ifndef FE_TONEAREST
140 # define FE_TONEAREST   __FE_UNDEFINED
141 #endif
142 #ifndef FE_TOWARDZERO
143 # define FE_TOWARDZERO  __FE_UNDEFINED
144 #endif
145 #ifndef FE_UPWARD
146 # define FE_UPWARD      __FE_UNDEFINED
147 #endif
148 #ifndef FE_DOWNWARD
149 # define FE_DOWNWARD    __FE_UNDEFINED
150 #endif
152 /* Possible exceptions */
153 #define NO_EXCEPTION                    0x0
154 #define INVALID_EXCEPTION               0x1
155 #define DIVIDE_BY_ZERO_EXCEPTION        0x2
156 #define OVERFLOW_EXCEPTION              0x4
157 #define UNDERFLOW_EXCEPTION             0x8
158 /* The next flags signals that those exceptions are allowed but not required.   */
159 #define INVALID_EXCEPTION_OK            0x10
160 #define DIVIDE_BY_ZERO_EXCEPTION_OK     0x20
161 #define OVERFLOW_EXCEPTION_OK           0x40
162 #define UNDERFLOW_EXCEPTION_OK          0x80
163 #define EXCEPTIONS_OK INVALID_EXCEPTION_OK+DIVIDE_BY_ZERO_EXCEPTION_OK
164 /* Some special test flags, passed together with exceptions.  */
165 #define IGNORE_ZERO_INF_SIGN            0x100
166 /* Indicate errno settings required or disallowed.  */
167 #define ERRNO_UNCHANGED                 0x200
168 #define ERRNO_EDOM                      0x400
169 #define ERRNO_ERANGE                    0x800
171 /* Values underflowing only for float.  */
172 #ifdef TEST_FLOAT
173 # define UNDERFLOW_EXCEPTION_FLOAT      UNDERFLOW_EXCEPTION
174 # define UNDERFLOW_EXCEPTION_OK_FLOAT   UNDERFLOW_EXCEPTION_OK
175 #else
176 # define UNDERFLOW_EXCEPTION_FLOAT      0
177 # define UNDERFLOW_EXCEPTION_OK_FLOAT   0
178 #endif
179 /* Values underflowing only for double or types with a larger least
180    positive normal value.  */
181 #if defined TEST_FLOAT || defined TEST_DOUBLE \
182   || (defined TEST_LDOUBLE && LDBL_MIN_EXP >= DBL_MIN_EXP)
183 # define UNDERFLOW_EXCEPTION_DOUBLE     UNDERFLOW_EXCEPTION
184 # define UNDERFLOW_EXCEPTION_OK_DOUBLE  UNDERFLOW_EXCEPTION_OK
185 #else
186 # define UNDERFLOW_EXCEPTION_DOUBLE     0
187 # define UNDERFLOW_EXCEPTION_OK_DOUBLE  0
188 #endif
189 /* Values underflowing only for IBM long double or types with a larger least
190    positive normal value.  */
191 #if defined TEST_FLOAT || (defined TEST_LDOUBLE && LDBL_MIN_EXP > DBL_MIN_EXP)
192 # define UNDERFLOW_EXCEPTION_LDOUBLE_IBM        UNDERFLOW_EXCEPTION
193 #else
194 # define UNDERFLOW_EXCEPTION_LDOUBLE_IBM        0
195 #endif
196 /* Values underflowing on architectures detecting tininess before
197    rounding, but not on those detecting tininess after rounding.  */
198 #define UNDERFLOW_EXCEPTION_BEFORE_ROUNDING     (TININESS_AFTER_ROUNDING \
199                                                  ? 0                    \
200                                                  : UNDERFLOW_EXCEPTION)
202 /* Various constants (we must supply them precalculated for accuracy).  */
203 #define M_PI_6l                 .52359877559829887307710723054658383L
204 #define M_E2l                   7.389056098930650227230427460575008L
205 #define M_E3l                   20.085536923187667740928529654581719L
206 #define M_2_SQRT_PIl            3.5449077018110320545963349666822903L   /* 2 sqrt (M_PIl)  */
207 #define M_SQRT_PIl              1.7724538509055160272981674833411451L   /* sqrt (M_PIl)  */
208 #define M_LOG_SQRT_PIl          0.57236494292470008707171367567652933L  /* log(sqrt(M_PIl))  */
209 #define M_LOG_2_SQRT_PIl        1.265512123484645396488945797134706L    /* log(2*sqrt(M_PIl))  */
210 #define M_PI_34l                2.356194490192344928846982537459627163L /* 3*pi/4 */
211 #define M_PI_34_LOG10El         1.023282265381381010614337719073516828L
212 #define M_PI2_LOG10El           0.682188176920920673742891812715677885L
213 #define M_PI4_LOG10El           0.341094088460460336871445906357838943L
214 #define M_PI_LOG10El            1.364376353841841347485783625431355770L
215 #define M_1_DIV_El              0.367879441171442321595523770161460867L /* 1 div e  */
217 #define ulps_file_name "ULPs"   /* Name of the ULPs file.  */
218 static FILE *ulps_file;         /* File to document difference.  */
219 static int output_ulps;         /* Should ulps printed?  */
220 static char *output_dir;        /* Directory where generated files will be written.  */
222 static int noErrors;    /* number of errors */
223 static int noTests;     /* number of tests (without testing exceptions) */
224 static int noExcTests;  /* number of tests for exception flags */
225 static int noErrnoTests;/* number of tests for errno values */
227 static int verbose;
228 static int output_max_error;    /* Should the maximal errors printed?  */
229 static int output_points;       /* Should the single function results printed?  */
230 static int ignore_max_ulp;      /* Should we ignore max_ulp?  */
232 #define PLUS_ZERO_INIT  CHOOSE (0.0L, 0.0, 0.0f,        \
233                                 0.0L, 0.0, 0.0f)
234 #define MINUS_ZERO_INIT CHOOSE (-0.0L, -0.0, -0.0f,     \
235                                 -0.0L, -0.0, -0.0f)
236 #define PLUS_INFTY_INIT CHOOSE (HUGE_VALL, HUGE_VAL, HUGE_VALF, \
237                                 HUGE_VALL, HUGE_VAL, HUGE_VALF)
238 #define MINUS_INFTY_INIT        CHOOSE (-HUGE_VALL, -HUGE_VAL, -HUGE_VALF, \
239                                         -HUGE_VALL, -HUGE_VAL, -HUGE_VALF)
240 #define QNAN_VALUE_INIT FUNC (__builtin_nan) ("")
241 #define MAX_VALUE_INIT  CHOOSE (LDBL_MAX, DBL_MAX, FLT_MAX,     \
242                                 LDBL_MAX, DBL_MAX, FLT_MAX)
243 #define MIN_VALUE_INIT  CHOOSE (LDBL_MIN, DBL_MIN, FLT_MIN,     \
244                                 LDBL_MIN, DBL_MIN, FLT_MIN)
245 #define MIN_SUBNORM_VALUE_INIT  CHOOSE (__LDBL_DENORM_MIN__,    \
246                                         __DBL_DENORM_MIN__,     \
247                                         __FLT_DENORM_MIN__,     \
248                                         __LDBL_DENORM_MIN__,    \
249                                         __DBL_DENORM_MIN__,     \
250                                         __FLT_DENORM_MIN__)
252 static const FLOAT plus_zero = PLUS_ZERO_INIT;
253 static const FLOAT minus_zero = MINUS_ZERO_INIT;
254 static const FLOAT plus_infty = PLUS_INFTY_INIT;
255 static const FLOAT minus_infty = MINUS_INFTY_INIT;
256 static const FLOAT qnan_value = QNAN_VALUE_INIT;
257 static const FLOAT max_value = MAX_VALUE_INIT;
258 static const FLOAT min_value = MIN_VALUE_INIT;
259 static const FLOAT min_subnorm_value = MIN_SUBNORM_VALUE_INIT;
261 static FLOAT max_error, real_max_error, imag_max_error;
264 #define BUILD_COMPLEX(real, imag) \
265   ({ __complex__ FLOAT __retval;                                              \
266      __real__ __retval = (real);                                              \
267      __imag__ __retval = (imag);                                              \
268      __retval; })
269 #define BUILD_COMPLEX_ULP(real, imag) ((real) + I * (imag))
271 #define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1),  \
272                          (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
274 static void
275 init_max_error (void)
277   max_error = 0;
278   real_max_error = 0;
279   imag_max_error = 0;
280   feclearexcept (FE_ALL_EXCEPT);
281   errno = 0;
284 static void
285 set_max_error (FLOAT current, FLOAT *curr_max_error)
287   if (current > *curr_max_error)
288     *curr_max_error = current;
292 /* Print a FLOAT.  */
293 static void
294 print_float (FLOAT f)
296   /* As printf doesn't differ between a sNaN and a qNaN, do this manually.  */
297   if (issignaling (f))
298     printf ("sNaN\n");
299   else if (isnan (f))
300     printf ("qNaN\n");
301   else
302     printf ("% .20" PRINTF_EXPR "  % .20" PRINTF_XEXPR "\n", f, f);
305 /* Should the message print to screen?  This depends on the verbose flag,
306    and the test status.  */
307 static int
308 print_screen (int ok)
310   if (output_points
311       && (verbose > 1
312           || (verbose == 1 && ok == 0)))
313     return 1;
314   return 0;
318 /* Should the message print to screen?  This depends on the verbose flag,
319    and the test status.  */
320 static int
321 print_screen_max_error (int ok)
323   if (output_max_error
324       && (verbose > 1
325           || ((verbose == 1) && (ok == 0))))
326     return 1;
327   return 0;
330 /* Update statistic counters.  */
331 static void
332 update_stats (int ok)
334   ++noTests;
335   if (!ok)
336     ++noErrors;
339 static void
340 print_ulps (const char *test_name, FLOAT ulp)
342   if (output_ulps)
343     {
344       fprintf (ulps_file, "Test \"%s\":\n", test_name);
345       fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
346                CHOOSE("ldouble", "double", "float",
347                       "ildouble", "idouble", "ifloat"),
348                FUNC(ceil) (ulp));
349     }
352 static void
353 print_function_ulps (const char *function_name, FLOAT ulp)
355   if (output_ulps)
356     {
357       fprintf (ulps_file, "Function: \"%s\":\n", function_name);
358       fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
359                CHOOSE("ldouble", "double", "float",
360                       "ildouble", "idouble", "ifloat"),
361                FUNC(ceil) (ulp));
362     }
366 static void
367 print_complex_function_ulps (const char *function_name, FLOAT real_ulp,
368                              FLOAT imag_ulp)
370   if (output_ulps)
371     {
372       if (real_ulp != 0.0)
373         {
374           fprintf (ulps_file, "Function: Real part of \"%s\":\n", function_name);
375           fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
376                    CHOOSE("ldouble", "double", "float",
377                           "ildouble", "idouble", "ifloat"),
378                    FUNC(ceil) (real_ulp));
379         }
380       if (imag_ulp != 0.0)
381         {
382           fprintf (ulps_file, "Function: Imaginary part of \"%s\":\n", function_name);
383           fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
384                    CHOOSE("ldouble", "double", "float",
385                           "ildouble", "idouble", "ifloat"),
386                    FUNC(ceil) (imag_ulp));
387         }
390     }
395 /* Test if Floating-Point stack hasn't changed */
396 static void
397 fpstack_test (const char *test_name)
399 #if defined (__i386__) || defined (__x86_64__)
400   static int old_stack;
401   int sw;
403   asm ("fnstsw" : "=a" (sw));
404   sw >>= 11;
405   sw &= 7;
407   if (sw != old_stack)
408     {
409       printf ("FP-Stack wrong after test %s (%d, should be %d)\n",
410               test_name, sw, old_stack);
411       ++noErrors;
412       old_stack = sw;
413     }
414 #endif
418 static void
419 print_max_error (const char *func_name, FLOAT allowed)
421   int ok = 0;
423   if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp))
424     {
425       ok = 1;
426     }
428   if (!ok)
429     print_function_ulps (func_name, max_error);
432   if (print_screen_max_error (ok))
433     {
434       printf ("Maximal error of `%s'\n", func_name);
435       printf (" is      : %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (max_error));
436       printf (" accepted: %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (allowed));
437     }
439   update_stats (ok);
443 static void
444 print_complex_max_error (const char *func_name, __complex__ FLOAT allowed)
446   int ok = 0;
448   if ((real_max_error == 0 && imag_max_error == 0)
449       || (real_max_error <= __real__ allowed
450           && imag_max_error <= __imag__ allowed
451           && !ignore_max_ulp))
452     {
453       ok = 1;
454     }
456   if (!ok)
457     print_complex_function_ulps (func_name, real_max_error, imag_max_error);
460   if (print_screen_max_error (ok))
461     {
462       printf ("Maximal error of real part of: %s\n", func_name);
463       printf (" is      : %.0" PRINTF_NEXPR " ulp\n",
464               FUNC(ceil) (real_max_error));
465       printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
466               FUNC(ceil) (__real__ allowed));
467       printf ("Maximal error of imaginary part of: %s\n", func_name);
468       printf (" is      : %.0" PRINTF_NEXPR " ulp\n",
469               FUNC(ceil) (imag_max_error));
470       printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
471               FUNC(ceil) (__imag__ allowed));
472     }
474   update_stats (ok);
478 /* Test whether a given exception was raised.  */
479 static void
480 test_single_exception (const char *test_name,
481                        int exception,
482                        int exc_flag,
483                        int fe_flag,
484                        const char *flag_name)
486 #ifndef TEST_INLINE
487   int ok = 1;
488   if (exception & exc_flag)
489     {
490       if (fetestexcept (fe_flag))
491         {
492           if (print_screen (1))
493             printf ("Pass: %s: Exception \"%s\" set\n", test_name, flag_name);
494         }
495       else
496         {
497           ok = 0;
498           if (print_screen (0))
499             printf ("Failure: %s: Exception \"%s\" not set\n",
500                     test_name, flag_name);
501         }
502     }
503   else
504     {
505       if (fetestexcept (fe_flag))
506         {
507           ok = 0;
508           if (print_screen (0))
509             printf ("Failure: %s: Exception \"%s\" set\n",
510                     test_name, flag_name);
511         }
512       else
513         {
514           if (print_screen (1))
515             printf ("%s: Exception \"%s\" not set\n", test_name,
516                     flag_name);
517         }
518     }
519   if (!ok)
520     ++noErrors;
522 #endif
526 /* Test whether exceptions given by EXCEPTION are raised.  Ignore thereby
527    allowed but not required exceptions.
529 static void
530 test_exceptions (const char *test_name, int exception)
532   ++noExcTests;
533 #ifdef FE_DIVBYZERO
534   if ((exception & DIVIDE_BY_ZERO_EXCEPTION_OK) == 0)
535     test_single_exception (test_name, exception,
536                            DIVIDE_BY_ZERO_EXCEPTION, FE_DIVBYZERO,
537                            "Divide by zero");
538 #endif
539 #ifdef FE_INVALID
540   if ((exception & INVALID_EXCEPTION_OK) == 0)
541     test_single_exception (test_name, exception, INVALID_EXCEPTION, FE_INVALID,
542                          "Invalid operation");
543 #endif
544 #ifdef FE_OVERFLOW
545   if ((exception & OVERFLOW_EXCEPTION_OK) == 0)
546     test_single_exception (test_name, exception, OVERFLOW_EXCEPTION,
547                            FE_OVERFLOW, "Overflow");
548 #endif
549 #ifdef FE_UNDERFLOW
550   if ((exception & UNDERFLOW_EXCEPTION_OK) == 0)
551     test_single_exception (test_name, exception, UNDERFLOW_EXCEPTION,
552                            FE_UNDERFLOW, "Underflow");
553 #endif
554   feclearexcept (FE_ALL_EXCEPT);
557 /* Test whether errno for TEST_NAME, set to ERRNO_VALUE, has value
558    EXPECTED_VALUE (description EXPECTED_NAME).  */
559 static void
560 test_single_errno (const char *test_name, int errno_value,
561                    int expected_value, const char *expected_name)
563   if (errno_value == expected_value)
564     {
565       if (print_screen (1))
566         printf ("Pass: %s: errno set to %d (%s)\n", test_name, errno_value,
567                 expected_name);
568     }
569   else
570     {
571       ++noErrors;
572       if (print_screen (0))
573         printf ("Failure: %s: errno set to %d, expected %d (%s)\n",
574                 test_name, errno_value, expected_value, expected_name);
575     }
578 /* Test whether errno (value ERRNO_VALUE) has been for TEST_NAME set
579    as required by EXCEPTIONS.  */
580 static void
581 test_errno (const char *test_name, int errno_value, int exceptions)
583   ++noErrnoTests;
584   if (exceptions & ERRNO_UNCHANGED)
585     test_single_errno (test_name, errno_value, 0, "unchanged");
586   if (exceptions & ERRNO_EDOM)
587     test_single_errno (test_name, errno_value, EDOM, "EDOM");
588   if (exceptions & ERRNO_ERANGE)
589     test_single_errno (test_name, errno_value, ERANGE, "ERANGE");
592 static void
593 check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
594                       FLOAT max_ulp, int exceptions,
595                       FLOAT *curr_max_error)
597   int ok = 0;
598   int print_diff = 0;
599   FLOAT diff = 0;
600   FLOAT ulp = 0;
601   int errno_value = errno;
603   test_exceptions (test_name, exceptions);
604   test_errno (test_name, errno_value, exceptions);
605   if (issignaling (computed) && issignaling (expected))
606     ok = 1;
607   else if (issignaling (computed) || issignaling (expected))
608     ok = 0;
609   else if (isnan (computed) && isnan (expected))
610     ok = 1;
611   else if (isinf (computed) && isinf (expected))
612     {
613       /* Test for sign of infinities.  */
614       if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
615           && signbit (computed) != signbit (expected))
616         {
617           ok = 0;
618           printf ("infinity has wrong sign.\n");
619         }
620       else
621         ok = 1;
622     }
623   /* Don't calculate ULPs for infinities or any kind of NaNs.  */
624   else if (isinf (computed) || isnan (computed)
625            || isinf (expected) || isnan (expected))
626     ok = 0;
627   else
628     {
629       diff = FUNC(fabs) (computed - expected);
630       switch (fpclassify (expected))
631         {
632         case FP_ZERO:
633           /* ilogb (0) isn't allowed. */
634           ulp = diff / FUNC(ldexp) (1.0, - MANT_DIG);
635           break;
636         case FP_NORMAL:
637           ulp = diff / FUNC(ldexp) (1.0, FUNC(ilogb) (expected) - MANT_DIG);
638           break;
639         case FP_SUBNORMAL:
640           /* 1ulp for a subnormal value, shifted by MANT_DIG, is the
641              least normal value.  */
642           ulp = (FUNC(ldexp) (diff, MANT_DIG) / min_value);
643           break;
644         default:
645           /* It should never happen. */
646           abort ();
647           break;
648         }
649       set_max_error (ulp, curr_max_error);
650       print_diff = 1;
651       if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
652           && computed == 0.0 && expected == 0.0
653           && signbit(computed) != signbit (expected))
654         ok = 0;
655       else if (ulp <= 0.5 || (ulp <= max_ulp && !ignore_max_ulp))
656         ok = 1;
657       else
658         {
659           ok = 0;
660           print_ulps (test_name, ulp);
661         }
663     }
664   if (print_screen (ok))
665     {
666       if (!ok)
667         printf ("Failure: ");
668       printf ("Test: %s\n", test_name);
669       printf ("Result:\n");
670       printf (" is:         ");
671       print_float (computed);
672       printf (" should be:  ");
673       print_float (expected);
674       if (print_diff)
675         {
676           printf (" difference: % .20" PRINTF_EXPR "  % .20" PRINTF_XEXPR
677                   "\n", diff, diff);
678           printf (" ulp       : % .4" PRINTF_NEXPR "\n", ulp);
679           printf (" max.ulp   : % .4" PRINTF_NEXPR "\n", max_ulp);
680         }
681     }
682   update_stats (ok);
684   fpstack_test (test_name);
685   errno = 0;
689 static void
690 check_float (const char *test_name, FLOAT computed, FLOAT expected,
691              FLOAT max_ulp, int exceptions)
693   check_float_internal (test_name, computed, expected, max_ulp,
694                         exceptions, &max_error);
698 static void
699 check_complex (const char *test_name, __complex__ FLOAT computed,
700                __complex__ FLOAT expected,
701                __complex__ FLOAT max_ulp,
702                int exception)
704   FLOAT part_comp, part_exp, part_max_ulp;
705   char *str;
707   if (asprintf (&str, "Real part of: %s", test_name) == -1)
708     abort ();
710   part_comp = __real__ computed;
711   part_exp = __real__ expected;
712   part_max_ulp = __real__ max_ulp;
714   check_float_internal (str, part_comp, part_exp, part_max_ulp,
715                         exception, &real_max_error);
716   free (str);
718   if (asprintf (&str, "Imaginary part of: %s", test_name) == -1)
719     abort ();
721   part_comp = __imag__ computed;
722   part_exp = __imag__ expected;
723   part_max_ulp = __imag__ max_ulp;
725   /* Don't check again for exceptions or errno, just pass through the
726      zero/inf sign test.  */
727   check_float_internal (str, part_comp, part_exp, part_max_ulp,
728                         exception & IGNORE_ZERO_INF_SIGN,
729                         &imag_max_error);
730   free (str);
734 /* Check that computed and expected values are equal (int values).  */
735 static void
736 check_int (const char *test_name, int computed, int expected, int max_ulp,
737            int exceptions)
739   int diff = computed - expected;
740   int ok = 0;
741   int errno_value = errno;
743   test_exceptions (test_name, exceptions);
744   test_errno (test_name, errno_value, exceptions);
745   noTests++;
746   if (abs (diff) <= max_ulp)
747     ok = 1;
749   if (!ok)
750     print_ulps (test_name, diff);
752   if (print_screen (ok))
753     {
754       if (!ok)
755         printf ("Failure: ");
756       printf ("Test: %s\n", test_name);
757       printf ("Result:\n");
758       printf (" is:         %d\n", computed);
759       printf (" should be:  %d\n", expected);
760     }
762   update_stats (ok);
763   fpstack_test (test_name);
764   errno = 0;
768 /* Check that computed and expected values are equal (long int values).  */
769 static void
770 check_long (const char *test_name, long int computed, long int expected,
771             long int max_ulp, int exceptions)
773   long int diff = computed - expected;
774   int ok = 0;
775   int errno_value = errno;
777   test_exceptions (test_name, exceptions);
778   test_errno (test_name, errno_value, exceptions);
779   noTests++;
780   if (labs (diff) <= max_ulp)
781     ok = 1;
783   if (!ok)
784     print_ulps (test_name, diff);
786   if (print_screen (ok))
787     {
788       if (!ok)
789         printf ("Failure: ");
790       printf ("Test: %s\n", test_name);
791       printf ("Result:\n");
792       printf (" is:         %ld\n", computed);
793       printf (" should be:  %ld\n", expected);
794     }
796   update_stats (ok);
797   fpstack_test (test_name);
798   errno = 0;
802 /* Check that computed value is true/false.  */
803 static void
804 check_bool (const char *test_name, int computed, int expected,
805             long int max_ulp, int exceptions)
807   int ok = 0;
808   int errno_value = errno;
810   test_exceptions (test_name, exceptions);
811   test_errno (test_name, errno_value, exceptions);
812   noTests++;
813   if ((computed == 0) == (expected == 0))
814     ok = 1;
816   if (print_screen (ok))
817     {
818       if (!ok)
819         printf ("Failure: ");
820       printf ("Test: %s\n", test_name);
821       printf ("Result:\n");
822       printf (" is:         %d\n", computed);
823       printf (" should be:  %d\n", expected);
824     }
826   update_stats (ok);
827   fpstack_test (test_name);
828   errno = 0;
832 /* check that computed and expected values are equal (long int values) */
833 static void
834 check_longlong (const char *test_name, long long int computed,
835                 long long int expected,
836                 long long int max_ulp,
837                 int exceptions)
839   long long int diff = computed - expected;
840   int ok = 0;
841   int errno_value = errno;
843   test_exceptions (test_name, exceptions);
844   test_errno (test_name, errno_value, exceptions);
845   noTests++;
846   if (llabs (diff) <= max_ulp)
847     ok = 1;
849   if (!ok)
850     print_ulps (test_name, diff);
852   if (print_screen (ok))
853     {
854       if (!ok)
855         printf ("Failure:");
856       printf ("Test: %s\n", test_name);
857       printf ("Result:\n");
858       printf (" is:         %lld\n", computed);
859       printf (" should be:  %lld\n", expected);
860     }
862   update_stats (ok);
863   fpstack_test (test_name);
864   errno = 0;
867 /* Structures for each kind of test.  */
868 struct test_f_f_data
870   const char *test_name;
871   FLOAT arg;
872   FLOAT expected;
873   FLOAT max_ulp;
874   int exceptions;
876 struct test_ff_f_data
878   const char *test_name;
879   FLOAT arg1, arg2;
880   FLOAT expected;
881   FLOAT max_ulp;
882   int exceptions;
884 struct test_ff_f_data_nexttoward
886   const char *test_name;
887   FLOAT arg1;
888   long double arg2;
889   FLOAT expected;
890   FLOAT max_ulp;
891   int exceptions;
893 struct test_if_f_data
895   const char *test_name;
896   int arg1;
897   FLOAT arg2;
898   FLOAT expected;
899   FLOAT max_ulp;
900   int exceptions;
902 struct test_fff_f_data
904   const char *test_name;
905   FLOAT arg1, arg2, arg3;
906   FLOAT expected;
907   FLOAT max_ulp;
908   int exceptions;
910 struct test_c_f_data
912   const char *test_name;
913   FLOAT argr, argc;
914   FLOAT expected;
915   FLOAT max_ulp;
916   int exceptions;
918 struct test_c_c_data
920   const char *test_name;
921   FLOAT argr, argc;
922   FLOAT expr, expc;
923   __complex__ FLOAT max_ulp;
924   int exceptions;
927 /* Set the rounding mode, or restore the saved value.  */
928 #define IF_ROUND_INIT_  /* Empty.  */
929 #define IF_ROUND_INIT_FE_DOWNWARD               \
930   int save_round_mode = fegetround ();          \
931   if (fesetround (FE_DOWNWARD) == 0)
932 #define IF_ROUND_INIT_FE_TONEAREST              \
933   int save_round_mode = fegetround ();          \
934   if (fesetround (FE_TONEAREST) == 0)
935 #define IF_ROUND_INIT_FE_TOWARDZERO             \
936   int save_round_mode = fegetround ();          \
937   if (fesetround (FE_TOWARDZERO) == 0)
938 #define IF_ROUND_INIT_FE_UPWARD                 \
939   int save_round_mode = fegetround ();          \
940   if (fesetround (FE_UPWARD) == 0)
941 #define ROUND_RESTORE_  /* Empty.  */
942 #define ROUND_RESTORE_FE_DOWNWARD               \
943   fesetround (save_round_mode)
944 #define ROUND_RESTORE_FE_TONEAREST              \
945   fesetround (save_round_mode)
946 #define ROUND_RESTORE_FE_TOWARDZERO             \
947   fesetround (save_round_mode)
948 #define ROUND_RESTORE_FE_UPWARD                 \
949   fesetround (save_round_mode)
951 /* Run an individual test, including any required setup and checking
952    of results, or loop over all tests in an array.  */
953 #define RUN_TEST_f_f(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
954                      MAX_ULP, EXCEPTIONS)                       \
955   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,     \
956                MAX_ULP, EXCEPTIONS)
957 #define RUN_TEST_LOOP_f_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
958   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
959     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
960       RUN_TEST_f_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,    \
961                     (ARRAY)[i].expected, (ARRAY)[i].max_ulp,            \
962                     (ARRAY)[i].exceptions);                             \
963   ROUND_RESTORE_ ## ROUNDING_MODE
964 #define RUN_TEST_2_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
965                      MAX_ULP, EXCEPTIONS)                               \
966   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2), EXPECTED,      \
967                MAX_ULP, EXCEPTIONS)
968 #define RUN_TEST_LOOP_2_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
969   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
970     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
971       RUN_TEST_2_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1,   \
972                     (ARRAY)[i].arg2, (ARRAY)[i].expected,               \
973                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
974   ROUND_RESTORE_ ## ROUNDING_MODE
975 #define RUN_TEST_ff_f RUN_TEST_2_f
976 #define RUN_TEST_LOOP_ff_f RUN_TEST_LOOP_2_f
977 #define RUN_TEST_fi_f RUN_TEST_2_f
978 #define RUN_TEST_fl_f RUN_TEST_2_f
979 #define RUN_TEST_if_f RUN_TEST_2_f
980 #define RUN_TEST_LOOP_if_f RUN_TEST_LOOP_2_f
981 #define RUN_TEST_fff_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, ARG3,  \
982                        EXPECTED, MAX_ULP, EXCEPTIONS)           \
983   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2, ARG3),  \
984                EXPECTED, MAX_ULP, EXCEPTIONS)
985 #define RUN_TEST_LOOP_fff_f(FUNC_NAME, ARRAY, ROUNDING_MODE)            \
986   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
987     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
988       RUN_TEST_fff_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1, \
989                       (ARRAY)[i].arg2, (ARRAY)[i].arg3,                 \
990                       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,          \
991                       (ARRAY)[i].exceptions);                           \
992   ROUND_RESTORE_ ## ROUNDING_MODE
993 #define RUN_TEST_c_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
994                      MAX_ULP, EXCEPTIONS)                               \
995   check_float (TEST_NAME,                                               \
996                FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1, ARG2)),           \
997                EXPECTED, MAX_ULP, EXCEPTIONS)
998 #define RUN_TEST_LOOP_c_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
999   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1000     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1001       RUN_TEST_c_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].argr,   \
1002                     (ARRAY)[i].argc, (ARRAY)[i].expected,               \
1003                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1004   ROUND_RESTORE_ ## ROUNDING_MODE
1005 #define RUN_TEST_f_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,              \
1006                       MAX_ULP, EXCEPTIONS,                              \
1007                       EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,    \
1008                       EXTRA_EXPECTED, EXTRA_ULP)                        \
1009   do                                                                    \
1010     {                                                                   \
1011       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1012       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,         \
1013                    MAX_ULP, EXCEPTIONS);                                \
1014       if (EXTRA_TEST)                                                   \
1015         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1016                    EXTRA_ULP, 0);                                       \
1017     }                                                                   \
1018   while (0)
1019 #define RUN_TEST_fF_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
1020                        MAX_ULP, EXCEPTIONS,                             \
1021                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
1022                        EXTRA_EXPECTED, EXTRA_ULP)                       \
1023   do                                                                    \
1024     {                                                                   \
1025       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1026       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1027                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1028       if (EXTRA_TEST)                                                   \
1029         check_float (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,             \
1030                      EXTRA_ULP, 0);                                     \
1031     }                                                                   \
1032   while (0)
1033 #define RUN_TEST_fI_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
1034                        MAX_ULP, EXCEPTIONS,                             \
1035                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
1036                        EXTRA_EXPECTED, EXTRA_ULP)                       \
1037   do                                                                    \
1038     {                                                                   \
1039       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1040       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1041                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1042       if (EXTRA_TEST)                                                   \
1043         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1044                    EXTRA_ULP, 0);                                       \
1045     }                                                                   \
1046   while (0)
1047 #define RUN_TEST_ffI_f1(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,     \
1048                         MAX_ULP, EXCEPTIONS,                            \
1049                         EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,  \
1050                         EXTRA_EXPECTED, EXTRA_ULP)                      \
1051   do                                                                    \
1052     {                                                                   \
1053       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1054       check_float (TEST_NAME,                                           \
1055                    FUNC (FUNC_NAME) (ARG1, ARG2, &(EXTRA_VAR)),         \
1056                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1057       if (EXTRA_TEST)                                                   \
1058         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1059                    EXTRA_ULP, 0);                                       \
1060     }                                                                   \
1061   while (0)
1062 #define RUN_TEST_c_c(TEST_NAME, FUNC_NAME, ARGR, ARGC, EXPR, EXPC,      \
1063                      MAX_ULP, EXCEPTIONS)                               \
1064   check_complex (TEST_NAME,                                             \
1065                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARGR, ARGC)),         \
1066                  BUILD_COMPLEX (EXPR, EXPC),                            \
1067                  MAX_ULP, EXCEPTIONS)
1068 #define RUN_TEST_LOOP_c_c(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1069   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1070     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1071       RUN_TEST_c_c ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].argr,   \
1072                     (ARRAY)[i].argc, (ARRAY)[i].expr, (ARRAY)[i].expc,  \
1073                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1074   ROUND_RESTORE_ ## ROUNDING_MODE
1075 #define RUN_TEST_cc_c(TEST_NAME, FUNC_NAME, ARG1R, ARG1C, ARG2R, ARG2C, \
1076                       EXPR, EXPC, MAX_ULP, EXCEPTIONS)                  \
1077   check_complex (TEST_NAME,                                             \
1078                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1R, ARG1C),        \
1079                                    BUILD_COMPLEX (ARG2R, ARG2C)),       \
1080                  BUILD_COMPLEX (EXPR, EXPC),                            \
1081                  MAX_ULP, EXCEPTIONS)
1082 #define RUN_TEST_f_i(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1083                      MAX_ULP, EXCEPTIONS)                       \
1084   check_int (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,       \
1085              MAX_ULP, EXCEPTIONS)
1086 #define RUN_TEST_f_i_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1087                         MAX_ULP, EXCEPTIONS)                    \
1088   check_int (TEST_NAME, FUNC_NAME (ARG), EXPECTED,              \
1089              MAX_ULP, EXCEPTIONS)
1090 #define RUN_TEST_ff_i_tg(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,    \
1091                          MAX_ULP, EXCEPTIONS)                           \
1092   check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED,               \
1093              MAX_ULP, EXCEPTIONS)
1094 #define RUN_TEST_f_b(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1095                      MAX_ULP, EXCEPTIONS)                       \
1096   check_bool (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1097               MAX_ULP, EXCEPTIONS)
1098 #define RUN_TEST_f_b_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1099                         MAX_ULP, EXCEPTIONS)                    \
1100   check_bool (TEST_NAME, FUNC_NAME (ARG), EXPECTED,             \
1101               MAX_ULP, EXCEPTIONS)
1102 #define RUN_TEST_f_l(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1103                      MAX_ULP, EXCEPTIONS)                       \
1104   check_long (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1105               MAX_ULP, EXCEPTIONS)
1106 #define RUN_TEST_f_L(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1107                      MAX_ULP, EXCEPTIONS)                       \
1108   check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,  \
1109                   MAX_ULP, EXCEPTIONS)
1110 #define RUN_TEST_sincos(ARG, TEST_NAME_SIN, SIN_RES_VAR, EXPECTED_SIN,  \
1111                         MAX_ULP_SIN, TEST_NAME_COS, COS_RES_VAR,        \
1112                         EXPECTED_COS, MAX_ULP_COS, EXCEPTIONS)          \
1113   do                                                                    \
1114     {                                                                   \
1115       FUNC (sincos) (ARG, &(SIN_RES_VAR), &(COS_RES_VAR));              \
1116       check_float (TEST_NAME_SIN, SIN_RES_VAR,                          \
1117                    EXPECTED_SIN, MAX_ULP_SIN, EXCEPTIONS);              \
1118       check_float (TEST_NAME_COS, COS_RES_VAR,                          \
1119                    EXPECTED_COS, MAX_ULP_COS, 0);                       \
1120     }                                                                   \
1121   while (0)
1125 /* This is to prevent messages from the SVID libm emulation.  */
1127 matherr (struct exception *x __attribute__ ((unused)))
1129   return 1;
1133 /****************************************************************************
1134   Tests for single functions of libm.
1135   Please keep them alphabetically sorted!
1136 ****************************************************************************/
1138 static const struct test_f_f_data acos_test_data[] =
1139   {
1140     START_DATA (acos),
1141     TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION),
1142     TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION),
1143     TEST_f_f (acos, qnan_value, qnan_value),
1145     /* |x| > 1: */
1146     TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION),
1147     TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION),
1148     TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION),
1149     TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION),
1151     TEST_f_f (acos, 0, M_PI_2l),
1152     TEST_f_f (acos, minus_zero, M_PI_2l),
1153     TEST_f_f (acos, 1, 0),
1154     TEST_f_f (acos, -1, M_PIl),
1155     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1156     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1157     TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L),
1158     TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L),
1159     TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L),
1160     TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L),
1161     TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L),
1162 #ifndef TEST_FLOAT
1163     TEST_f_f (acos, 0x0.ffffffff8p0L, 1.5258789062648029736620564947844627548516e-5L),
1164     TEST_f_f (acos, -0x0.ffffffff8p0L, 3.1415773948007305904329067627145550395696L),
1165     TEST_f_f (acos, 0x0.ffffffffffffp0L, 8.4293697021788088529885473244391795127130e-8L),
1166     TEST_f_f (acos, -0x0.ffffffffffffp0L, 3.1415925692960962166745548533940296398054L),
1167 #endif
1168 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1169     TEST_f_f (acos, 0x0.ffffffffffffffffp0L, 3.2927225399135962333718255320079907245059e-10L),
1170     TEST_f_f (acos, -0x0.ffffffffffffffffp0L, 3.1415926532605209844712837599423203309964L),
1171 #endif
1172     END_DATA (acos)
1173   };
1175 static void
1176 acos_test (void)
1178   errno = 0;
1179   FUNC(acos) (0);
1180   if (errno == ENOSYS)
1181     /* Function not implemented.  */
1182     return;
1184   START (acos);
1185   RUN_TEST_LOOP_f_f (acos, acos_test_data, );
1186   END (acos);
1190 static const struct test_f_f_data acos_tonearest_test_data[] =
1191   {
1192     START_DATA (acos_tonearest),
1193     TEST_f_f (acos, 0, M_PI_2l),
1194     TEST_f_f (acos, minus_zero, M_PI_2l),
1195     TEST_f_f (acos, 1, 0),
1196     TEST_f_f (acos, -1, M_PIl),
1197     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1198     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1199     END_DATA (acos_tonearest)
1200   };
1202 static void
1203 acos_test_tonearest (void)
1205   errno = 0;
1206   FUNC(acos) (0);
1207   if (errno == ENOSYS)
1208     /* Function not implemented.  */
1209     return;
1211   START (acos_tonearest);
1212   RUN_TEST_LOOP_f_f (acos, acos_tonearest_test_data, FE_TONEAREST);
1213   END (acos_tonearest);
1217 static const struct test_f_f_data acos_towardzero_test_data[] =
1218   {
1219     START_DATA (acos_towardzero),
1220     TEST_f_f (acos, 0, M_PI_2l),
1221     TEST_f_f (acos, minus_zero, M_PI_2l),
1222     TEST_f_f (acos, 1, 0),
1223     TEST_f_f (acos, -1, M_PIl),
1224     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1225     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1226     END_DATA (acos_towardzero)
1227   };
1229 static void
1230 acos_test_towardzero (void)
1232   errno = 0;
1233   FUNC(acos) (0);
1234   if (errno == ENOSYS)
1235     /* Function not implemented.  */
1236     return;
1238   START (acos_towardzero);
1239   RUN_TEST_LOOP_f_f (acos, acos_towardzero_test_data, FE_TOWARDZERO);
1240   END (acos_towardzero);
1244 static const struct test_f_f_data acos_downward_test_data[] =
1245   {
1246     START_DATA (acos_downward),
1247     TEST_f_f (acos, 0, M_PI_2l),
1248     TEST_f_f (acos, minus_zero, M_PI_2l),
1249     TEST_f_f (acos, 1, 0),
1250     TEST_f_f (acos, -1, M_PIl),
1251     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1252     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1253     END_DATA (acos_downward)
1254   };
1256 static void
1257 acos_test_downward (void)
1259   errno = 0;
1260   FUNC(acos) (0);
1261   if (errno == ENOSYS)
1262     /* Function not implemented.  */
1263     return;
1265   START (acos_downward);
1266   RUN_TEST_LOOP_f_f (acos, acos_downward_test_data, FE_DOWNWARD);
1267   END (acos_downward);
1271 static const struct test_f_f_data acos_upward_test_data[] =
1272   {
1273     START_DATA (acos_upward),
1274     TEST_f_f (acos, 0, M_PI_2l),
1275     TEST_f_f (acos, minus_zero, M_PI_2l),
1276     TEST_f_f (acos, 1, 0),
1277     TEST_f_f (acos, -1, M_PIl),
1278     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1279     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1280     END_DATA (acos_upward)
1281   };
1283 static void
1284 acos_test_upward (void)
1286   errno = 0;
1287   FUNC(acos) (0);
1288   if (errno == ENOSYS)
1289     /* Function not implemented.  */
1290     return;
1292   START (acos_upward);
1293   RUN_TEST_LOOP_f_f (acos, acos_upward_test_data, FE_UPWARD);
1294   END (acos_upward);
1297 static const struct test_f_f_data acosh_test_data[] =
1298   {
1299     START_DATA (acosh),
1300     TEST_f_f (acosh, plus_infty, plus_infty),
1301     TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION),
1302     TEST_f_f (acosh, qnan_value, qnan_value),
1304     /* x < 1:  */
1305     TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION),
1306     TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION),
1308     TEST_f_f (acosh, 1, 0),
1309     TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L),
1310     END_DATA (acosh)
1311   };
1313 static void
1314 acosh_test (void)
1316   errno = 0;
1317   FUNC(acosh) (7);
1318   if (errno == ENOSYS)
1319     /* Function not implemented.  */
1320     return;
1322   START (acosh);
1323   RUN_TEST_LOOP_f_f (acosh, acosh_test_data, );
1324   END (acosh);
1327 static const struct test_f_f_data asin_test_data[] =
1328   {
1329     START_DATA (asin),
1330     TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION),
1331     TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION),
1332     TEST_f_f (asin, qnan_value, qnan_value),
1334     /* asin x == qNaN plus invalid exception for |x| > 1.  */
1335     TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION),
1336     TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION),
1337     TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION),
1338     TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION),
1340     TEST_f_f (asin, 0, 0),
1341     TEST_f_f (asin, minus_zero, minus_zero),
1342     TEST_f_f (asin, 0.5, M_PI_6l),
1343     TEST_f_f (asin, -0.5, -M_PI_6l),
1344     TEST_f_f (asin, 1.0, M_PI_2l),
1345     TEST_f_f (asin, -1.0, -M_PI_2l),
1346     TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L),
1347     TEST_f_f (asin, 0x0.ffffffp0L, 1.5704510598101804156437184421571127056013L),
1348     TEST_f_f (asin, -0x0.ffffffp0L, -1.5704510598101804156437184421571127056013L),
1349 #ifndef TEST_FLOAT
1350     TEST_f_f (asin, 0x0.ffffffff8p0L, 1.5707810680058339712015850710748035974710L),
1351     TEST_f_f (asin, -0x0.ffffffff8p0L, -1.5707810680058339712015850710748035974710L),
1352     TEST_f_f (asin, 0x0.ffffffffffffp0L, 1.5707962425011995974432331617542781977068L),
1353     TEST_f_f (asin, -0x0.ffffffffffffp0L, -1.5707962425011995974432331617542781977068L),
1354 #endif
1355 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1356     TEST_f_f (asin, 0x0.ffffffffffffffffp0L, 1.5707963264656243652399620683025688888978L),
1357     TEST_f_f (asin, -0x0.ffffffffffffffffp0L, -1.5707963264656243652399620683025688888978L),
1358 #endif
1359     END_DATA (asin)
1360   };
1362 static void
1363 asin_test (void)
1365   errno = 0;
1366   FUNC(asin) (0);
1367   if (errno == ENOSYS)
1368     /* Function not implemented.  */
1369     return;
1371   START (asin);
1372   RUN_TEST_LOOP_f_f (asin, asin_test_data, );
1373   END (asin);
1377 static const struct test_f_f_data asin_tonearest_test_data[] =
1378   {
1379     START_DATA (asin_tonearest),
1380     TEST_f_f (asin, 0, 0),
1381     TEST_f_f (asin, minus_zero, minus_zero),
1382     TEST_f_f (asin, 0.5, M_PI_6l),
1383     TEST_f_f (asin, -0.5, -M_PI_6l),
1384     TEST_f_f (asin, 1.0, M_PI_2l),
1385     TEST_f_f (asin, -1.0, -M_PI_2l),
1386     END_DATA (asin_tonearest)
1387   };
1389 static void
1390 asin_test_tonearest (void)
1392   errno = 0;
1393   FUNC(asin) (0);
1394   if (errno == ENOSYS)
1395     /* Function not implemented.  */
1396     return;
1398   START (asin_tonearest);
1399   RUN_TEST_LOOP_f_f (asin, asin_tonearest_test_data, FE_TONEAREST);
1400   END (asin_tonearest);
1404 static const struct test_f_f_data asin_towardzero_test_data[] =
1405   {
1406     START_DATA (asin_towardzero),
1407     TEST_f_f (asin, 0, 0),
1408     TEST_f_f (asin, minus_zero, minus_zero),
1409     TEST_f_f (asin, 0.5, M_PI_6l),
1410     TEST_f_f (asin, -0.5, -M_PI_6l),
1411     TEST_f_f (asin, 1.0, M_PI_2l),
1412     TEST_f_f (asin, -1.0, -M_PI_2l),
1413     END_DATA (asin_towardzero)
1414   };
1416 static void
1417 asin_test_towardzero (void)
1419   errno = 0;
1420   FUNC(asin) (0);
1421   if (errno == ENOSYS)
1422     /* Function not implemented.  */
1423     return;
1425   START (asin_towardzero);
1426   RUN_TEST_LOOP_f_f (asin, asin_towardzero_test_data, FE_TOWARDZERO);
1427   END (asin_towardzero);
1431 static const struct test_f_f_data asin_downward_test_data[] =
1432   {
1433     START_DATA (asin_downward),
1434     TEST_f_f (asin, 0, 0),
1435     TEST_f_f (asin, minus_zero, minus_zero),
1436     TEST_f_f (asin, 0.5, M_PI_6l),
1437     TEST_f_f (asin, -0.5, -M_PI_6l),
1438     TEST_f_f (asin, 1.0, M_PI_2l),
1439     TEST_f_f (asin, -1.0, -M_PI_2l),
1440     END_DATA (asin_downward)
1441   };
1443 static void
1444 asin_test_downward (void)
1446   errno = 0;
1447   FUNC(asin) (0);
1448   if (errno == ENOSYS)
1449     /* Function not implemented.  */
1450     return;
1452   START (asin_downward);
1453   RUN_TEST_LOOP_f_f (asin, asin_downward_test_data, FE_DOWNWARD);
1454   END (asin_downward);
1458 static const struct test_f_f_data asin_upward_test_data[] =
1459   {
1460     START_DATA (asin_upward),
1461     TEST_f_f (asin, 0, 0),
1462     TEST_f_f (asin, minus_zero, minus_zero),
1463     TEST_f_f (asin, 0.5, M_PI_6l),
1464     TEST_f_f (asin, -0.5, -M_PI_6l),
1465     TEST_f_f (asin, 1.0, M_PI_2l),
1466     TEST_f_f (asin, -1.0, -M_PI_2l),
1467     END_DATA (asin_upward)
1468   };
1470 static void
1471 asin_test_upward (void)
1473   errno = 0;
1474   FUNC(asin) (0);
1475   if (errno == ENOSYS)
1476     /* Function not implemented.  */
1477     return;
1479   START (asin_upward);
1480   RUN_TEST_LOOP_f_f (asin, asin_upward_test_data, FE_UPWARD);
1481   END (asin_upward);
1484 static const struct test_f_f_data asinh_test_data[] =
1485   {
1486     START_DATA (asinh),
1487     TEST_f_f (asinh, 0, 0),
1488     TEST_f_f (asinh, minus_zero, minus_zero),
1489 #ifndef TEST_INLINE
1490     TEST_f_f (asinh, plus_infty, plus_infty),
1491     TEST_f_f (asinh, minus_infty, minus_infty),
1492 #endif
1493     TEST_f_f (asinh, qnan_value, qnan_value),
1494     TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L),
1495     END_DATA (asinh)
1496   };
1498 static void
1499 asinh_test (void)
1501   errno = 0;
1502   FUNC(asinh) (0.7L);
1503   if (errno == ENOSYS)
1504     /* Function not implemented.  */
1505     return;
1507   START (asinh);
1508   RUN_TEST_LOOP_f_f (asinh, asinh_test_data, );
1509   END (asinh);
1512 static const struct test_f_f_data atan_test_data[] =
1513   {
1514     START_DATA (atan),
1515     TEST_f_f (atan, 0, 0),
1516     TEST_f_f (atan, minus_zero, minus_zero),
1518     TEST_f_f (atan, plus_infty, M_PI_2l),
1519     TEST_f_f (atan, minus_infty, -M_PI_2l),
1520     TEST_f_f (atan, qnan_value, qnan_value),
1521     TEST_f_f (atan, max_value, M_PI_2l),
1522     TEST_f_f (atan, -max_value, -M_PI_2l),
1524     TEST_f_f (atan, 1, M_PI_4l),
1525     TEST_f_f (atan, -1, -M_PI_4l),
1527     TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L),
1529     TEST_f_f (atan, 0x1p-100L, 0x1p-100L),
1530 #ifndef TEST_FLOAT
1531     TEST_f_f (atan, 0x1p-600L, 0x1p-600L),
1532 #endif
1533 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1534     TEST_f_f (atan, 0x1p-10000L, 0x1p-10000L),
1535 #endif
1536     END_DATA (atan)
1537   };
1539 static void
1540 atan_test (void)
1542   errno = 0;
1543   FUNC(atan) (0);
1544   if (errno == ENOSYS)
1545     /* Function not implemented.  */
1546     return;
1548   START (atan);
1549   RUN_TEST_LOOP_f_f (atan, atan_test_data, );
1550   END (atan);
1555 static const struct test_f_f_data atanh_test_data[] =
1556   {
1557     START_DATA (atanh),
1558     TEST_f_f (atanh, 0, 0),
1559     TEST_f_f (atanh, minus_zero, minus_zero),
1561     TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1562     TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1563     TEST_f_f (atanh, qnan_value, qnan_value),
1565     /* atanh (x) == qNaN plus invalid exception if |x| > 1.  */
1566     TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION),
1567     TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION),
1568     TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION),
1569     TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION),
1571     TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L),
1572     END_DATA (atanh)
1573   };
1575 static void
1576 atanh_test (void)
1578   errno = 0;
1579   FUNC(atanh) (0.7L);
1580   if (errno == ENOSYS)
1581     /* Function not implemented.  */
1582     return;
1584   START (atanh);
1585   RUN_TEST_LOOP_f_f (atanh, atanh_test_data, );
1586   END (atanh);
1589 static const struct test_ff_f_data atan2_test_data[] =
1590   {
1591     START_DATA (atan2),
1592     /* atan2 (0,x) == 0 for x > 0.  */
1593     TEST_ff_f (atan2, 0, 1, 0),
1595     /* atan2 (-0,x) == -0 for x > 0.  */
1596     TEST_ff_f (atan2, minus_zero, 1, minus_zero),
1598     TEST_ff_f (atan2, 0, 0, 0),
1599     TEST_ff_f (atan2, minus_zero, 0, minus_zero),
1601     /* atan2 (+0,x) == +pi for x < 0.  */
1602     TEST_ff_f (atan2, 0, -1, M_PIl),
1604     /* atan2 (-0,x) == -pi for x < 0.  */
1605     TEST_ff_f (atan2, minus_zero, -1, -M_PIl),
1607     TEST_ff_f (atan2, 0, minus_zero, M_PIl),
1608     TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl),
1610     /* atan2 (y,+0) == pi/2 for y > 0.  */
1611     TEST_ff_f (atan2, 1, 0, M_PI_2l),
1613     /* atan2 (y,-0) == pi/2 for y > 0.  */
1614     TEST_ff_f (atan2, 1, minus_zero, M_PI_2l),
1616     /* atan2 (y,+0) == -pi/2 for y < 0.  */
1617     TEST_ff_f (atan2, -1, 0, -M_PI_2l),
1619     /* atan2 (y,-0) == -pi/2 for y < 0.  */
1620     TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l),
1622     /* atan2 (y,inf) == +0 for finite y > 0.  */
1623     TEST_ff_f (atan2, 1, plus_infty, 0),
1625     /* atan2 (y,inf) == -0 for finite y < 0.  */
1626     TEST_ff_f (atan2, -1, plus_infty, minus_zero),
1628     /* atan2(+inf, x) == pi/2 for finite x.  */
1629     TEST_ff_f (atan2, plus_infty, -1, M_PI_2l),
1631     /* atan2(-inf, x) == -pi/2 for finite x.  */
1632     TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l),
1634     /* atan2 (y,-inf) == +pi for finite y > 0.  */
1635     TEST_ff_f (atan2, 1, minus_infty, M_PIl),
1637     /* atan2 (y,-inf) == -pi for finite y < 0.  */
1638     TEST_ff_f (atan2, -1, minus_infty, -M_PIl),
1640     TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l),
1641     TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l),
1642     TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l),
1643     TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l),
1644     TEST_ff_f (atan2, qnan_value, qnan_value, qnan_value),
1646     TEST_ff_f (atan2, max_value, max_value, M_PI_4l),
1648     TEST_ff_f (atan2, max_value, min_value, M_PI_2l),
1649     TEST_ff_f (atan2, -max_value, -min_value, -M_PI_2l),
1651     TEST_ff_f (atan2, 0.75L, 1, 0.643501108793284386802809228717322638L),
1652     TEST_ff_f (atan2, -0.75L, 1.0L, -0.643501108793284386802809228717322638L),
1653     TEST_ff_f (atan2, 0.75L, -1.0L, 2.49809154479650885165983415456218025L),
1654     TEST_ff_f (atan2, -0.75L, -1.0L, -2.49809154479650885165983415456218025L),
1655     TEST_ff_f (atan2, 0.390625L, .00029L, 1.57005392693128974780151246612928941L),
1656     TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L),
1658     TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L),
1659 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1660     TEST_ff_f (atan2, 0x1.00000000000001p0L, 0x1.00000000000001p0L, M_PI_4l),
1661 #endif
1662     END_DATA (atan2)
1663   };
1665 static void
1666 atan2_test (void)
1668   errno = 0;
1669   FUNC(atan2) (-0, 1);
1670   if (errno == ENOSYS)
1671     /* Function not implemented.  */
1672     return;
1674   START (atan2);
1675   RUN_TEST_LOOP_ff_f (atan2, atan2_test_data, );
1676   END (atan2);
1679 static const struct test_c_f_data cabs_test_data[] =
1680   {
1681     START_DATA (cabs);
1682     /* cabs (x + iy) is specified as hypot (x,y) */
1684     /* cabs (+inf + i x) == +inf.  */
1685     TEST_c_f (cabs, plus_infty, 1.0, plus_infty),
1686     /* cabs (-inf + i x) == +inf.  */
1687     TEST_c_f (cabs, minus_infty, 1.0, plus_infty),
1689     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1690     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1692     TEST_c_f (cabs, qnan_value, qnan_value, qnan_value),
1694     /* cabs (x,y) == cabs (y,x).  */
1695     TEST_c_f (cabs, 0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1696     /* cabs (x,y) == cabs (-x,y).  */
1697     TEST_c_f (cabs, -12.390625L, 0.75L, 12.4133028598606664302388810868156657L),
1698     /* cabs (x,y) == cabs (-y,x).  */
1699     TEST_c_f (cabs, -0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1700     /* cabs (x,y) == cabs (-x,-y).  */
1701     TEST_c_f (cabs, -12.390625L, -0.75L, 12.4133028598606664302388810868156657L),
1702     /* cabs (x,y) == cabs (-y,-x).  */
1703     TEST_c_f (cabs, -0.75L, -12.390625L, 12.4133028598606664302388810868156657L),
1704     /* cabs (x,0) == fabs (x).  */
1705     TEST_c_f (cabs, -0.75L, 0, 0.75L),
1706     TEST_c_f (cabs, 0.75L, 0, 0.75L),
1707     TEST_c_f (cabs, -1.0L, 0, 1.0L),
1708     TEST_c_f (cabs, 1.0L, 0, 1.0L),
1709     TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L),
1710     TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L),
1712     TEST_c_f (cabs, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
1713     END_DATA (cabs);
1714   };
1716 static void
1717 cabs_test (void)
1719   errno = 0;
1720   FUNC(cabs) (BUILD_COMPLEX (0.7L, 12.4L));
1721   if (errno == ENOSYS)
1722     /* Function not implemented.  */
1723     return;
1725   START (cabs);
1726   RUN_TEST_LOOP_c_f (cabs, cabs_test_data, );
1727   END (cabs);
1731 static const struct test_c_c_data cacos_test_data[] =
1732   {
1733     START_DATA (cacos),
1734     TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero),
1735     TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero),
1736     TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0),
1737     TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0),
1739     TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty),
1740     TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty),
1742     TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty),
1743     TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty),
1745     TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty),
1746     TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty),
1747     TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty),
1748     TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty),
1749     TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty),
1750     TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty),
1752     TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty),
1753     TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty),
1754     TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty),
1755     TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty),
1757     TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty),
1758     TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty),
1759     TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty),
1760     TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty),
1762     TEST_c_c (cacos, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1763     TEST_c_c (cacos, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1765     TEST_c_c (cacos, 0, qnan_value, M_PI_2l, qnan_value),
1766     TEST_c_c (cacos, minus_zero, qnan_value, M_PI_2l, qnan_value),
1768     TEST_c_c (cacos, qnan_value, plus_infty, qnan_value, minus_infty),
1769     TEST_c_c (cacos, qnan_value, minus_infty, qnan_value, plus_infty),
1771     TEST_c_c (cacos, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1772     TEST_c_c (cacos, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1774     TEST_c_c (cacos, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1775     TEST_c_c (cacos, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1777     TEST_c_c (cacos, qnan_value, qnan_value, qnan_value, qnan_value),
1779     TEST_c_c (cacos, plus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1780     TEST_c_c (cacos, minus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1781     TEST_c_c (cacos, plus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1782     TEST_c_c (cacos, minus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1783     TEST_c_c (cacos, plus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1784     TEST_c_c (cacos, minus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1785     TEST_c_c (cacos, plus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1786     TEST_c_c (cacos, minus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1787     TEST_c_c (cacos, plus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1788     TEST_c_c (cacos, minus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1789     TEST_c_c (cacos, plus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1790     TEST_c_c (cacos, minus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1792     TEST_c_c (cacos, -1.5L, plus_zero, M_PIl, -0.9624236501192068949955178268487368462704L),
1793     TEST_c_c (cacos, -1.5L, minus_zero, M_PIl, 0.9624236501192068949955178268487368462704L),
1794     TEST_c_c (cacos, -1.0L, plus_zero, M_PIl, minus_zero),
1795     TEST_c_c (cacos, -1.0L, minus_zero, M_PIl, plus_zero),
1796     TEST_c_c (cacos, -0.5L, plus_zero, 2.094395102393195492308428922186335256131L, minus_zero),
1797     TEST_c_c (cacos, -0.5L, minus_zero, 2.094395102393195492308428922186335256131L, plus_zero),
1798     TEST_c_c (cacos, 0.5L, plus_zero, 1.047197551196597746154214461093167628066L, minus_zero),
1799     TEST_c_c (cacos, 0.5L, minus_zero, 1.047197551196597746154214461093167628066L, plus_zero),
1800     TEST_c_c (cacos, 1.0L, plus_zero, plus_zero, minus_zero),
1801     TEST_c_c (cacos, 1.0L, minus_zero, plus_zero, plus_zero),
1802     TEST_c_c (cacos, 1.5L, plus_zero, plus_zero, -0.9624236501192068949955178268487368462704L),
1803     TEST_c_c (cacos, 1.5L, minus_zero, plus_zero, 0.9624236501192068949955178268487368462704L),
1805     TEST_c_c (cacos, 0x1p50L, 1.0L, 8.881784197001252323389053344727730248720e-16L, -3.535050620855721078027883819436720218708e1L),
1806     TEST_c_c (cacos, 0x1p50L, -1.0L, 8.881784197001252323389053344727730248720e-16L, 3.535050620855721078027883819436720218708e1L),
1807     TEST_c_c (cacos, -0x1p50L, 1.0L, 3.141592653589792350284223683154270545292L, -3.535050620855721078027883819436720218708e1L),
1808     TEST_c_c (cacos, -0x1p50L, -1.0L, 3.141592653589792350284223683154270545292L, 3.535050620855721078027883819436720218708e1L),
1809     TEST_c_c (cacos, 1.0L, 0x1p50L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436759661753e1L),
1810     TEST_c_c (cacos, -1.0L, 0x1p50L, 1.570796326794897507409741391764983781004L, -3.535050620855721078027883819436759661753e1L),
1811     TEST_c_c (cacos, 1.0L, -0x1p50L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436759661753e1L),
1812     TEST_c_c (cacos, -1.0L, -0x1p50L, 1.570796326794897507409741391764983781004L, 3.535050620855721078027883819436759661753e1L),
1813 #ifndef TEST_FLOAT
1814     TEST_c_c (cacos, 0x1p500L, 1.0L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
1815     TEST_c_c (cacos, 0x1p500L, -1.0L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
1816     TEST_c_c (cacos, -0x1p500L, 1.0L, 3.141592653589793238462643383279502884197L, -3.472667374605326000180332928505464606058e2L),
1817     TEST_c_c (cacos, -0x1p500L, -1.0L, 3.141592653589793238462643383279502884197L, 3.472667374605326000180332928505464606058e2L),
1818     TEST_c_c (cacos, 1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1819     TEST_c_c (cacos, -1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1820     TEST_c_c (cacos, 1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1821     TEST_c_c (cacos, -1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1822 #endif
1823 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1824     TEST_c_c (cacos, 0x1p5000L, 1.0L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
1825     TEST_c_c (cacos, 0x1p5000L, -1.0L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
1826     TEST_c_c (cacos, -0x1p5000L, 1.0L, 3.141592653589793238462643383279502884197L, -3.466429049980286492395577839412341016946e3L),
1827     TEST_c_c (cacos, -0x1p5000L, -1.0L, 3.141592653589793238462643383279502884197L, 3.466429049980286492395577839412341016946e3L),
1828     TEST_c_c (cacos, 1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1829     TEST_c_c (cacos, -1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1830     TEST_c_c (cacos, 1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1831     TEST_c_c (cacos, -1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1832 #endif
1834     TEST_c_c (cacos, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, -8.973081118419833726837456344608533993585e1L),
1835 #ifndef TEST_FLOAT
1836     TEST_c_c (cacos, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, -7.107906849659093345062145442726115449315e2L),
1837 #endif
1838 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1839     TEST_c_c (cacos, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, -1.135753137836666928715489992987020363057e4L),
1840 #endif
1842     TEST_c_c (cacos, 0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442097L, -1.194763217287109304111930828519090523536L),
1843     TEST_c_c (cacos, 0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442097L, 1.194763217287109304111930828519090523536L),
1844     TEST_c_c (cacos, -0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442100L, -1.194763217287109304111930828519090523536L),
1845     TEST_c_c (cacos, -0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442100L, 1.194763217287109304111930828519090523536L),
1846     TEST_c_c (cacos, 1.5L, 0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1847     TEST_c_c (cacos, -1.5L, 0x1.fp-129L, 3.141592653589793238462643383279502884195L, -9.624236501192068949955178268487368462704e-1L),
1848     TEST_c_c (cacos, 1.5L, -0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1849     TEST_c_c (cacos, -1.5L, -0x1.fp-129L, 3.141592653589793238462643383279502884195L, 9.624236501192068949955178268487368462704e-1L),
1850 #ifndef TEST_FLOAT
1851     TEST_c_c (cacos, 0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1852     TEST_c_c (cacos, 0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1853     TEST_c_c (cacos, -0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1854     TEST_c_c (cacos, -0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1855     TEST_c_c (cacos, 1.5L, 0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1856     TEST_c_c (cacos, -1.5L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
1857     TEST_c_c (cacos, 1.5L, -0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1858     TEST_c_c (cacos, -1.5L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
1859 #endif
1860 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1861     TEST_c_c (cacos, 0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1862     TEST_c_c (cacos, 0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1863     TEST_c_c (cacos, -0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1864     TEST_c_c (cacos, -0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1865     TEST_c_c (cacos, 1.5L, 0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
1866     TEST_c_c (cacos, -1.5L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
1867     TEST_c_c (cacos, 1.5L, -0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
1868     TEST_c_c (cacos, -1.5L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
1869 #endif
1871     TEST_c_c (cacos, 0.5L, 1.0L, 1.221357263937683325603909865564381489366L, -9.261330313501824245501244453057873152694e-1L),
1872     TEST_c_c (cacos, 0.5L, -1.0L, 1.221357263937683325603909865564381489366L, 9.261330313501824245501244453057873152694e-1L),
1873     TEST_c_c (cacos, -0.5L, 1.0L, 1.920235389652109912858733517715121394831L, -9.261330313501824245501244453057873152694e-1L),
1874     TEST_c_c (cacos, -0.5L, -1.0L, 1.920235389652109912858733517715121394831L, 9.261330313501824245501244453057873152694e-1L),
1875     TEST_c_c (cacos, 1.0L, 0.5L, 6.748888455860063801646649673121744318756e-1L, -7.328576759736452608886724437653071523305e-1L),
1876     TEST_c_c (cacos, -1.0L, 0.5L, 2.466703808003786858297978415967328452322L, -7.328576759736452608886724437653071523305e-1L),
1877     TEST_c_c (cacos, 1.0L, -0.5L, 6.748888455860063801646649673121744318756e-1L, 7.328576759736452608886724437653071523305e-1L),
1878     TEST_c_c (cacos, -1.0L, -0.5L, 2.466703808003786858297978415967328452322L, 7.328576759736452608886724437653071523305e-1L),
1879     TEST_c_c (cacos, 0.25L, 1.0L, 1.394493894017929688812643125003661339452L, -8.924633639033482359562124741744951972772e-1L),
1880     TEST_c_c (cacos, 0.25L, -1.0L, 1.394493894017929688812643125003661339452L, 8.924633639033482359562124741744951972772e-1L),
1881     TEST_c_c (cacos, -0.25L, 1.0L, 1.747098759571863549650000258275841544745L, -8.924633639033482359562124741744951972772e-1L),
1882     TEST_c_c (cacos, -0.25L, -1.0L, 1.747098759571863549650000258275841544745L, 8.924633639033482359562124741744951972772e-1L),
1883     TEST_c_c (cacos, 1.0L, 0.25L, 4.890443302710802929202843732146540079124e-1L, -5.097911466811016354623559941115413499164e-1L),
1884     TEST_c_c (cacos, -1.0L, 0.25L, 2.652548323318712945542359010064848876285L, -5.097911466811016354623559941115413499164e-1L),
1885     TEST_c_c (cacos, 1.0L, -0.25L, 4.890443302710802929202843732146540079124e-1L, 5.097911466811016354623559941115413499164e-1L),
1886     TEST_c_c (cacos, -1.0L, -0.25L, 2.652548323318712945542359010064848876285L, 5.097911466811016354623559941115413499164e-1L),
1887     TEST_c_c (cacos, 0x1.fp-10L, 1.0L, 1.569458417435338878318763342108699202986L, -8.813742198809567991336704287826445879025e-1L),
1888     TEST_c_c (cacos, 0x1.fp-10L, -1.0L, 1.569458417435338878318763342108699202986L, 8.813742198809567991336704287826445879025e-1L),
1889     TEST_c_c (cacos, -0x1.fp-10L, 1.0L, 1.572134236154454360143880041170803681211L, -8.813742198809567991336704287826445879025e-1L),
1890     TEST_c_c (cacos, -0x1.fp-10L, -1.0L, 1.572134236154454360143880041170803681211L, 8.813742198809567991336704287826445879025e-1L),
1891     TEST_c_c (cacos, 1.0L, 0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, -4.350501469856803800217957402220976497152e-2L),
1892     TEST_c_c (cacos, -1.0L, 0x1.fp-10L, 3.098101355958774410750062883737683164607L, -4.350501469856803800217957402220976497152e-2L),
1893     TEST_c_c (cacos, 1.0L, -0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, 4.350501469856803800217957402220976497152e-2L),
1894     TEST_c_c (cacos, -1.0L, -0x1.fp-10L, 3.098101355958774410750062883737683164607L, 4.350501469856803800217957402220976497152e-2L),
1895     TEST_c_c (cacos, 0x1.fp-30L, 1.0L, 1.570796325518966635014803151387033957091L, -8.813735870195430258081932989769495326854e-1L),
1896     TEST_c_c (cacos, 0x1.fp-30L, -1.0L, 1.570796325518966635014803151387033957091L, 8.813735870195430258081932989769495326854e-1L),
1897     TEST_c_c (cacos, -0x1.fp-30L, 1.0L, 1.570796328070826603447840231892468927106L, -8.813735870195430258081932989769495326854e-1L),
1898     TEST_c_c (cacos, -0x1.fp-30L, -1.0L, 1.570796328070826603447840231892468927106L, 8.813735870195430258081932989769495326854e-1L),
1899     TEST_c_c (cacos, 1.0L, 0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, -4.247867098745151888768727039216644758847e-5L),
1900     TEST_c_c (cacos, -1.0L, 0x1.fp-30L, 3.141550174918818561961484385371624132331L, -4.247867098745151888768727039216644758847e-5L),
1901     TEST_c_c (cacos, 1.0L, -0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, 4.247867098745151888768727039216644758847e-5L),
1902     TEST_c_c (cacos, -1.0L, -0x1.fp-30L, 3.141550174918818561961484385371624132331L, 4.247867098745151888768727039216644758847e-5L),
1903     TEST_c_c (cacos, 0x1.fp-100L, 1.0L, 1.570796326794896619231321691638670687364L, -8.813735870195430252326093249797923090282e-1L),
1904     TEST_c_c (cacos, 0x1.fp-100L, -1.0L, 1.570796326794896619231321691638670687364L, 8.813735870195430252326093249797923090282e-1L),
1905     TEST_c_c (cacos, -0x1.fp-100L, 1.0L, 1.570796326794896619231321691640832196834L, -8.813735870195430252326093249797923090282e-1L),
1906     TEST_c_c (cacos, -0x1.fp-100L, -1.0L, 1.570796326794896619231321691640832196834L, 8.813735870195430252326093249797923090282e-1L),
1907     TEST_c_c (cacos, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, -1.236292038260260888664514866457202186027e-15L),
1908     TEST_c_c (cacos, -1.0L, 0x1.fp-100L, 3.141592653589792002170605123018614219682L, -1.236292038260260888664514866457202186027e-15L),
1909     TEST_c_c (cacos, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, 1.236292038260260888664514866457202186027e-15L),
1910     TEST_c_c (cacos, -1.0L, -0x1.fp-100L, 3.141592653589792002170605123018614219682L, 1.236292038260260888664514866457202186027e-15L),
1911     TEST_c_c (cacos, 0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442097L, -8.813735870195430252326093249797923090282e-1L),
1912     TEST_c_c (cacos, 0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442097L, 8.813735870195430252326093249797923090282e-1L),
1913     TEST_c_c (cacos, -0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442101L, -8.813735870195430252326093249797923090282e-1L),
1914     TEST_c_c (cacos, -0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442101L, 8.813735870195430252326093249797923090282e-1L),
1915     TEST_c_c (cacos, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, -5.335635276982233498398987585285818977933e-20L),
1916     TEST_c_c (cacos, -1.0L, 0x1.fp-129L, 3.141592653589793238409287030509680549213L, -5.335635276982233498398987585285818977933e-20L),
1917     TEST_c_c (cacos, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, 5.335635276982233498398987585285818977933e-20L),
1918     TEST_c_c (cacos, -1.0L, -0x1.fp-129L, 3.141592653589793238409287030509680549213L, 5.335635276982233498398987585285818977933e-20L),
1919 #ifndef TEST_FLOAT
1920     TEST_c_c (cacos, 0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1921     TEST_c_c (cacos, 0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1922     TEST_c_c (cacos, -0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1923     TEST_c_c (cacos, -0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1924     TEST_c_c (cacos, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
1925     TEST_c_c (cacos, -1.0L, 0x1.fp-1000L, 3.141592653589793238462643383279502884197L, -4.252291453851660175550490409247739011867e-151L),
1926     TEST_c_c (cacos, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
1927     TEST_c_c (cacos, -1.0L, -0x1.fp-1000L, 3.141592653589793238462643383279502884197L, 4.252291453851660175550490409247739011867e-151L),
1928     TEST_c_c (cacos, 0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1929     TEST_c_c (cacos, 0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1930     TEST_c_c (cacos, -0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1931     TEST_c_c (cacos, -0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1932     TEST_c_c (cacos, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
1933     TEST_c_c (cacos, -1.0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -7.340879205566679497036857179189356754017e-155L),
1934     TEST_c_c (cacos, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
1935     TEST_c_c (cacos, -1.0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 7.340879205566679497036857179189356754017e-155L),
1936 #endif
1937 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1938     TEST_c_c (cacos, 0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1939     TEST_c_c (cacos, 0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1940     TEST_c_c (cacos, -0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1941     TEST_c_c (cacos, -0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1942     TEST_c_c (cacos, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
1943     TEST_c_c (cacos, -1.0L, 0x1.fp-10000L, 3.141592653589793238462643383279502884197L, -9.854680208706673586644342922051388714633e-1506L),
1944     TEST_c_c (cacos, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
1945     TEST_c_c (cacos, -1.0L, -0x1.fp-10000L, 3.141592653589793238462643383279502884197L, 9.854680208706673586644342922051388714633e-1506L),
1946     TEST_c_c (cacos, 0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1947     TEST_c_c (cacos, 0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1948     TEST_c_c (cacos, -0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1949     TEST_c_c (cacos, -0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1950     TEST_c_c (cacos, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
1951     TEST_c_c (cacos, -1.0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.023632056840860275214893047597614177639e-2467L),
1952     TEST_c_c (cacos, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
1953     TEST_c_c (cacos, -1.0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.023632056840860275214893047597614177639e-2467L),
1954 #endif
1956     TEST_c_c (cacos, 0x1p-23L, 0x1.000002p0L, 1.570796242501204621739026081991856762292L, -8.813736713132400470205730751186547909968e-1L),
1957     TEST_c_c (cacos, 0x1p-23L, -0x1.000002p0L, 1.570796242501204621739026081991856762292L, 8.813736713132400470205730751186547909968e-1L),
1958     TEST_c_c (cacos, -0x1p-23L, 0x1.000002p0L, 1.570796411088588616723617301287646121905L, -8.813736713132400470205730751186547909968e-1L),
1959     TEST_c_c (cacos, -0x1p-23L, -0x1.000002p0L, 1.570796411088588616723617301287646121905L, 8.813736713132400470205730751186547909968e-1L),
1960     TEST_c_c (cacos, 0x1.000002p0L, 0x1p-23L, 2.222118384408546368406374049167636760903e-4L, -5.364668491573609633134147164031476452679e-4L),
1961     TEST_c_c (cacos, -0x1.000002p0L, 0x1p-23L, 3.141370441751352383825802745874586120521L, -5.364668491573609633134147164031476452679e-4L),
1962     TEST_c_c (cacos, 0x1.000002p0L, -0x1p-23L, 2.222118384408546368406374049167636760903e-4L, 5.364668491573609633134147164031476452679e-4L),
1963     TEST_c_c (cacos, -0x1.000002p0L, -0x1p-23L, 3.141370441751352383825802745874586120521L, 5.364668491573609633134147164031476452679e-4L),
1964     TEST_c_c (cacos, 0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442097L, -8.813736713132375348727889167749389235161e-1L),
1965     TEST_c_c (cacos, 0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442097L, 8.813736713132375348727889167749389235161e-1L),
1966     TEST_c_c (cacos, -0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442101L, -8.813736713132375348727889167749389235161e-1L),
1967     TEST_c_c (cacos, -0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442101L, 8.813736713132375348727889167749389235161e-1L),
1968     TEST_c_c (cacos, 0x1.000002p0L, 0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, -4.882812451493617206486388134172712975070e-4L),
1969     TEST_c_c (cacos, -0x1.000002p0L, 0x1.fp-129L, 3.141592653589793238462643383279502878367L, -4.882812451493617206486388134172712975070e-4L),
1970     TEST_c_c (cacos, 0x1.000002p0L, -0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, 4.882812451493617206486388134172712975070e-4L),
1971     TEST_c_c (cacos, -0x1.000002p0L, -0x1.fp-129L, 3.141592653589793238462643383279502878367L, 4.882812451493617206486388134172712975070e-4L),
1972     TEST_c_c (cacos, 0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
1973     TEST_c_c (cacos, 0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
1974     TEST_c_c (cacos, -0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
1975     TEST_c_c (cacos, -0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
1976     TEST_c_c (cacos, 0x1.000002p0L, 0.0L, 0.0L, -4.882812451493617206486388134172712975070e-4L),
1977     TEST_c_c (cacos, -0x1.000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.882812451493617206486388134172712975070e-4L),
1978     TEST_c_c (cacos, 0x1.000002p0L, -0.0L, 0.0L, 4.882812451493617206486388134172712975070e-4L),
1979     TEST_c_c (cacos, -0x1.000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.882812451493617206486388134172712975070e-4L),
1980 #ifndef TEST_FLOAT
1981     TEST_c_c (cacos, 0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, -8.813735870195431822418551933572982483664e-1L),
1982     TEST_c_c (cacos, 0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, 8.813735870195431822418551933572982483664e-1L),
1983     TEST_c_c (cacos, -0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, -8.813735870195431822418551933572982483664e-1L),
1984     TEST_c_c (cacos, -0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, 8.813735870195431822418551933572982483664e-1L),
1985     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1p-52L, 9.590301705980041385828904092662391018164e-9L, -2.315303644582684770975188768022139415020e-8L),
1986     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1p-52L, 3.141592643999491532482601997450598791535L, -2.315303644582684770975188768022139415020e-8L),
1987     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1p-52L, 9.590301705980041385828904092662391018164e-9L, 2.315303644582684770975188768022139415020e-8L),
1988     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1p-52L, 3.141592643999491532482601997450598791535L, 2.315303644582684770975188768022139415020e-8L),
1989     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
1990     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
1991     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
1992     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
1993     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, -2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
1994     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
1995     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, 2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
1996     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
1997     TEST_c_c (cacos, 0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
1998     TEST_c_c (cacos, 0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
1999     TEST_c_c (cacos, -0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2000     TEST_c_c (cacos, -0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2001     TEST_c_c (cacos, 0x1.0000000000001p0L, 0.0L, 0.0L, -2.107342425544701550354780375182800088393e-8L),
2002     TEST_c_c (cacos, -0x1.0000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
2003     TEST_c_c (cacos, 0x1.0000000000001p0L, -0.0L, 0.0L, 2.107342425544701550354780375182800088393e-8L),
2004     TEST_c_c (cacos, -0x1.0000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
2005 #endif
2006 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2007     TEST_c_c (cacos, 0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, -8.813735870195430253092739958139610131001e-1L),
2008     TEST_c_c (cacos, 0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, 8.813735870195430253092739958139610131001e-1L),
2009     TEST_c_c (cacos, -0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, -8.813735870195430253092739958139610131001e-1L),
2010     TEST_c_c (cacos, -0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, 8.813735870195430253092739958139610131001e-1L),
2011     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1p-63L, 2.119177303101063432592523199680782317447e-10L, -5.116146586219826555037807251857670783420e-10L),
2012     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1p-63L, 3.141592653377875508152537040020250564229L, -5.116146586219826555037807251857670783420e-10L),
2013     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1p-63L, 2.119177303101063432592523199680782317447e-10L, 5.116146586219826555037807251857670783420e-10L),
2014     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1p-63L, 3.141592653377875508152537040020250564229L, 5.116146586219826555037807251857670783420e-10L),
2015 # if LDBL_MIN_EXP <= -16381
2016     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2017     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2018     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2019     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2020     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, -4.656612873077392578082927418388212703712e-10L),
2021     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2022     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, 4.656612873077392578082927418388212703712e-10L),
2023     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2024 # endif
2025     TEST_c_c (cacos, 0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2026     TEST_c_c (cacos, 0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2027     TEST_c_c (cacos, -0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2028     TEST_c_c (cacos, -0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2029     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0.0L, 0.0L, -4.656612873077392578082927418388212703712e-10L),
2030     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2031     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0.0L, 0.0L, 4.656612873077392578082927418388212703712e-10L),
2032     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2033 #endif
2034 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2035     TEST_c_c (cacos, 0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, -8.813735870195430252326093249798097405561e-1L),
2036     TEST_c_c (cacos, 0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, 8.813735870195430252326093249798097405561e-1L),
2037     TEST_c_c (cacos, -0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, -8.813735870195430252326093249798097405561e-1L),
2038     TEST_c_c (cacos, -0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, 8.813735870195430252326093249798097405561e-1L),
2039     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1p-106L, 5.394221422390606848017034778914096659726e-17L, -2.285028863093221674154232933662774454211e-16L),
2040     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1p-106L, 3.141592653589793184520429159373434404027L, -2.285028863093221674154232933662774454211e-16L),
2041     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1p-106L, 5.394221422390606848017034778914096659726e-17L, 2.285028863093221674154232933662774454211e-16L),
2042     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1p-106L, 3.141592653589793184520429159373434404027L, 2.285028863093221674154232933662774454211e-16L),
2043     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2044     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2045     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2046     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2047     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, -2.220446049250313080847263336181636063482e-16L),
2048     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2049     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, 2.220446049250313080847263336181636063482e-16L),
2050     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2051     TEST_c_c (cacos, 0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2052     TEST_c_c (cacos, 0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2053     TEST_c_c (cacos, -0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2054     TEST_c_c (cacos, -0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2055     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0.0L, 0.0L, -2.220446049250313080847263336181636063482e-16L),
2056     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2057     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0.0L, 0.0L, 2.220446049250313080847263336181636063482e-16L),
2058     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2059 #endif
2060 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2061     TEST_c_c (cacos, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, -8.813735870195430252326093249797924452120e-1L),
2062     TEST_c_c (cacos, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, 8.813735870195430252326093249797924452120e-1L),
2063     TEST_c_c (cacos, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, -8.813735870195430252326093249797924452120e-1L),
2064     TEST_c_c (cacos, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, 8.813735870195430252326093249797924452120e-1L),
2065     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 4.767863183742677481693563511435642755521e-18L, -2.019699255375255198156433710951064632386e-17L),
2066     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 3.141592653589793233694780199536825402504L, -2.019699255375255198156433710951064632386e-17L),
2067     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 4.767863183742677481693563511435642755521e-18L, 2.019699255375255198156433710951064632386e-17L),
2068     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 3.141592653589793233694780199536825402504L, 2.019699255375255198156433710951064632386e-17L),
2069     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2070     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2071     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2072     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2073     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, -1.962615573354718824241727964954454332780e-17L),
2074     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2075     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, 1.962615573354718824241727964954454332780e-17L),
2076     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2077     TEST_c_c (cacos, 0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2078     TEST_c_c (cacos, 0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2079     TEST_c_c (cacos, -0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2080     TEST_c_c (cacos, -0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2081     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0.0L, 0.0L, -1.962615573354718824241727964954454332780e-17L),
2082     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2083     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0.0L, 0.0L, 1.962615573354718824241727964954454332780e-17L),
2084     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2085 #endif
2087     TEST_c_c (cacos, 0x1p-23L, 0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, -8.813735448726963984495965873956465777250e-1L),
2088     TEST_c_c (cacos, 0x1p-23L, -0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, 8.813735448726963984495965873956465777250e-1L),
2089     TEST_c_c (cacos, -0x1p-23L, 0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, -8.813735448726963984495965873956465777250e-1L),
2090     TEST_c_c (cacos, -0x1p-23L, -0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, 8.813735448726963984495965873956465777250e-1L),
2091     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1p-23L, 4.391863861910487109445187743978204002614e-4L, -2.714321200917194650737217746780928423385e-4L),
2092     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1p-23L, 3.141153467203602189751698864505105063797L, -2.714321200917194650737217746780928423385e-4L),
2093     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1p-23L, 4.391863861910487109445187743978204002614e-4L, 2.714321200917194650737217746780928423385e-4L),
2094     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1p-23L, 3.141153467203602189751698864505105063797L, 2.714321200917194650737217746780928423385e-4L),
2095     TEST_c_c (cacos, 0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, -8.813735448726938863015878255140556727969e-1L),
2096     TEST_c_c (cacos, 0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, 8.813735448726938863015878255140556727969e-1L),
2097     TEST_c_c (cacos, -0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, -8.813735448726938863015878255140556727969e-1L),
2098     TEST_c_c (cacos, -0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, 8.813735448726938863015878255140556727969e-1L),
2099     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, -8.245504387859737323891843603996428534945e-36L),
2100     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1.fp-129L, 3.141247386605077034875040133796864147700L, -8.245504387859737323891843603996428534945e-36L),
2101     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, 8.245504387859737323891843603996428534945e-36L),
2102     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1.fp-129L, 3.141247386605077034875040133796864147700L, 8.245504387859737323891843603996428534945e-36L),
2103     TEST_c_c (cacos, 0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2104     TEST_c_c (cacos, 0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2105     TEST_c_c (cacos, -0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2106     TEST_c_c (cacos, -0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2107     TEST_c_c (cacos, 0x0.ffffffp0L, 0.0L, 3.452669847162035876032494826387364972849e-4L, -0.0L),
2108     TEST_c_c (cacos, -0x0.ffffffp0L, 0.0L, 3.141247386605077034875040133796864147700L, -0.0L),
2109     TEST_c_c (cacos, 0x0.ffffffp0L, -0.0L, 3.452669847162035876032494826387364972849e-4L, 0.0L),
2110     TEST_c_c (cacos, -0x0.ffffffp0L, -0.0L, 3.141247386605077034875040133796864147700L, 0.0L),
2111     TEST_c_c (cacos, 0x1p-23L, 0.5L, 1.570796220170866625230343643673321150378L, -4.812118250596059896127318386463676808798e-1L),
2112     TEST_c_c (cacos, 0x1p-23L, -0.5L, 1.570796220170866625230343643673321150378L, 4.812118250596059896127318386463676808798e-1L),
2113     TEST_c_c (cacos, -0x1p-23L, 0.5L, 1.570796433418926613232299739606181733819L, -4.812118250596059896127318386463676808798e-1L),
2114     TEST_c_c (cacos, -0x1p-23L, -0.5L, 1.570796433418926613232299739606181733819L, 4.812118250596059896127318386463676808798e-1L),
2115     TEST_c_c (cacos, 0.5L, 0x1p-23L, 1.047197551196603215914744618665204532273L, -1.376510308240943236356088341381173571841e-7L),
2116     TEST_c_c (cacos, -0.5L, 0x1p-23L, 2.094395102393190022547898764614298351924L, -1.376510308240943236356088341381173571841e-7L),
2117     TEST_c_c (cacos, 0.5L, -0x1p-23L, 1.047197551196603215914744618665204532273L, 1.376510308240943236356088341381173571841e-7L),
2118     TEST_c_c (cacos, -0.5L, -0x1p-23L, 2.094395102393190022547898764614298351924L, 1.376510308240943236356088341381173571841e-7L),
2119     TEST_c_c (cacos, 0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442096L, -4.812118250596034474977589134243684231352e-1L),
2120     TEST_c_c (cacos, 0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442096L, 4.812118250596034474977589134243684231352e-1L),
2121     TEST_c_c (cacos, -0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442101L, -4.812118250596034474977589134243684231352e-1L),
2122     TEST_c_c (cacos, -0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442101L, 4.812118250596034474977589134243684231352e-1L),
2123     TEST_c_c (cacos, 0.5L, 0x1.fp-129L, 1.047197551196597746154214461093167628066L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2124     TEST_c_c (cacos, -0.5L, 0x1.fp-129L, 2.094395102393195492308428922186335256131L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2125     TEST_c_c (cacos, 0.5L, -0x1.fp-129L, 1.047197551196597746154214461093167628066L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2126     TEST_c_c (cacos, -0.5L, -0x1.fp-129L, 2.094395102393195492308428922186335256131L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2127     TEST_c_c (cacos, 0x1p-23L, 0x1p-23L, 1.570796207585607068450636380271254316214L, -1.192092895507818146886315028596704749235e-7L),
2128     TEST_c_c (cacos, 0x1p-23L, -0x1p-23L, 1.570796207585607068450636380271254316214L, 1.192092895507818146886315028596704749235e-7L),
2129     TEST_c_c (cacos, -0x1p-23L, 0x1p-23L, 1.570796446004186170012007003008248567984L, -1.192092895507818146886315028596704749235e-7L),
2130     TEST_c_c (cacos, -0x1p-23L, -0x1p-23L, 1.570796446004186170012007003008248567984L, 1.192092895507818146886315028596704749235e-7L),
2131     TEST_c_c (cacos, 0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442096L, -1.192092895507809676556842485683592032154e-7L),
2132     TEST_c_c (cacos, 0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442096L, 1.192092895507809676556842485683592032154e-7L),
2133     TEST_c_c (cacos, -0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442101L, -1.192092895507809676556842485683592032154e-7L),
2134     TEST_c_c (cacos, -0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442101L, 1.192092895507809676556842485683592032154e-7L),
2135     TEST_c_c (cacos, 0x1p-23L, 0x1.fp-129L, 1.570796207585607068449789347324000006847L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2136     TEST_c_c (cacos, -0x1p-23L, 0x1.fp-129L, 1.570796446004186170012854035955502877351L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2137     TEST_c_c (cacos, 0x1p-23L, -0x1.fp-129L, 1.570796207585607068449789347324000006847L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2138     TEST_c_c (cacos, -0x1p-23L, -0x1.fp-129L, 1.570796446004186170012854035955502877351L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2139     TEST_c_c (cacos, 0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2140     TEST_c_c (cacos, 0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2141     TEST_c_c (cacos, -0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2142     TEST_c_c (cacos, -0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2143     TEST_c_c (cacos, 0x1p-23L, 0.0L, 1.570796207585607068449789347324000006847L, -0.0L),
2144     TEST_c_c (cacos, -0x1p-23L, 0.0L, 1.570796446004186170012854035955502877351L, -0.0L),
2145     TEST_c_c (cacos, 0x1p-23L, -0.0L, 1.570796207585607068449789347324000006847L, 0.0L),
2146     TEST_c_c (cacos, -0x1p-23L, -0.0L, 1.570796446004186170012854035955502877351L, 0.0L),
2147     TEST_c_c (cacos, 0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2148     TEST_c_c (cacos, 0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2149     TEST_c_c (cacos, -0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442101L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2150     TEST_c_c (cacos, -0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442101L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2151 #ifndef TEST_FLOAT
2152     TEST_c_c (cacos, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, -8.813735870195429467279863907910458761820e-1L),
2153     TEST_c_c (cacos, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, 8.813735870195429467279863907910458761820e-1L),
2154     TEST_c_c (cacos, -0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, -8.813735870195429467279863907910458761820e-1L),
2155     TEST_c_c (cacos, -0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, 8.813735870195429467279863907910458761820e-1L),
2156     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.895456983915074112227925127005564372844e-8L, -1.171456840272878582596796205397918831268e-8L),
2157     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1p-52L, 3.141592634635223399311902261000251614142L, -1.171456840272878582596796205397918831268e-8L),
2158     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.895456983915074112227925127005564372844e-8L, 1.171456840272878582596796205397918831268e-8L),
2159     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1p-52L, 3.141592634635223399311902261000251614142L, 1.171456840272878582596796205397918831268e-8L),
2160     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2161     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2162     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2163     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2164     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2165     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.141592638688632044614986995416067458693L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2166     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2167     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.141592638688632044614986995416067458693L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2168     TEST_c_c (cacos, 0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2169     TEST_c_c (cacos, 0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2170     TEST_c_c (cacos, -0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2171     TEST_c_c (cacos, -0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2172     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0.0L, 1.490116119384765638786343542550461592240e-8L, -0.0L),
2173     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0.0L, 3.141592638688632044614986995416067458693L, -0.0L),
2174     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0.0L, 1.490116119384765638786343542550461592240e-8L, 0.0L),
2175     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0.0L, 3.141592638688632044614986995416067458693L, 0.0L),
2176 #endif
2177     TEST_c_c (cacos, 0x1p-52L, 0.5L, 1.570796326794896420628589431857911675917L, -4.812118250596034474977589134243772428682e-1L),
2178     TEST_c_c (cacos, 0x1p-52L, -0.5L, 1.570796326794896420628589431857911675917L, 4.812118250596034474977589134243772428682e-1L),
2179     TEST_c_c (cacos, -0x1p-52L, 0.5L, 1.570796326794896817834053951421591208280L, -4.812118250596034474977589134243772428682e-1L),
2180     TEST_c_c (cacos, -0x1p-52L, -0.5L, 1.570796326794896817834053951421591208280L, 4.812118250596034474977589134243772428682e-1L),
2181     TEST_c_c (cacos, 0.5L, 0x1p-52L, 1.047197551196597746154214461093186605110L, -2.563950248511418570403591756798643804971e-16L),
2182     TEST_c_c (cacos, -0.5L, 0x1p-52L, 2.094395102393195492308428922186316279087L, -2.563950248511418570403591756798643804971e-16L),
2183     TEST_c_c (cacos, 0.5L, -0x1p-52L, 1.047197551196597746154214461093186605110L, 2.563950248511418570403591756798643804971e-16L),
2184     TEST_c_c (cacos, -0.5L, -0x1p-52L, 2.094395102393195492308428922186316279087L, 2.563950248511418570403591756798643804971e-16L),
2185 #ifndef TEST_FLOAT
2186     TEST_c_c (cacos, 0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2187     TEST_c_c (cacos, 0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2188     TEST_c_c (cacos, -0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2189     TEST_c_c (cacos, -0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2190     TEST_c_c (cacos, 0.5L, 0x1.fp-1025L, 1.047197551196597746154214461093167628066L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2191     TEST_c_c (cacos, -0.5L, 0x1.fp-1025L, 2.094395102393195492308428922186335256131L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2192     TEST_c_c (cacos, 0.5L, -0x1.fp-1025L, 1.047197551196597746154214461093167628066L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2193     TEST_c_c (cacos, -0.5L, -0x1.fp-1025L, 2.094395102393195492308428922186335256131L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2194 #endif
2195     TEST_c_c (cacos, 0x1p-52L, 0x1p-52L, 1.570796326794896397186716766608443357372L, -2.220446049250313080847263336181677117148e-16L),
2196     TEST_c_c (cacos, 0x1p-52L, -0x1p-52L, 1.570796326794896397186716766608443357372L, 2.220446049250313080847263336181677117148e-16L),
2197     TEST_c_c (cacos, -0x1p-52L, 0x1p-52L, 1.570796326794896841275926616671059526825L, -2.220446049250313080847263336181677117148e-16L),
2198     TEST_c_c (cacos, -0x1p-52L, -0x1p-52L, 1.570796326794896841275926616671059526825L, 2.220446049250313080847263336181677117148e-16L),
2199 #ifndef TEST_FLOAT
2200     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2201     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2202     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2203     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2204     TEST_c_c (cacos, 0x1p-52L, 0x1.fp-1025L, 1.570796326794896397186716766608443357372L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2205     TEST_c_c (cacos, -0x1p-52L, 0x1.fp-1025L, 1.570796326794896841275926616671059526825L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2206     TEST_c_c (cacos, 0x1p-52L, -0x1.fp-1025L, 1.570796326794896397186716766608443357372L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2207     TEST_c_c (cacos, -0x1p-52L, -0x1.fp-1025L, 1.570796326794896841275926616671059526825L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2208 #endif
2209     TEST_c_c (cacos, 0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2210     TEST_c_c (cacos, 0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2211     TEST_c_c (cacos, -0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2212     TEST_c_c (cacos, -0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2213     TEST_c_c (cacos, 0x1p-52L, 0.0L, 1.570796326794896397186716766608443357372L, -0.0L),
2214     TEST_c_c (cacos, -0x1p-52L, 0.0L, 1.570796326794896841275926616671059526825L, -0.0L),
2215     TEST_c_c (cacos, 0x1p-52L, -0.0L, 1.570796326794896397186716766608443357372L, 0.0L),
2216     TEST_c_c (cacos, -0x1p-52L, -0.0L, 1.570796326794896841275926616671059526825L, 0.0L),
2217 #ifndef TEST_FLOAT
2218     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2219     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2220     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2221     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2222 #endif
2223 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2224     TEST_c_c (cacos, 0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, -8.813735870195430251942769895627079569937e-1L),
2225     TEST_c_c (cacos, 0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, 8.813735870195430251942769895627079569937e-1L),
2226     TEST_c_c (cacos, -0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, -8.813735870195430251942769895627079569937e-1L),
2227     TEST_c_c (cacos, -0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, 8.813735870195430251942769895627079569937e-1L),
2228     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1p-63L, 4.188407771167967636741951941902992986043e-10L, -2.588578361325995866221775673638805081337e-10L),
2229     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1p-63L, 3.141592653170952461345846619605307690007L, -2.588578361325995866221775673638805081337e-10L),
2230     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1p-63L, 4.188407771167967636741951941902992986043e-10L, 2.588578361325995866221775673638805081337e-10L),
2231     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1p-63L, 3.141592653170952461345846619605307690007L, 2.588578361325995866221775673638805081337e-10L),
2232 # if LDBL_MIN_EXP <= -16381
2233     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2234     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2235     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2236     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2237     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, -2.472906068161537187835415298076415423459e-4923L),
2238     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.141592653260520984471283759942320330996L, -2.472906068161537187835415298076415423459e-4923L),
2239     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, 2.472906068161537187835415298076415423459e-4923L),
2240     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.141592653260520984471283759942320330996L, 2.472906068161537187835415298076415423459e-4923L),
2241 # endif
2242     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2243     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2244     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2245     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2246     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0.0L, 3.292722539913596233371825532007990724506e-10L, -0.0L),
2247     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0.0L, 3.141592653260520984471283759942320330996L, -0.0L),
2248     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0.0L, 3.292722539913596233371825532007990724506e-10L, 0.0L),
2249     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0.0L, 3.141592653260520984471283759942320330996L, 0.0L),
2250 #endif
2251     TEST_c_c (cacos, 0x1p-63L, 0.5L, 1.570796326794896619134347701278529840650L, -4.812118250596034474977589134243684231373e-1L),
2252     TEST_c_c (cacos, 0x1p-63L, -0.5L, 1.570796326794896619134347701278529840650L, 4.812118250596034474977589134243684231373e-1L),
2253     TEST_c_c (cacos, -0x1p-63L, 0.5L, 1.570796326794896619328295682000973043547L, -4.812118250596034474977589134243684231373e-1L),
2254     TEST_c_c (cacos, -0x1p-63L, -0.5L, 1.570796326794896619328295682000973043547L, 4.812118250596034474977589134243684231373e-1L),
2255     TEST_c_c (cacos, 0.5L, 0x1p-63L, 1.047197551196597746154214461093167628070L, -1.251928832280966098829878787499365228659e-19L),
2256     TEST_c_c (cacos, -0.5L, 0x1p-63L, 2.094395102393195492308428922186335256127L, -1.251928832280966098829878787499365228659e-19L),
2257     TEST_c_c (cacos, 0.5L, -0x1p-63L, 1.047197551196597746154214461093167628070L, 1.251928832280966098829878787499365228659e-19L),
2258     TEST_c_c (cacos, -0.5L, -0x1p-63L, 2.094395102393195492308428922186335256127L, 1.251928832280966098829878787499365228659e-19L),
2259 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2260     TEST_c_c (cacos, 0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2261     TEST_c_c (cacos, 0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2262     TEST_c_c (cacos, -0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2263     TEST_c_c (cacos, -0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2264     TEST_c_c (cacos, 0.5L, 0x1.fp-16385L, 1.047197551196597746154214461093167628066L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2265     TEST_c_c (cacos, -0.5L, 0x1.fp-16385L, 2.094395102393195492308428922186335256131L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2266     TEST_c_c (cacos, 0.5L, -0x1.fp-16385L, 1.047197551196597746154214461093167628066L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2267     TEST_c_c (cacos, -0.5L, -0x1.fp-16385L, 2.094395102393195492308428922186335256131L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2268 #endif
2269     TEST_c_c (cacos, 0x1p-63L, 0x1p-63L, 1.570796326794896619122901474391200998698L, -1.084202172485504434007452800869941711430e-19L),
2270     TEST_c_c (cacos, 0x1p-63L, -0x1p-63L, 1.570796326794896619122901474391200998698L, 1.084202172485504434007452800869941711430e-19L),
2271     TEST_c_c (cacos, -0x1p-63L, 0x1p-63L, 1.570796326794896619339741908888301885499L, -1.084202172485504434007452800869941711430e-19L),
2272     TEST_c_c (cacos, -0x1p-63L, -0x1p-63L, 1.570796326794896619339741908888301885499L, 1.084202172485504434007452800869941711430e-19L),
2273 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2274     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2275     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2276     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2277     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2278     TEST_c_c (cacos, 0x1p-63L, 0x1.fp-16385L, 1.570796326794896619122901474391200998698L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2279     TEST_c_c (cacos, -0x1p-63L, 0x1.fp-16385L, 1.570796326794896619339741908888301885499L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2280     TEST_c_c (cacos, 0x1p-63L, -0x1.fp-16385L, 1.570796326794896619122901474391200998698L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2281     TEST_c_c (cacos, -0x1p-63L, -0x1.fp-16385L, 1.570796326794896619339741908888301885499L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2282 #endif
2283     TEST_c_c (cacos, 0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2284     TEST_c_c (cacos, 0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2285     TEST_c_c (cacos, -0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2286     TEST_c_c (cacos, -0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2287     TEST_c_c (cacos, 0x1p-63L, 0.0L, 1.570796326794896619122901474391200998698L, -0.0L),
2288     TEST_c_c (cacos, -0x1p-63L, 0.0L, 1.570796326794896619339741908888301885499L, -0.0L),
2289     TEST_c_c (cacos, 0x1p-63L, -0.0L, 1.570796326794896619122901474391200998698L, 0.0L),
2290     TEST_c_c (cacos, -0x1p-63L, -0.0L, 1.570796326794896619339741908888301885499L, 0.0L),
2291 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2292     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2293     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2294     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2295     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2296 #endif
2297 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2298     TEST_c_c (cacos, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, -8.813735870195430252326093249797835932642e-1L),
2299     TEST_c_c (cacos, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, 8.813735870195430252326093249797835932642e-1L),
2300     TEST_c_c (cacos, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, -8.813735870195430252326093249797835932642e-1L),
2301     TEST_c_c (cacos, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, 8.813735870195430252326093249797835932642e-1L),
2302     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.997188458999618357060632049675702684031e-16L, -1.234330349600789959989661887846005659983e-16L),
2303     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 3.141592653589793038743797483317667178134L, -1.234330349600789959989661887846005659983e-16L),
2304     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.997188458999618357060632049675702684031e-16L, 1.234330349600789959989661887846005659983e-16L),
2305     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 3.141592653589793038743797483317667178134L, 1.234330349600789959989661887846005659983e-16L),
2306     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2307     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2308     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2309     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2310     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2311     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.141592653589793081453397514901996944859L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2312     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2313     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.141592653589793081453397514901996944859L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2314     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2315     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2316     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2317     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2318     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570092458683775059393382371963565104164e-16L, -0.0L),
2319     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 3.141592653589793081453397514901996944859L, -0.0L),
2320     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570092458683775059393382371963565104164e-16L, 0.0L),
2321     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 3.141592653589793081453397514901996944859L, 0.0L),
2322 #endif
2323     TEST_c_c (cacos, 0x1p-105L, 0.5L, 1.570796326794896619231321691639729392766L, -4.812118250596034474977589134243684231352e-1L),
2324     TEST_c_c (cacos, 0x1p-105L, -0.5L, 1.570796326794896619231321691639729392766L, 4.812118250596034474977589134243684231352e-1L),
2325     TEST_c_c (cacos, -0x1p-105L, 0.5L, 1.570796326794896619231321691639773491431L, -4.812118250596034474977589134243684231352e-1L),
2326     TEST_c_c (cacos, -0x1p-105L, -0.5L, 1.570796326794896619231321691639773491431L, 4.812118250596034474977589134243684231352e-1L),
2327     TEST_c_c (cacos, 0.5L, 0x1p-105L, 1.047197551196597746154214461093167628066L, -2.846556599890768890940941645338546615370e-32L),
2328     TEST_c_c (cacos, -0.5L, 0x1p-105L, 2.094395102393195492308428922186335256131L, -2.846556599890768890940941645338546615370e-32L),
2329     TEST_c_c (cacos, 0.5L, -0x1p-105L, 1.047197551196597746154214461093167628066L, 2.846556599890768890940941645338546615370e-32L),
2330     TEST_c_c (cacos, -0.5L, -0x1p-105L, 2.094395102393195492308428922186335256131L, 2.846556599890768890940941645338546615370e-32L),
2331     TEST_c_c (cacos, 0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639726790195L, -2.465190328815661891911651766508706967729e-32L),
2332     TEST_c_c (cacos, 0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639726790195L, 2.465190328815661891911651766508706967729e-32L),
2333     TEST_c_c (cacos, -0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639776094002L, -2.465190328815661891911651766508706967729e-32L),
2334     TEST_c_c (cacos, -0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639776094002L, 2.465190328815661891911651766508706967729e-32L),
2335 #ifndef TEST_FLOAT
2336     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2337     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2338     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2339     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2340     TEST_c_c (cacos, 0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639726790195L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2341     TEST_c_c (cacos, -0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639776094002L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2342     TEST_c_c (cacos, 0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639726790195L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2343     TEST_c_c (cacos, -0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639776094002L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2344 #endif
2345     TEST_c_c (cacos, 0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2346     TEST_c_c (cacos, 0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2347     TEST_c_c (cacos, -0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2348     TEST_c_c (cacos, -0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2349     TEST_c_c (cacos, 0x1p-105L, 0.0L, 1.570796326794896619231321691639726790195L, -0.0L),
2350     TEST_c_c (cacos, -0x1p-105L, 0.0L, 1.570796326794896619231321691639776094002L, -0.0L),
2351     TEST_c_c (cacos, 0x1p-105L, -0.0L, 1.570796326794896619231321691639726790195L, 0.0L),
2352     TEST_c_c (cacos, -0x1p-105L, -0.0L, 1.570796326794896619231321691639776094002L, 0.0L),
2353 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2354     TEST_c_c (cacos, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, -8.813735870195430252326093249797922409363e-1L),
2355     TEST_c_c (cacos, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, 8.813735870195430252326093249797922409363e-1L),
2356     TEST_c_c (cacos, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, -8.813735870195430252326093249797922409363e-1L),
2357     TEST_c_c (cacos, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, 8.813735870195430252326093249797922409363e-1L),
2358     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.765281878332676474347460257221369818872e-17L, -1.091004200533850618345330909857103457781e-17L),
2359     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 3.141592653589793220809824599952738140723L, -1.091004200533850618345330909857103457781e-17L),
2360     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.765281878332676474347460257221369818872e-17L, 1.091004200533850618345330909857103457781e-17L),
2361     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 3.141592653589793220809824599952738140723L, 1.091004200533850618345330909857103457781e-17L),
2362     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2363     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2364     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2365     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2366     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, -5.867357004219059108790368268900490184505e-4916L),
2367     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 3.141592653589793224584855575465046128902L, -5.867357004219059108790368268900490184505e-4916L),
2368     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, 5.867357004219059108790368268900490184505e-4916L),
2369     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 3.141592653589793224584855575465046128902L, 5.867357004219059108790368268900490184505e-4916L),
2370     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2371     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2372     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2373     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2374     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.387778780781445675529539585113525401762e-17L, -0.0L),
2375     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 3.141592653589793224584855575465046128902L, -0.0L),
2376     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.387778780781445675529539585113525401762e-17L, 0.0L),
2377     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 3.141592653589793224584855575465046128902L, 0.0L),
2378 #endif
2379     TEST_c_c (cacos, 0x1p-112L, 0.5L, 1.570796326794896619231321691639751269838L, -4.812118250596034474977589134243684231352e-1L),
2380     TEST_c_c (cacos, 0x1p-112L, -0.5L, 1.570796326794896619231321691639751269838L, 4.812118250596034474977589134243684231352e-1L),
2381     TEST_c_c (cacos, -0x1p-112L, 0.5L, 1.570796326794896619231321691639751614359L, -4.812118250596034474977589134243684231352e-1L),
2382     TEST_c_c (cacos, -0x1p-112L, -0.5L, 1.570796326794896619231321691639751614359L, 4.812118250596034474977589134243684231352e-1L),
2383     TEST_c_c (cacos, 0.5L, 0x1p-112L, 1.047197551196597746154214461093167628066L, -2.223872343664663196047610660420739543258e-34L),
2384     TEST_c_c (cacos, -0.5L, 0x1p-112L, 2.094395102393195492308428922186335256131L, -2.223872343664663196047610660420739543258e-34L),
2385     TEST_c_c (cacos, 0.5L, -0x1p-112L, 1.047197551196597746154214461093167628066L, 2.223872343664663196047610660420739543258e-34L),
2386     TEST_c_c (cacos, -0.5L, -0x1p-112L, 2.094395102393195492308428922186335256131L, 2.223872343664663196047610660420739543258e-34L),
2387     TEST_c_c (cacos, 0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751249506L, -1.925929944387235853055977942584927318538e-34L),
2388     TEST_c_c (cacos, 0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751249506L, 1.925929944387235853055977942584927318538e-34L),
2389     TEST_c_c (cacos, -0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751634692L, -1.925929944387235853055977942584927318538e-34L),
2390     TEST_c_c (cacos, -0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751634692L, 1.925929944387235853055977942584927318538e-34L),
2391 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2392     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2393     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2394     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2395     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2396     TEST_c_c (cacos, 0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751249506L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2397     TEST_c_c (cacos, -0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751634692L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2398     TEST_c_c (cacos, 0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751249506L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2399     TEST_c_c (cacos, -0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751634692L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2400 #endif
2401     TEST_c_c (cacos, 0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2402     TEST_c_c (cacos, 0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2403     TEST_c_c (cacos, -0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2404     TEST_c_c (cacos, -0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2405     TEST_c_c (cacos, 0x1p-112L, 0.0L, 1.570796326794896619231321691639751249506L, -0.0L),
2406     TEST_c_c (cacos, -0x1p-112L, 0.0L, 1.570796326794896619231321691639751634692L, -0.0L),
2407     TEST_c_c (cacos, 0x1p-112L, -0.0L, 1.570796326794896619231321691639751249506L, 0.0L),
2408     TEST_c_c (cacos, -0x1p-112L, -0.0L, 1.570796326794896619231321691639751634692L, 0.0L),
2410     TEST_c_c (cacos, 0.75L, 1.25L, 1.11752014915610270578240049553777969L, -1.13239363160530819522266333696834467L),
2411     TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L),
2412     END_DATA (cacos)
2413   };
2415 static void
2416 cacos_test (void)
2418   errno = 0;
2419   FUNC(cacos) (BUILD_COMPLEX (0.7L, 1.2L));
2420   if (errno == ENOSYS)
2421     /* Function not implemented.  */
2422     return;
2424   START (cacos);
2425   RUN_TEST_LOOP_c_c (cacos, cacos_test_data, );
2426   END (cacos, complex);
2429 static const struct test_c_c_data cacosh_test_data[] =
2430   {
2431     START_DATA (cacosh),
2432     TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l),
2433     TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l),
2434     TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l),
2435     TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l),
2436     TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l),
2437     TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l),
2439     TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l),
2440     TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
2442     TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l),
2443     TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l),
2444     TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l),
2445     TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l),
2446     TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l),
2447     TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
2449     TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl),
2450     TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl),
2451     TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl),
2452     TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl),
2454     TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0),
2455     TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero),
2456     TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0),
2457     TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero),
2459     TEST_c_c (cacosh, plus_infty, qnan_value, plus_infty, qnan_value),
2460     TEST_c_c (cacosh, minus_infty, qnan_value, plus_infty, qnan_value),
2462     TEST_c_c (cacosh, 0, qnan_value, qnan_value, qnan_value),
2463     TEST_c_c (cacosh, minus_zero, qnan_value, qnan_value, qnan_value),
2465     TEST_c_c (cacosh, qnan_value, plus_infty, plus_infty, qnan_value),
2466     TEST_c_c (cacosh, qnan_value, minus_infty, plus_infty, qnan_value),
2468     TEST_c_c (cacosh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2469     TEST_c_c (cacosh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2471     TEST_c_c (cacosh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2472     TEST_c_c (cacosh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2474     TEST_c_c (cacosh, qnan_value, qnan_value, qnan_value, qnan_value),
2476     TEST_c_c (cacosh, plus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2477     TEST_c_c (cacosh, minus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2478     TEST_c_c (cacosh, plus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2479     TEST_c_c (cacosh, minus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2480     TEST_c_c (cacosh, plus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2481     TEST_c_c (cacosh, minus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2482     TEST_c_c (cacosh, plus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2483     TEST_c_c (cacosh, minus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2484     TEST_c_c (cacosh, plus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2485     TEST_c_c (cacosh, minus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2486     TEST_c_c (cacosh, plus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2487     TEST_c_c (cacosh, minus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2489     TEST_c_c (cacosh, -1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, M_PIl),
2490     TEST_c_c (cacosh, -1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, -M_PIl),
2491     TEST_c_c (cacosh, -1.0L, plus_zero, plus_zero, M_PIl),
2492     TEST_c_c (cacosh, -1.0L, minus_zero, plus_zero, -M_PIl),
2493     TEST_c_c (cacosh, -0.5L, plus_zero, plus_zero, 2.094395102393195492308428922186335256131L),
2494     TEST_c_c (cacosh, -0.5L, minus_zero, plus_zero, -2.094395102393195492308428922186335256131L),
2495     TEST_c_c (cacosh, 0.5L, plus_zero, plus_zero, 1.047197551196597746154214461093167628066L),
2496     TEST_c_c (cacosh, 0.5L, minus_zero, plus_zero, -1.047197551196597746154214461093167628066L),
2497     TEST_c_c (cacosh, 1.0L, plus_zero, plus_zero, plus_zero),
2498     TEST_c_c (cacosh, 1.0L, minus_zero, plus_zero, minus_zero),
2499     TEST_c_c (cacosh, 1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, plus_zero),
2500     TEST_c_c (cacosh, 1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, minus_zero),
2502     TEST_c_c (cacosh, 0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 8.881784197001252323389053344727730248720e-16L),
2503     TEST_c_c (cacosh, 0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -8.881784197001252323389053344727730248720e-16L),
2504     TEST_c_c (cacosh, -0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 3.141592653589792350284223683154270545292L),
2505     TEST_c_c (cacosh, -0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -3.141592653589792350284223683154270545292L),
2506     TEST_c_c (cacosh, 1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794895731052901991514519103193L),
2507     TEST_c_c (cacosh, -1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794897507409741391764983781004L),
2508     TEST_c_c (cacosh, 1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794895731052901991514519103193L),
2509     TEST_c_c (cacosh, -1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794897507409741391764983781004L),
2510 #ifndef TEST_FLOAT
2511     TEST_c_c (cacosh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
2512     TEST_c_c (cacosh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
2513     TEST_c_c (cacosh, -0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.141592653589793238462643383279502884197L),
2514     TEST_c_c (cacosh, -0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.141592653589793238462643383279502884197L),
2515     TEST_c_c (cacosh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2516     TEST_c_c (cacosh, -1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2517     TEST_c_c (cacosh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2518     TEST_c_c (cacosh, -1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2519 #endif
2520 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2521     TEST_c_c (cacosh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
2522     TEST_c_c (cacosh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
2523     TEST_c_c (cacosh, -0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 3.141592653589793238462643383279502884197L),
2524     TEST_c_c (cacosh, -0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -3.141592653589793238462643383279502884197L),
2525     TEST_c_c (cacosh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2526     TEST_c_c (cacosh, -1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2527     TEST_c_c (cacosh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2528     TEST_c_c (cacosh, -1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2529 #endif
2530     TEST_c_c (cacosh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
2531 #ifndef TEST_FLOAT
2532     TEST_c_c (cacosh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
2533 #endif
2534 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2535     TEST_c_c (cacosh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
2536 #endif
2537     TEST_c_c (cacosh, 0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442097L),
2538     TEST_c_c (cacosh, 0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442097L),
2539     TEST_c_c (cacosh, -0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442100L),
2540     TEST_c_c (cacosh, -0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442100L),
2541     TEST_c_c (cacosh, 1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2542     TEST_c_c (cacosh, -1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884195L),
2543     TEST_c_c (cacosh, 1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2544     TEST_c_c (cacosh, -1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884195L),
2545 #ifndef TEST_FLOAT
2546     TEST_c_c (cacosh, 0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2547     TEST_c_c (cacosh, 0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2548     TEST_c_c (cacosh, -0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2549     TEST_c_c (cacosh, -0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2550     TEST_c_c (cacosh, 1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2551     TEST_c_c (cacosh, -1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2552     TEST_c_c (cacosh, 1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2553     TEST_c_c (cacosh, -1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2554 #endif
2555 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2556     TEST_c_c (cacosh, 0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2557     TEST_c_c (cacosh, 0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2558     TEST_c_c (cacosh, -0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2559     TEST_c_c (cacosh, -0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2560     TEST_c_c (cacosh, 1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2561     TEST_c_c (cacosh, -1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2562     TEST_c_c (cacosh, 1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2563     TEST_c_c (cacosh, -1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2564 #endif
2565     TEST_c_c (cacosh, 0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.221357263937683325603909865564381489366L),
2566     TEST_c_c (cacosh, 0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.221357263937683325603909865564381489366L),
2567     TEST_c_c (cacosh, -0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.920235389652109912858733517715121394831L),
2568     TEST_c_c (cacosh, -0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.920235389652109912858733517715121394831L),
2569     TEST_c_c (cacosh, 1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 6.748888455860063801646649673121744318756e-1L),
2570     TEST_c_c (cacosh, -1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 2.466703808003786858297978415967328452322L),
2571     TEST_c_c (cacosh, 1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -6.748888455860063801646649673121744318756e-1L),
2572     TEST_c_c (cacosh, -1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -2.466703808003786858297978415967328452322L),
2573     TEST_c_c (cacosh, 0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.394493894017929688812643125003661339452L),
2574     TEST_c_c (cacosh, 0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.394493894017929688812643125003661339452L),
2575     TEST_c_c (cacosh, -0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.747098759571863549650000258275841544745L),
2576     TEST_c_c (cacosh, -0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.747098759571863549650000258275841544745L),
2577     TEST_c_c (cacosh, 1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 4.890443302710802929202843732146540079124e-1L),
2578     TEST_c_c (cacosh, -1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 2.652548323318712945542359010064848876285L),
2579     TEST_c_c (cacosh, 1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -4.890443302710802929202843732146540079124e-1L),
2580     TEST_c_c (cacosh, -1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -2.652548323318712945542359010064848876285L),
2581     TEST_c_c (cacosh, 0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.569458417435338878318763342108699202986L),
2582     TEST_c_c (cacosh, 0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.569458417435338878318763342108699202986L),
2583     TEST_c_c (cacosh, -0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.572134236154454360143880041170803681211L),
2584     TEST_c_c (cacosh, -0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.572134236154454360143880041170803681211L),
2585     TEST_c_c (cacosh, 1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 4.349129763101882771258049954181971959031e-2L),
2586     TEST_c_c (cacosh, -1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 3.098101355958774410750062883737683164607L),
2587     TEST_c_c (cacosh, 1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -4.349129763101882771258049954181971959031e-2L),
2588     TEST_c_c (cacosh, -1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -3.098101355958774410750062883737683164607L),
2589     TEST_c_c (cacosh, 0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796325518966635014803151387033957091L),
2590     TEST_c_c (cacosh, 0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796325518966635014803151387033957091L),
2591     TEST_c_c (cacosh, -0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796328070826603447840231892468927106L),
2592     TEST_c_c (cacosh, -0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796328070826603447840231892468927106L),
2593     TEST_c_c (cacosh, 1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 4.247867097467650115899790787875186617316e-5L),
2594     TEST_c_c (cacosh, -1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 3.141550174918818561961484385371624132331L),
2595     TEST_c_c (cacosh, 1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -4.247867097467650115899790787875186617316e-5L),
2596     TEST_c_c (cacosh, -1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -3.141550174918818561961484385371624132331L),
2597     TEST_c_c (cacosh, 0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691638670687364L),
2598     TEST_c_c (cacosh, 0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691638670687364L),
2599     TEST_c_c (cacosh, -0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691640832196834L),
2600     TEST_c_c (cacosh, -0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691640832196834L),
2601     TEST_c_c (cacosh, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 1.236292038260260888664514866456887257525e-15L),
2602     TEST_c_c (cacosh, -1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 3.141592653589792002170605123018614219682L),
2603     TEST_c_c (cacosh, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -1.236292038260260888664514866456887257525e-15L),
2604     TEST_c_c (cacosh, -1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -3.141592653589792002170605123018614219682L),
2605     TEST_c_c (cacosh, 0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442097L),
2606     TEST_c_c (cacosh, 0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442097L),
2607     TEST_c_c (cacosh, -0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442101L),
2608     TEST_c_c (cacosh, -0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442101L),
2609     TEST_c_c (cacosh, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 5.335635276982233498398987585285818977930e-20L),
2610     TEST_c_c (cacosh, -1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 3.141592653589793238409287030509680549213L),
2611     TEST_c_c (cacosh, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -5.335635276982233498398987585285818977930e-20L),
2612     TEST_c_c (cacosh, -1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -3.141592653589793238409287030509680549213L),
2613 #ifndef TEST_FLOAT
2614     TEST_c_c (cacosh, 0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2615     TEST_c_c (cacosh, 0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2616     TEST_c_c (cacosh, -0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2617     TEST_c_c (cacosh, -0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2618     TEST_c_c (cacosh, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
2619     TEST_c_c (cacosh, -1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 3.141592653589793238462643383279502884197L),
2620     TEST_c_c (cacosh, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
2621     TEST_c_c (cacosh, -1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -3.141592653589793238462643383279502884197L),
2622     TEST_c_c (cacosh, 0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2623     TEST_c_c (cacosh, 0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2624     TEST_c_c (cacosh, -0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2625     TEST_c_c (cacosh, -0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2626     TEST_c_c (cacosh, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
2627     TEST_c_c (cacosh, -1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 3.141592653589793238462643383279502884197L),
2628     TEST_c_c (cacosh, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
2629     TEST_c_c (cacosh, -1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -3.141592653589793238462643383279502884197L),
2630 #endif
2631 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2632     TEST_c_c (cacosh, 0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2633     TEST_c_c (cacosh, 0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2634     TEST_c_c (cacosh, -0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2635     TEST_c_c (cacosh, -0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2636     TEST_c_c (cacosh, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
2637     TEST_c_c (cacosh, -1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 3.141592653589793238462643383279502884197L),
2638     TEST_c_c (cacosh, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
2639     TEST_c_c (cacosh, -1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -3.141592653589793238462643383279502884197L),
2640     TEST_c_c (cacosh, 0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2641     TEST_c_c (cacosh, 0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2642     TEST_c_c (cacosh, -0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2643     TEST_c_c (cacosh, -0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2644     TEST_c_c (cacosh, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
2645     TEST_c_c (cacosh, -1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 3.141592653589793238462643383279502884197L),
2646     TEST_c_c (cacosh, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
2647     TEST_c_c (cacosh, -1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -3.141592653589793238462643383279502884197L),
2648 #endif
2649     TEST_c_c (cacosh, 0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796242501204621739026081991856762292L),
2650     TEST_c_c (cacosh, 0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796242501204621739026081991856762292L),
2651     TEST_c_c (cacosh, -0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796411088588616723617301287646121905L),
2652     TEST_c_c (cacosh, -0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796411088588616723617301287646121905L),
2653     TEST_c_c (cacosh, 0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 2.222118384408546368406374049167636760903e-4L),
2654     TEST_c_c (cacosh, -0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 3.141370441751352383825802745874586120521L),
2655     TEST_c_c (cacosh, 0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -2.222118384408546368406374049167636760903e-4L),
2656     TEST_c_c (cacosh, -0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -3.141370441751352383825802745874586120521L),
2657     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442097L),
2658     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442097L),
2659     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442101L),
2660     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442101L),
2661     TEST_c_c (cacosh, 0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 5.830451806317544230969669308596361881467e-36L),
2662     TEST_c_c (cacosh, -0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502878367L),
2663     TEST_c_c (cacosh, 0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -5.830451806317544230969669308596361881467e-36L),
2664     TEST_c_c (cacosh, -0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502878367L),
2665     TEST_c_c (cacosh, 0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2666     TEST_c_c (cacosh, 0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2667     TEST_c_c (cacosh, -0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2668     TEST_c_c (cacosh, -0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2669     TEST_c_c (cacosh, 0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 0.0L),
2670     TEST_c_c (cacosh, -0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502884197L),
2671     TEST_c_c (cacosh, 0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -0.0L),
2672     TEST_c_c (cacosh, -0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502884197L),
2673 #ifndef TEST_FLOAT
2674     TEST_c_c (cacosh, 0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896462222075823262262934288L),
2675     TEST_c_c (cacosh, 0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896462222075823262262934288L),
2676     TEST_c_c (cacosh, -0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896776240567560017239949909L),
2677     TEST_c_c (cacosh, -0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896776240567560017239949909L),
2678     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 9.590301705980041385828904092662391018164e-9L),
2679     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 3.141592643999491532482601997450598791535L),
2680     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -9.590301705980041385828904092662391018164e-9L),
2681     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -3.141592643999491532482601997450598791535L),
2682     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2683     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2684     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2685     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2686     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2687     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2688     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2689     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2690     TEST_c_c (cacosh, 0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2691     TEST_c_c (cacosh, 0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2692     TEST_c_c (cacosh, -0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2693     TEST_c_c (cacosh, -0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2694     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 0.0L),
2695     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2696     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -0.0L),
2697     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2698 #endif
2699 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2700     TEST_c_c (cacosh, 0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619154657020805582738031L),
2701     TEST_c_c (cacosh, 0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619154657020805582738031L),
2702     TEST_c_c (cacosh, -0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619307986362473920146166L),
2703     TEST_c_c (cacosh, -0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619307986362473920146166L),
2704     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 2.119177303101063432592523199680782317447e-10L),
2705     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 3.141592653377875508152537040020250564229L),
2706     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -2.119177303101063432592523199680782317447e-10L),
2707     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -3.141592653377875508152537040020250564229L),
2708 # if LDBL_MIN_EXP <= -16381
2709     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2710     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2711     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2712     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2713     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 1.748608650034385653922359120438227480943e-4923L),
2714     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2715     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -1.748608650034385653922359120438227480943e-4923L),
2716     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2717 # endif
2718     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2719     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2720     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2721     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2722     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 0.0L),
2723     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2724     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -0.0L),
2725     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2726 #endif
2727 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2728     TEST_c_c (cacosh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639742726335L),
2729     TEST_c_c (cacosh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639742726335L),
2730     TEST_c_c (cacosh, -0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639760157863L),
2731     TEST_c_c (cacosh, -0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639760157863L),
2732     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 5.394221422390606848017034778914096659726e-17L),
2733     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 3.141592653589793184520429159373434404027L),
2734     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -5.394221422390606848017034778914096659726e-17L),
2735     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -3.141592653589793184520429159373434404027L),
2736     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2737     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2738     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2739     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2740     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2741     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2742     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2743     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2744     TEST_c_c (cacosh, 0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2745     TEST_c_c (cacosh, 0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2746     TEST_c_c (cacosh, -0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2747     TEST_c_c (cacosh, -0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2748     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 0.0L),
2749     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2750     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -0.0L),
2751     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2752 #endif
2753 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2754     TEST_c_c (cacosh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751374007L),
2755     TEST_c_c (cacosh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751374007L),
2756     TEST_c_c (cacosh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751510190L),
2757     TEST_c_c (cacosh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751510190L),
2758     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 4.767863183742677481693563511435642755521e-18L),
2759     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 3.141592653589793233694780199536825402504L),
2760     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -4.767863183742677481693563511435642755521e-18L),
2761     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -3.141592653589793233694780199536825402504L),
2762     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2763     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2764     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2765     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2766     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 4.148847925325683229178506116378864361396e-4916L),
2767     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2768     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -4.148847925325683229178506116378864361396e-4916L),
2769     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2770     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2771     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2772     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2773     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2774     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 0.0L),
2775     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2776     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -0.0L),
2777     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2778 #endif
2779     TEST_c_c (cacosh, 0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796242501197085295336701632142060969L),
2780     TEST_c_c (cacosh, 0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796242501197085295336701632142060969L),
2781     TEST_c_c (cacosh, -0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796411088596153167306681647360823228L),
2782     TEST_c_c (cacosh, -0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796411088596153167306681647360823228L),
2783     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 4.391863861910487109445187743978204002614e-4L),
2784     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 3.141153467203602189751698864505105063797L),
2785     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -4.391863861910487109445187743978204002614e-4L),
2786     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -3.141153467203602189751698864505105063797L),
2787     TEST_c_c (cacosh, 0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442097L),
2788     TEST_c_c (cacosh, 0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442097L),
2789     TEST_c_c (cacosh, -0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442101L),
2790     TEST_c_c (cacosh, -0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442101L),
2791     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.452669847162035876032494826387364972849e-4L),
2792     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.141247386605077034875040133796864147700L),
2793     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.452669847162035876032494826387364972849e-4L),
2794     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.141247386605077034875040133796864147700L),
2795     TEST_c_c (cacosh, 0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2796     TEST_c_c (cacosh, 0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2797     TEST_c_c (cacosh, -0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2798     TEST_c_c (cacosh, -0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2799     TEST_c_c (cacosh, 0x0.ffffffp0L, 0.0L, 0.0L, 3.452669847162035876032494826387364972849e-4L),
2800     TEST_c_c (cacosh, -0x0.ffffffp0L, 0.0L, 0.0L, 3.141247386605077034875040133796864147700L),
2801     TEST_c_c (cacosh, 0x0.ffffffp0L, -0.0L, 0.0L, -3.452669847162035876032494826387364972849e-4L),
2802     TEST_c_c (cacosh, -0x0.ffffffp0L, -0.0L, 0.0L, -3.141247386605077034875040133796864147700L),
2803     TEST_c_c (cacosh, 0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796220170866625230343643673321150378L),
2804     TEST_c_c (cacosh, 0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796220170866625230343643673321150378L),
2805     TEST_c_c (cacosh, -0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796433418926613232299739606181733819L),
2806     TEST_c_c (cacosh, -0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796433418926613232299739606181733819L),
2807     TEST_c_c (cacosh, 0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 1.047197551196603215914744618665204532273L),
2808     TEST_c_c (cacosh, -0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 2.094395102393190022547898764614298351924L),
2809     TEST_c_c (cacosh, 0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -1.047197551196603215914744618665204532273L),
2810     TEST_c_c (cacosh, -0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -2.094395102393190022547898764614298351924L),
2811     TEST_c_c (cacosh, 0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442096L),
2812     TEST_c_c (cacosh, 0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442096L),
2813     TEST_c_c (cacosh, -0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442101L),
2814     TEST_c_c (cacosh, -0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442101L),
2815     TEST_c_c (cacosh, 0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2816     TEST_c_c (cacosh, -0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2817     TEST_c_c (cacosh, 0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2818     TEST_c_c (cacosh, -0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2819     TEST_c_c (cacosh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796207585607068450636380271254316214L),
2820     TEST_c_c (cacosh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796207585607068450636380271254316214L),
2821     TEST_c_c (cacosh, -0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796446004186170012007003008248567984L),
2822     TEST_c_c (cacosh, -0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796446004186170012007003008248567984L),
2823     TEST_c_c (cacosh, 0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442096L),
2824     TEST_c_c (cacosh, 0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442096L),
2825     TEST_c_c (cacosh, -0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442101L),
2826     TEST_c_c (cacosh, -0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442101L),
2827     TEST_c_c (cacosh, 0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2828     TEST_c_c (cacosh, -0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2829     TEST_c_c (cacosh, 0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2830     TEST_c_c (cacosh, -0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2831     TEST_c_c (cacosh, 0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2832     TEST_c_c (cacosh, 0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2833     TEST_c_c (cacosh, -0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2834     TEST_c_c (cacosh, -0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2835     TEST_c_c (cacosh, 0x1p-23L, 0.0L, 0.0L, 1.570796207585607068449789347324000006847L),
2836     TEST_c_c (cacosh, -0x1p-23L, 0.0L, 0.0L, 1.570796446004186170012854035955502877351L),
2837     TEST_c_c (cacosh, 0x1p-23L, -0.0L, 0.0L, -1.570796207585607068449789347324000006847L),
2838     TEST_c_c (cacosh, -0x1p-23L, -0.0L, 0.0L, -1.570796446004186170012854035955502877351L),
2839     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2840     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2841     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2842     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2843 #ifndef TEST_FLOAT
2844     TEST_c_c (cacosh, 0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896462222075823262236786996L),
2845     TEST_c_c (cacosh, 0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896462222075823262236786996L),
2846     TEST_c_c (cacosh, -0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896776240567560017266097201L),
2847     TEST_c_c (cacosh, -0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896776240567560017266097201L),
2848     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 1.895456983915074112227925127005564372844e-8L),
2849     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 3.141592634635223399311902261000251614142L),
2850     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -1.895456983915074112227925127005564372844e-8L),
2851     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -3.141592634635223399311902261000251614142L),
2852     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2853     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2854     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2855     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2856     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2857     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2858     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2859     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2860     TEST_c_c (cacosh, 0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2861     TEST_c_c (cacosh, 0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2862     TEST_c_c (cacosh, -0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2863     TEST_c_c (cacosh, -0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2864     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0.0L, 0.0L, 1.490116119384765638786343542550461592240e-8L),
2865     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0.0L, 0.0L, 3.141592638688632044614986995416067458693L),
2866     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0.0L, 0.0L, -1.490116119384765638786343542550461592240e-8L),
2867     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0.0L, 0.0L, -3.141592638688632044614986995416067458693L),
2868 #endif
2869     TEST_c_c (cacosh, 0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896420628589431857911675917L),
2870     TEST_c_c (cacosh, 0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896420628589431857911675917L),
2871     TEST_c_c (cacosh, -0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896817834053951421591208280L),
2872     TEST_c_c (cacosh, -0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896817834053951421591208280L),
2873     TEST_c_c (cacosh, 0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 1.047197551196597746154214461093186605110L),
2874     TEST_c_c (cacosh, -0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 2.094395102393195492308428922186316279087L),
2875     TEST_c_c (cacosh, 0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -1.047197551196597746154214461093186605110L),
2876     TEST_c_c (cacosh, -0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -2.094395102393195492308428922186316279087L),
2877 #ifndef TEST_FLOAT
2878     TEST_c_c (cacosh, 0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2879     TEST_c_c (cacosh, 0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2880     TEST_c_c (cacosh, -0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2881     TEST_c_c (cacosh, -0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2882     TEST_c_c (cacosh, 0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
2883     TEST_c_c (cacosh, -0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
2884     TEST_c_c (cacosh, 0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
2885     TEST_c_c (cacosh, -0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
2886 #endif
2887     TEST_c_c (cacosh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896397186716766608443357372L),
2888     TEST_c_c (cacosh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896397186716766608443357372L),
2889     TEST_c_c (cacosh, -0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896841275926616671059526825L),
2890     TEST_c_c (cacosh, -0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896841275926616671059526825L),
2891 #ifndef TEST_FLOAT
2892     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2893     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2894     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2895     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2896     TEST_c_c (cacosh, 0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
2897     TEST_c_c (cacosh, -0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
2898     TEST_c_c (cacosh, 0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
2899     TEST_c_c (cacosh, -0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
2900 #endif
2901     TEST_c_c (cacosh, 0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2902     TEST_c_c (cacosh, 0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2903     TEST_c_c (cacosh, -0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2904     TEST_c_c (cacosh, -0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2905     TEST_c_c (cacosh, 0x1p-52L, 0.0L, 0.0L, 1.570796326794896397186716766608443357372L),
2906     TEST_c_c (cacosh, -0x1p-52L, 0.0L, 0.0L, 1.570796326794896841275926616671059526825L),
2907     TEST_c_c (cacosh, 0x1p-52L, -0.0L, 0.0L, -1.570796326794896397186716766608443357372L),
2908     TEST_c_c (cacosh, -0x1p-52L, -0.0L, 0.0L, -1.570796326794896841275926616671059526825L),
2909 #ifndef TEST_FLOAT
2910     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2911     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2912     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2913     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2914 #endif
2915 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2916     TEST_c_c (cacosh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619154657020805582738025L),
2917     TEST_c_c (cacosh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619154657020805582738025L),
2918     TEST_c_c (cacosh, -0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619307986362473920146173L),
2919     TEST_c_c (cacosh, -0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619307986362473920146173L),
2920     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 4.188407771167967636741951941902992986043e-10L),
2921     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 3.141592653170952461345846619605307690007L),
2922     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -4.188407771167967636741951941902992986043e-10L),
2923     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -3.141592653170952461345846619605307690007L),
2924 # if LDBL_MIN_EXP <= -16381
2925     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2926     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2927     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2928     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2929     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.292722539913596233371825532007990724506e-10L),
2930     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.141592653260520984471283759942320330996L),
2931     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.292722539913596233371825532007990724506e-10L),
2932     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.141592653260520984471283759942320330996L),
2933 # endif
2934     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2935     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2936     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2937     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2938     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.292722539913596233371825532007990724506e-10L),
2939     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.141592653260520984471283759942320330996L),
2940     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.292722539913596233371825532007990724506e-10L),
2941     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.141592653260520984471283759942320330996L),
2942 #endif
2943     TEST_c_c (cacosh, 0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619134347701278529840650L),
2944     TEST_c_c (cacosh, 0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619134347701278529840650L),
2945     TEST_c_c (cacosh, -0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619328295682000973043547L),
2946     TEST_c_c (cacosh, -0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619328295682000973043547L),
2947     TEST_c_c (cacosh, 0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 1.047197551196597746154214461093167628070L),
2948     TEST_c_c (cacosh, -0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 2.094395102393195492308428922186335256127L),
2949     TEST_c_c (cacosh, 0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -1.047197551196597746154214461093167628070L),
2950     TEST_c_c (cacosh, -0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -2.094395102393195492308428922186335256127L),
2951 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2952     TEST_c_c (cacosh, 0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2953     TEST_c_c (cacosh, 0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2954     TEST_c_c (cacosh, -0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2955     TEST_c_c (cacosh, -0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2956     TEST_c_c (cacosh, 0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
2957     TEST_c_c (cacosh, -0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
2958     TEST_c_c (cacosh, 0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
2959     TEST_c_c (cacosh, -0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
2960 #endif
2961     TEST_c_c (cacosh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619122901474391200998698L),
2962     TEST_c_c (cacosh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619122901474391200998698L),
2963     TEST_c_c (cacosh, -0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619339741908888301885499L),
2964     TEST_c_c (cacosh, -0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619339741908888301885499L),
2965 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2966     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2967     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2968     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2969     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2970     TEST_c_c (cacosh, 0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
2971     TEST_c_c (cacosh, -0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
2972     TEST_c_c (cacosh, 0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
2973     TEST_c_c (cacosh, -0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
2974 #endif
2975     TEST_c_c (cacosh, 0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2976     TEST_c_c (cacosh, 0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2977     TEST_c_c (cacosh, -0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2978     TEST_c_c (cacosh, -0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2979     TEST_c_c (cacosh, 0x1p-63L, 0.0L, 0.0L, 1.570796326794896619122901474391200998698L),
2980     TEST_c_c (cacosh, -0x1p-63L, 0.0L, 0.0L, 1.570796326794896619339741908888301885499L),
2981     TEST_c_c (cacosh, 0x1p-63L, -0.0L, 0.0L, -1.570796326794896619122901474391200998698L),
2982     TEST_c_c (cacosh, -0x1p-63L, -0.0L, 0.0L, -1.570796326794896619339741908888301885499L),
2983 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2984     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2985     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2986     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2987     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2988 #endif
2989 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2990     TEST_c_c (cacosh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639734010571L),
2991     TEST_c_c (cacosh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639734010571L),
2992     TEST_c_c (cacosh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639768873627L),
2993     TEST_c_c (cacosh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639768873627L),
2994     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 1.997188458999618357060632049675702684031e-16L),
2995     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 3.141592653589793038743797483317667178134L),
2996     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -1.997188458999618357060632049675702684031e-16L),
2997     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -3.141592653589793038743797483317667178134L),
2998     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
2999     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3000     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3001     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3002     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3003     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3004     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3005     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3006     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3007     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3008     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3009     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3010     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 1.570092458683775059393382371963565104164e-16L),
3011     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 3.141592653589793081453397514901996944859L),
3012     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -1.570092458683775059393382371963565104164e-16L),
3013     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -3.141592653589793081453397514901996944859L),
3014 #endif
3015     TEST_c_c (cacosh, 0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639729392766L),
3016     TEST_c_c (cacosh, 0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639729392766L),
3017     TEST_c_c (cacosh, -0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639773491431L),
3018     TEST_c_c (cacosh, -0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639773491431L),
3019     TEST_c_c (cacosh, 0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 1.047197551196597746154214461093167628066L),
3020     TEST_c_c (cacosh, -0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 2.094395102393195492308428922186335256131L),
3021     TEST_c_c (cacosh, 0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -1.047197551196597746154214461093167628066L),
3022     TEST_c_c (cacosh, -0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -2.094395102393195492308428922186335256131L),
3023     TEST_c_c (cacosh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639726790195L),
3024     TEST_c_c (cacosh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639726790195L),
3025     TEST_c_c (cacosh, -0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639776094002L),
3026     TEST_c_c (cacosh, -0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639776094002L),
3027 #ifndef TEST_FLOAT
3028     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3029     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3030     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3031     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3032     TEST_c_c (cacosh, 0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3033     TEST_c_c (cacosh, -0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3034     TEST_c_c (cacosh, 0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3035     TEST_c_c (cacosh, -0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3036 #endif
3037     TEST_c_c (cacosh, 0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3038     TEST_c_c (cacosh, 0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3039     TEST_c_c (cacosh, -0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3040     TEST_c_c (cacosh, -0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3041     TEST_c_c (cacosh, 0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639726790195L),
3042     TEST_c_c (cacosh, -0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639776094002L),
3043     TEST_c_c (cacosh, 0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639726790195L),
3044     TEST_c_c (cacosh, -0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639776094002L),
3045 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3046     TEST_c_c (cacosh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751305915L),
3047     TEST_c_c (cacosh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751305915L),
3048     TEST_c_c (cacosh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751578282L),
3049     TEST_c_c (cacosh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751578282L),
3050     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 1.765281878332676474347460257221369818872e-17L),
3051     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 3.141592653589793220809824599952738140723L),
3052     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -1.765281878332676474347460257221369818872e-17L),
3053     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -3.141592653589793220809824599952738140723L),
3054     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3055     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3056     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3057     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3058     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 1.387778780781445675529539585113525401762e-17L),
3059     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 3.141592653589793224584855575465046128902L),
3060     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -1.387778780781445675529539585113525401762e-17L),
3061     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -3.141592653589793224584855575465046128902L),
3062     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3063     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3064     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3065     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3066     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 1.387778780781445675529539585113525401762e-17L),
3067     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 3.141592653589793224584855575465046128902L),
3068     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -1.387778780781445675529539585113525401762e-17L),
3069     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -3.141592653589793224584855575465046128902L),
3070 #endif
3071     TEST_c_c (cacosh, 0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751269838L),
3072     TEST_c_c (cacosh, 0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751269838L),
3073     TEST_c_c (cacosh, -0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751614359L),
3074     TEST_c_c (cacosh, -0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751614359L),
3075     TEST_c_c (cacosh, 0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 1.047197551196597746154214461093167628066L),
3076     TEST_c_c (cacosh, -0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 2.094395102393195492308428922186335256131L),
3077     TEST_c_c (cacosh, 0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -1.047197551196597746154214461093167628066L),
3078     TEST_c_c (cacosh, -0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -2.094395102393195492308428922186335256131L),
3079     TEST_c_c (cacosh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751249506L),
3080     TEST_c_c (cacosh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751249506L),
3081     TEST_c_c (cacosh, -0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751634692L),
3082     TEST_c_c (cacosh, -0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751634692L),
3083 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3084     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3085     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3086     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3087     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3088     TEST_c_c (cacosh, 0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3089     TEST_c_c (cacosh, -0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3090     TEST_c_c (cacosh, 0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3091     TEST_c_c (cacosh, -0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3092 #endif
3093     TEST_c_c (cacosh, 0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3094     TEST_c_c (cacosh, 0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3095     TEST_c_c (cacosh, -0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3096     TEST_c_c (cacosh, -0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3097     TEST_c_c (cacosh, 0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751249506L),
3098     TEST_c_c (cacosh, -0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751634692L),
3099     TEST_c_c (cacosh, 0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751249506L),
3100     TEST_c_c (cacosh, -0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751634692L),
3102     TEST_c_c (cacosh, 0.75L, 1.25L, 1.13239363160530819522266333696834467L, 1.11752014915610270578240049553777969L),
3103     TEST_c_c (cacosh, -2, -3, 1.9833870299165354323470769028940395L, -2.1414491111159960199416055713254211L),
3104     END_DATA (cacosh)
3105   };
3107 static void
3108 cacosh_test (void)
3110   errno = 0;
3111   FUNC(cacosh) (BUILD_COMPLEX (0.7L, 1.2L));
3112   if (errno == ENOSYS)
3113     /* Function not implemented.  */
3114     return;
3116   START (cacosh);
3117   RUN_TEST_LOOP_c_c (cacosh, cacosh_test_data, );
3118   END (cacosh, complex);
3122 static const struct test_c_f_data carg_test_data[] =
3123   {
3124     START_DATA (carg);
3125     /* carg (x + iy) is specified as atan2 (y, x) */
3127     /* carg (x + i 0) == 0 for x > 0.  */
3128     TEST_c_f (carg, 2.0, 0, 0),
3129     /* carg (x - i 0) == -0 for x > 0.  */
3130     TEST_c_f (carg, 2.0, minus_zero, minus_zero),
3132     TEST_c_f (carg, 0, 0, 0),
3133     TEST_c_f (carg, 0, minus_zero, minus_zero),
3135     /* carg (x + i 0) == +pi for x < 0.  */
3136     TEST_c_f (carg, -2.0, 0, M_PIl),
3138     /* carg (x - i 0) == -pi for x < 0.  */
3139     TEST_c_f (carg, -2.0, minus_zero, -M_PIl),
3141     TEST_c_f (carg, minus_zero, 0, M_PIl),
3142     TEST_c_f (carg, minus_zero, minus_zero, -M_PIl),
3144     /* carg (+0 + i y) == pi/2 for y > 0.  */
3145     TEST_c_f (carg, 0, 2.0, M_PI_2l),
3147     /* carg (-0 + i y) == pi/2 for y > 0.  */
3148     TEST_c_f (carg, minus_zero, 2.0, M_PI_2l),
3150     /* carg (+0 + i y) == -pi/2 for y < 0.  */
3151     TEST_c_f (carg, 0, -2.0, -M_PI_2l),
3153     /* carg (-0 + i y) == -pi/2 for y < 0.  */
3154     TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l),
3156     /* carg (inf + i y) == +0 for finite y > 0.  */
3157     TEST_c_f (carg, plus_infty, 2.0, 0),
3159     /* carg (inf + i y) == -0 for finite y < 0.  */
3160     TEST_c_f (carg, plus_infty, -2.0, minus_zero),
3162     /* carg(x + i inf) == pi/2 for finite x.  */
3163     TEST_c_f (carg, 10.0, plus_infty, M_PI_2l),
3165     /* carg(x - i inf) == -pi/2 for finite x.  */
3166     TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l),
3168     /* carg (-inf + i y) == +pi for finite y > 0.  */
3169     TEST_c_f (carg, minus_infty, 10.0, M_PIl),
3171     /* carg (-inf + i y) == -pi for finite y < 0.  */
3172     TEST_c_f (carg, minus_infty, -10.0, -M_PIl),
3174     TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l),
3176     TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l),
3178     TEST_c_f (carg, minus_infty, plus_infty, M_PI_34l),
3180     TEST_c_f (carg, minus_infty, minus_infty, -M_PI_34l),
3182     TEST_c_f (carg, qnan_value, qnan_value, qnan_value),
3183     END_DATA (carg);
3184   };
3186 static void
3187 carg_test (void)
3189   START (carg);
3190   RUN_TEST_LOOP_c_f (carg, carg_test_data, );
3191   END (carg);
3194 static const struct test_c_c_data casin_test_data[] =
3195   {
3196     START_DATA (casin),
3197     TEST_c_c (casin, 0, 0, 0.0, 0.0),
3198     TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0),
3199     TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero),
3200     TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero),
3202     TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty),
3203     TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty),
3204     TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty),
3205     TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty),
3207     TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty),
3208     TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty),
3209     TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty),
3210     TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty),
3211     TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty),
3212     TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty),
3213     TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty),
3214     TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty),
3216     TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty),
3217     TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty),
3218     TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty),
3219     TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty),
3221     TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty),
3222     TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty),
3223     TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty),
3224     TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty),
3226     TEST_c_c (casin, qnan_value, plus_infty, qnan_value, plus_infty),
3227     TEST_c_c (casin, qnan_value, minus_infty, qnan_value, minus_infty),
3229     TEST_c_c (casin, 0.0, qnan_value, 0.0, qnan_value),
3230     TEST_c_c (casin, minus_zero, qnan_value, minus_zero, qnan_value),
3232     TEST_c_c (casin, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3233     TEST_c_c (casin, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3235     TEST_c_c (casin, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3236     TEST_c_c (casin, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3238     TEST_c_c (casin, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3239     TEST_c_c (casin, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3241     TEST_c_c (casin, qnan_value, qnan_value, qnan_value, qnan_value),
3243     TEST_c_c (casin, plus_zero, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L),
3244     TEST_c_c (casin, minus_zero, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L),
3245     TEST_c_c (casin, plus_zero, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L),
3246     TEST_c_c (casin, minus_zero, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L),
3247     TEST_c_c (casin, plus_zero, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L),
3248     TEST_c_c (casin, minus_zero, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L),
3249     TEST_c_c (casin, plus_zero, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L),
3250     TEST_c_c (casin, minus_zero, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L),
3251     TEST_c_c (casin, plus_zero, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L),
3252     TEST_c_c (casin, minus_zero, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L),
3253     TEST_c_c (casin, plus_zero, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L),
3254     TEST_c_c (casin, minus_zero, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L),
3256     TEST_c_c (casin, -1.5L, plus_zero, -M_PI_2l, 0.9624236501192068949955178268487368462704L),
3257     TEST_c_c (casin, -1.5L, minus_zero, -M_PI_2l, -0.9624236501192068949955178268487368462704L),
3258     TEST_c_c (casin, -1.0L, plus_zero, -M_PI_2l, plus_zero),
3259     TEST_c_c (casin, -1.0L, minus_zero, -M_PI_2l, minus_zero),
3260     TEST_c_c (casin, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L, plus_zero),
3261     TEST_c_c (casin, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L, minus_zero),
3262     TEST_c_c (casin, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L, plus_zero),
3263     TEST_c_c (casin, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L, minus_zero),
3264     TEST_c_c (casin, 1.0L, plus_zero, M_PI_2l, plus_zero),
3265     TEST_c_c (casin, 1.0L, minus_zero, M_PI_2l, minus_zero),
3266     TEST_c_c (casin, 1.5L, plus_zero, M_PI_2l, 0.9624236501192068949955178268487368462704L),
3267     TEST_c_c (casin, 1.5L, minus_zero, M_PI_2l, -0.9624236501192068949955178268487368462704L),
3269     TEST_c_c (casin, 0x1p50L, 1.0L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3270     TEST_c_c (casin, 0x1p50L, -1.0L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3271     TEST_c_c (casin, -0x1p50L, 1.0L, -1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3272     TEST_c_c (casin, -0x1p50L, -1.0L, -1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3273     TEST_c_c (casin, 1.0L, 0x1p50L, 8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3274     TEST_c_c (casin, -1.0L, 0x1p50L, -8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3275     TEST_c_c (casin, 1.0L, -0x1p50L, 8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3276     TEST_c_c (casin, -1.0L, -0x1p50L, -8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3277 #ifndef TEST_FLOAT
3278     TEST_c_c (casin, 0x1p500L, 1.0L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3279     TEST_c_c (casin, 0x1p500L, -1.0L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3280     TEST_c_c (casin, -0x1p500L, 1.0L, -1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3281     TEST_c_c (casin, -0x1p500L, -1.0L, -1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3282     TEST_c_c (casin, 1.0L, 0x1p500L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3283     TEST_c_c (casin, -1.0L, 0x1p500L, -3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3284     TEST_c_c (casin, 1.0L, -0x1p500L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3285     TEST_c_c (casin, -1.0L, -0x1p500L, -3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3286 #endif
3287 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3288     TEST_c_c (casin, 0x1p5000L, 1.0L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3289     TEST_c_c (casin, 0x1p5000L, -1.0L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3290     TEST_c_c (casin, -0x1p5000L, 1.0L, -1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3291     TEST_c_c (casin, -0x1p5000L, -1.0L, -1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3292     TEST_c_c (casin, 1.0L, 0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3293     TEST_c_c (casin, -1.0L, 0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3294     TEST_c_c (casin, 1.0L, -0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3295     TEST_c_c (casin, -1.0L, -0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3296 #endif
3298     TEST_c_c (casin, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, 8.973081118419833726837456344608533993585e1L),
3299 #ifndef TEST_FLOAT
3300     TEST_c_c (casin, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, 7.107906849659093345062145442726115449315e2L),
3301 #endif
3302 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3303     TEST_c_c (casin, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, 1.135753137836666928715489992987020363057e4L),
3304 #endif
3306     TEST_c_c (casin, 0x1.fp-129L, 1.5L, 1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3307     TEST_c_c (casin, 0x1.fp-129L, -1.5L, 1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3308     TEST_c_c (casin, -0x1.fp-129L, 1.5L, -1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3309     TEST_c_c (casin, -0x1.fp-129L, -1.5L, -1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3310     TEST_c_c (casin, 1.5L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3311     TEST_c_c (casin, -1.5L, 0x1.fp-129L, -1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3312     TEST_c_c (casin, 1.5L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3313     TEST_c_c (casin, -1.5L, -0x1.fp-129L, -1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3314 #ifndef TEST_FLOAT
3315     TEST_c_c (casin, 0x1.fp-1025L, 1.5L, 2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3316     TEST_c_c (casin, 0x1.fp-1025L, -1.5L, 2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3317     TEST_c_c (casin, -0x1.fp-1025L, 1.5L, -2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3318     TEST_c_c (casin, -0x1.fp-1025L, -1.5L, -2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3319     TEST_c_c (casin, 1.5L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3320     TEST_c_c (casin, -1.5L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3321     TEST_c_c (casin, 1.5L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3322     TEST_c_c (casin, -1.5L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3323 #endif
3324 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3325     TEST_c_c (casin, 0x1.fp-16385L, 1.5L, 4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3326     TEST_c_c (casin, 0x1.fp-16385L, -1.5L, 4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3327     TEST_c_c (casin, -0x1.fp-16385L, 1.5L, -4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3328     TEST_c_c (casin, -0x1.fp-16385L, -1.5L, -4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3329     TEST_c_c (casin, 1.5L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3330     TEST_c_c (casin, -1.5L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3331     TEST_c_c (casin, 1.5L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3332     TEST_c_c (casin, -1.5L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3333 #endif
3335     TEST_c_c (casin, 0.5L, 1.0L, 3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3336     TEST_c_c (casin, 0.5L, -1.0L, 3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3337     TEST_c_c (casin, -0.5L, 1.0L, -3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3338     TEST_c_c (casin, -0.5L, -1.0L, -3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3339     TEST_c_c (casin, 1.0L, 0.5L, 8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3340     TEST_c_c (casin, -1.0L, 0.5L, -8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3341     TEST_c_c (casin, 1.0L, -0.5L, 8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3342     TEST_c_c (casin, -1.0L, -0.5L, -8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3343     TEST_c_c (casin, 0.25L, 1.0L, 1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3344     TEST_c_c (casin, 0.25L, -1.0L, 1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3345     TEST_c_c (casin, -0.25L, 1.0L, -1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3346     TEST_c_c (casin, -0.25L, -1.0L, -1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3347     TEST_c_c (casin, 1.0L, 0.25L, 1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3348     TEST_c_c (casin, -1.0L, 0.25L, -1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3349     TEST_c_c (casin, 1.0L, -0.25L, 1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3350     TEST_c_c (casin, -1.0L, -0.25L, -1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3351     TEST_c_c (casin, 0x1.fp-10L, 1.0L, 1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3352     TEST_c_c (casin, 0x1.fp-10L, -1.0L, 1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3353     TEST_c_c (casin, -0x1.fp-10L, 1.0L, -1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3354     TEST_c_c (casin, -0x1.fp-10L, -1.0L, -1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3355     TEST_c_c (casin, 1.0L, 0x1.fp-10L, 1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3356     TEST_c_c (casin, -1.0L, 0x1.fp-10L, -1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3357     TEST_c_c (casin, 1.0L, -0x1.fp-10L, 1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3358     TEST_c_c (casin, -1.0L, -0x1.fp-10L, -1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3359     TEST_c_c (casin, 0x1.fp-30L, 1.0L, 1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3360     TEST_c_c (casin, 0x1.fp-30L, -1.0L, 1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3361     TEST_c_c (casin, -0x1.fp-30L, 1.0L, -1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3362     TEST_c_c (casin, -0x1.fp-30L, -1.0L, -1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3363     TEST_c_c (casin, 1.0L, 0x1.fp-30L, 1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3364     TEST_c_c (casin, -1.0L, 0x1.fp-30L, -1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3365     TEST_c_c (casin, 1.0L, -0x1.fp-30L, 1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3366     TEST_c_c (casin, -1.0L, -0x1.fp-30L, -1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3367     TEST_c_c (casin, 0x1.fp-100L, 1.0L, 1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3368     TEST_c_c (casin, 0x1.fp-100L, -1.0L, 1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3369     TEST_c_c (casin, -0x1.fp-100L, 1.0L, -1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3370     TEST_c_c (casin, -0x1.fp-100L, -1.0L, -1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3371     TEST_c_c (casin, 1.0L, 0x1.fp-100L, 1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3372     TEST_c_c (casin, -1.0L, 0x1.fp-100L, -1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3373     TEST_c_c (casin, 1.0L, -0x1.fp-100L, 1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3374     TEST_c_c (casin, -1.0L, -0x1.fp-100L, -1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3375     TEST_c_c (casin, 0x1.fp-129L, 1.0L, 2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3376     TEST_c_c (casin, 0x1.fp-129L, -1.0L, 2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3377     TEST_c_c (casin, -0x1.fp-129L, 1.0L, -2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3378     TEST_c_c (casin, -0x1.fp-129L, -1.0L, -2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3379     TEST_c_c (casin, 1.0L, 0x1.fp-129L, 1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3380     TEST_c_c (casin, -1.0L, 0x1.fp-129L, -1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3381     TEST_c_c (casin, 1.0L, -0x1.fp-129L, 1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3382     TEST_c_c (casin, -1.0L, -0x1.fp-129L, -1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3383 #ifndef TEST_FLOAT
3384     TEST_c_c (casin, 0x1.fp-1000L, 1.0L, 1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3385     TEST_c_c (casin, 0x1.fp-1000L, -1.0L, 1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3386     TEST_c_c (casin, -0x1.fp-1000L, 1.0L, -1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3387     TEST_c_c (casin, -0x1.fp-1000L, -1.0L, -1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3388     TEST_c_c (casin, 1.0L, 0x1.fp-1000L, 1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3389     TEST_c_c (casin, -1.0L, 0x1.fp-1000L, -1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3390     TEST_c_c (casin, 1.0L, -0x1.fp-1000L, 1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3391     TEST_c_c (casin, -1.0L, -0x1.fp-1000L, -1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3392     TEST_c_c (casin, 0x1.fp-1025L, 1.0L, 3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3393     TEST_c_c (casin, 0x1.fp-1025L, -1.0L, 3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3394     TEST_c_c (casin, -0x1.fp-1025L, 1.0L, -3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3395     TEST_c_c (casin, -0x1.fp-1025L, -1.0L, -3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3396     TEST_c_c (casin, 1.0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3397     TEST_c_c (casin, -1.0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3398     TEST_c_c (casin, 1.0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3399     TEST_c_c (casin, -1.0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3400 #endif
3401 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3402     TEST_c_c (casin, 0x1.fp-10000L, 1.0L, 6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3403     TEST_c_c (casin, 0x1.fp-10000L, -1.0L, 6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3404     TEST_c_c (casin, -0x1.fp-10000L, 1.0L, -6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3405     TEST_c_c (casin, -0x1.fp-10000L, -1.0L, -6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3406     TEST_c_c (casin, 1.0L, 0x1.fp-10000L, 1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3407     TEST_c_c (casin, -1.0L, 0x1.fp-10000L, -1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3408     TEST_c_c (casin, 1.0L, -0x1.fp-10000L, 1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3409     TEST_c_c (casin, -1.0L, -0x1.fp-10000L, -1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3410     TEST_c_c (casin, 0x1.fp-16385L, 1.0L, 5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3411     TEST_c_c (casin, 0x1.fp-16385L, -1.0L, 5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3412     TEST_c_c (casin, -0x1.fp-16385L, 1.0L, -5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3413     TEST_c_c (casin, -0x1.fp-16385L, -1.0L, -5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3414     TEST_c_c (casin, 1.0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3415     TEST_c_c (casin, -1.0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3416     TEST_c_c (casin, 1.0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3417     TEST_c_c (casin, -1.0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3418 #endif
3420     TEST_c_c (casin, 0x1p-23L, 0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3421     TEST_c_c (casin, 0x1p-23L, -0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3422     TEST_c_c (casin, -0x1p-23L, 0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3423     TEST_c_c (casin, -0x1p-23L, -0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3424     TEST_c_c (casin, 0x1.000002p0L, 0x1p-23L, 1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3425     TEST_c_c (casin, -0x1.000002p0L, 0x1p-23L, -1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3426     TEST_c_c (casin, 0x1.000002p0L, -0x1p-23L, 1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3427     TEST_c_c (casin, -0x1.000002p0L, -0x1p-23L, -1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3428     TEST_c_c (casin, 0x1.fp-129L, 0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3429     TEST_c_c (casin, 0x1.fp-129L, -0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3430     TEST_c_c (casin, -0x1.fp-129L, 0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3431     TEST_c_c (casin, -0x1.fp-129L, -0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3432     TEST_c_c (casin, 0x1.000002p0L, 0x1.fp-129L, 1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3433     TEST_c_c (casin, -0x1.000002p0L, 0x1.fp-129L, -1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3434     TEST_c_c (casin, 0x1.000002p0L, -0x1.fp-129L, 1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3435     TEST_c_c (casin, -0x1.000002p0L, -0x1.fp-129L, -1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3436     TEST_c_c (casin, 0.0L, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L),
3437     TEST_c_c (casin, 0.0L, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L),
3438     TEST_c_c (casin, -0.0L, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L),
3439     TEST_c_c (casin, -0.0L, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L),
3440     TEST_c_c (casin, 0x1.000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3441     TEST_c_c (casin, -0x1.000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3442     TEST_c_c (casin, 0x1.000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3443     TEST_c_c (casin, -0x1.000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3444 #ifndef TEST_FLOAT
3445     TEST_c_c (casin, 0x1p-52L, 0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3446     TEST_c_c (casin, 0x1p-52L, -0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3447     TEST_c_c (casin, -0x1p-52L, 0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3448     TEST_c_c (casin, -0x1p-52L, -0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3449     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1p-52L, 1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3450     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1p-52L, -1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3451     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1p-52L, 1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3452     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1p-52L, -1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3453     TEST_c_c (casin, 0x1.fp-1025L, 0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3454     TEST_c_c (casin, 0x1.fp-1025L, -0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3455     TEST_c_c (casin, -0x1.fp-1025L, 0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3456     TEST_c_c (casin, -0x1.fp-1025L, -0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3457     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3458     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3459     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3460     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3461     TEST_c_c (casin, 0.0L, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L),
3462     TEST_c_c (casin, 0.0L, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L),
3463     TEST_c_c (casin, -0.0L, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L),
3464     TEST_c_c (casin, -0.0L, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L),
3465     TEST_c_c (casin, 0x1.0000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3466     TEST_c_c (casin, -0x1.0000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3467     TEST_c_c (casin, 0x1.0000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3468     TEST_c_c (casin, -0x1.0000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3469 #endif
3470 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3471     TEST_c_c (casin, 0x1p-63L, 0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3472     TEST_c_c (casin, 0x1p-63L, -0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3473     TEST_c_c (casin, -0x1p-63L, 0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3474     TEST_c_c (casin, -0x1p-63L, -0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3475     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1p-63L, 1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3476     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1p-63L, -1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3477     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1p-63L, 1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3478     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1p-63L, -1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3479 # if LDBL_MIN_EXP <= -16381
3480     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3481     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3482     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3483     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3484     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3485     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3486     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3487     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3488 # endif
3489     TEST_c_c (casin, 0.0L, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L),
3490     TEST_c_c (casin, 0.0L, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L),
3491     TEST_c_c (casin, -0.0L, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L),
3492     TEST_c_c (casin, -0.0L, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L),
3493     TEST_c_c (casin, 0x1.0000000000000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3494     TEST_c_c (casin, -0x1.0000000000000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3495     TEST_c_c (casin, 0x1.0000000000000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3496     TEST_c_c (casin, -0x1.0000000000000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3497 #endif
3498 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3499     TEST_c_c (casin, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3500     TEST_c_c (casin, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3501     TEST_c_c (casin, -0x1p-106L, 0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3502     TEST_c_c (casin, -0x1p-106L, -0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3503     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1p-106L, 1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3504     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1p-106L, -1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3505     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1p-106L, 1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3506     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1p-106L, -1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3507     TEST_c_c (casin, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3508     TEST_c_c (casin, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3509     TEST_c_c (casin, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3510     TEST_c_c (casin, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3511     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3512     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3513     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3514     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3515     TEST_c_c (casin, 0.0L, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L),
3516     TEST_c_c (casin, 0.0L, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L),
3517     TEST_c_c (casin, -0.0L, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L),
3518     TEST_c_c (casin, -0.0L, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L),
3519     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3520     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3521     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3522     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3523 #endif
3524 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3525     TEST_c_c (casin, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3526     TEST_c_c (casin, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3527     TEST_c_c (casin, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3528     TEST_c_c (casin, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3529     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3530     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3531     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3532     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3533     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3534     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3535     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3536     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3537     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3538     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3539     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3540     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3541     TEST_c_c (casin, 0.0L, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L),
3542     TEST_c_c (casin, 0.0L, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L),
3543     TEST_c_c (casin, -0.0L, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L),
3544     TEST_c_c (casin, -0.0L, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L),
3545     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3546     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3547     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3548     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3549 #endif
3551     TEST_c_c (casin, 0x1p-23L, 0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3552     TEST_c_c (casin, 0x1p-23L, -0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3553     TEST_c_c (casin, -0x1p-23L, 0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3554     TEST_c_c (casin, -0x1p-23L, -0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3555     TEST_c_c (casin, 0x0.ffffffp0L, 0x1p-23L, 1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3556     TEST_c_c (casin, -0x0.ffffffp0L, 0x1p-23L, -1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3557     TEST_c_c (casin, 0x0.ffffffp0L, -0x1p-23L, 1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3558     TEST_c_c (casin, -0x0.ffffffp0L, -0x1p-23L, -1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3559     TEST_c_c (casin, 0x1.fp-129L, 0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3560     TEST_c_c (casin, 0x1.fp-129L, -0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3561     TEST_c_c (casin, -0x1.fp-129L, 0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3562     TEST_c_c (casin, -0x1.fp-129L, -0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3563     TEST_c_c (casin, 0x0.ffffffp0L, 0x1.fp-129L, 1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3564     TEST_c_c (casin, -0x0.ffffffp0L, 0x1.fp-129L, -1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3565     TEST_c_c (casin, 0x0.ffffffp0L, -0x1.fp-129L, 1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3566     TEST_c_c (casin, -0x0.ffffffp0L, -0x1.fp-129L, -1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3567     TEST_c_c (casin, 0.0L, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L),
3568     TEST_c_c (casin, 0.0L, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L),
3569     TEST_c_c (casin, -0.0L, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L),
3570     TEST_c_c (casin, -0.0L, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L),
3571     TEST_c_c (casin, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L, 0.0L),
3572     TEST_c_c (casin, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L, 0.0L),
3573     TEST_c_c (casin, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L, -0.0L),
3574     TEST_c_c (casin, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L, -0.0L),
3575     TEST_c_c (casin, 0x1p-23L, 0.5L, 1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3576     TEST_c_c (casin, 0x1p-23L, -0.5L, 1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3577     TEST_c_c (casin, -0x1p-23L, 0.5L, -1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3578     TEST_c_c (casin, -0x1p-23L, -0.5L, -1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3579     TEST_c_c (casin, 0.5L, 0x1p-23L, 5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3580     TEST_c_c (casin, -0.5L, 0x1p-23L, -5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3581     TEST_c_c (casin, 0.5L, -0x1p-23L, 5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3582     TEST_c_c (casin, -0.5L, -0x1p-23L, -5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3583     TEST_c_c (casin, 0x1.fp-129L, 0.5L, 2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3584     TEST_c_c (casin, 0x1.fp-129L, -0.5L, 2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3585     TEST_c_c (casin, -0x1.fp-129L, 0.5L, -2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3586     TEST_c_c (casin, -0x1.fp-129L, -0.5L, -2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3587     TEST_c_c (casin, 0.5L, 0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3588     TEST_c_c (casin, -0.5L, 0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3589     TEST_c_c (casin, 0.5L, -0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3590     TEST_c_c (casin, -0.5L, -0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3591     TEST_c_c (casin, 0x1p-23L, 0x1p-23L, 1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3592     TEST_c_c (casin, 0x1p-23L, -0x1p-23L, 1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3593     TEST_c_c (casin, -0x1p-23L, 0x1p-23L, -1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3594     TEST_c_c (casin, -0x1p-23L, -0x1p-23L, -1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3595     /* Bug 15319: underflow exception may be missing.  */
3596     TEST_c_c (casin, 0x1.fp-129L, 0x1p-23L, 2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3597     TEST_c_c (casin, 0x1.fp-129L, -0x1p-23L, 2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3598     TEST_c_c (casin, -0x1.fp-129L, 0x1p-23L, -2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3599     TEST_c_c (casin, -0x1.fp-129L, -0x1p-23L, -2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3600     TEST_c_c (casin, 0x1p-23L, 0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3601     TEST_c_c (casin, -0x1p-23L, 0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3602     TEST_c_c (casin, 0x1p-23L, -0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3603     TEST_c_c (casin, -0x1p-23L, -0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3604     TEST_c_c (casin, 0.0L, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L),
3605     TEST_c_c (casin, 0.0L, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L),
3606     TEST_c_c (casin, -0.0L, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L),
3607     TEST_c_c (casin, -0.0L, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L),
3608     TEST_c_c (casin, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L, 0.0L),
3609     TEST_c_c (casin, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L, 0.0L),
3610     TEST_c_c (casin, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L, -0.0L),
3611     TEST_c_c (casin, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L, -0.0L),
3612     TEST_c_c (casin, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3613     TEST_c_c (casin, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3614     TEST_c_c (casin, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3615     TEST_c_c (casin, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3616 #ifndef TEST_FLOAT
3617     TEST_c_c (casin, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3618     TEST_c_c (casin, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3619     TEST_c_c (casin, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3620     TEST_c_c (casin, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3621     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3622     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1p-52L, -1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3623     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3624     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1p-52L, -1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3625     TEST_c_c (casin, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3626     TEST_c_c (casin, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3627     TEST_c_c (casin, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3628     TEST_c_c (casin, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3629     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3630     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3631     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3632     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3633     TEST_c_c (casin, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L),
3634     TEST_c_c (casin, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L),
3635     TEST_c_c (casin, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L),
3636     TEST_c_c (casin, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L),
3637     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L, 0.0L),
3638     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L, 0.0L),
3639     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L, -0.0L),
3640     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L, -0.0L),
3641 #endif
3642     TEST_c_c (casin, 0x1p-52L, 0.5L, 1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3643     TEST_c_c (casin, 0x1p-52L, -0.5L, 1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3644     TEST_c_c (casin, -0x1p-52L, 0.5L, -1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3645     TEST_c_c (casin, -0x1p-52L, -0.5L, -1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3646     TEST_c_c (casin, 0.5L, 0x1p-52L, 5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3647     TEST_c_c (casin, -0.5L, 0x1p-52L, -5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3648     TEST_c_c (casin, 0.5L, -0x1p-52L, 5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3649     TEST_c_c (casin, -0.5L, -0x1p-52L, -5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3650 #ifndef TEST_FLOAT
3651     TEST_c_c (casin, 0x1.fp-1025L, 0.5L, 4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3652     TEST_c_c (casin, 0x1.fp-1025L, -0.5L, 4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3653     TEST_c_c (casin, -0x1.fp-1025L, 0.5L, -4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3654     TEST_c_c (casin, -0x1.fp-1025L, -0.5L, -4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3655     TEST_c_c (casin, 0.5L, 0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3656     TEST_c_c (casin, -0.5L, 0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3657     TEST_c_c (casin, 0.5L, -0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3658     TEST_c_c (casin, -0.5L, -0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3659 #endif
3660     TEST_c_c (casin, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3661     TEST_c_c (casin, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3662     TEST_c_c (casin, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3663     TEST_c_c (casin, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3664 #ifndef TEST_FLOAT
3665     /* Bug 15319: underflow exception may be missing.  */
3666     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3667     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3668     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3669     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3670     TEST_c_c (casin, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3671     TEST_c_c (casin, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3672     TEST_c_c (casin, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3673     TEST_c_c (casin, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3674 #endif
3675     TEST_c_c (casin, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L),
3676     TEST_c_c (casin, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L),
3677     TEST_c_c (casin, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L),
3678     TEST_c_c (casin, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L),
3679     TEST_c_c (casin, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L, 0.0L),
3680     TEST_c_c (casin, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L, 0.0L),
3681     TEST_c_c (casin, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L, -0.0L),
3682     TEST_c_c (casin, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L, -0.0L),
3683 #ifndef TEST_FLOAT
3684     TEST_c_c (casin, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3685     TEST_c_c (casin, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3686     TEST_c_c (casin, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3687     TEST_c_c (casin, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3688 #endif
3689 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3690     TEST_c_c (casin, 0x1p-63L, 0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3691     TEST_c_c (casin, 0x1p-63L, -0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3692     TEST_c_c (casin, -0x1p-63L, 0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3693     TEST_c_c (casin, -0x1p-63L, -0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3694     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1p-63L, 1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3695     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1p-63L, -1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3696     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1p-63L, 1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3697     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1p-63L, -1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3698 # if LDBL_MIN_EXP <= -16381
3699     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3700     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3701     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3702     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3703     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3704     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3705     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3706     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3707 # endif
3708     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L),
3709     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L),
3710     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L),
3711     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L),
3712     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L, 0.0L),
3713     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L, 0.0L),
3714     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L, -0.0L),
3715     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L, -0.0L),
3716 #endif
3717     TEST_c_c (casin, 0x1p-63L, 0.5L, 9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3718     TEST_c_c (casin, 0x1p-63L, -0.5L, 9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3719     TEST_c_c (casin, -0x1p-63L, 0.5L, -9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3720     TEST_c_c (casin, -0x1p-63L, -0.5L, -9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3721     TEST_c_c (casin, 0.5L, 0x1p-63L, 5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3722     TEST_c_c (casin, -0.5L, 0x1p-63L, -5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3723     TEST_c_c (casin, 0.5L, -0x1p-63L, 5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3724     TEST_c_c (casin, -0.5L, -0x1p-63L, -5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3725 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3726     TEST_c_c (casin, 0x1.fp-16385L, 0.5L, 7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3727     TEST_c_c (casin, 0x1.fp-16385L, -0.5L, 7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3728     TEST_c_c (casin, -0x1.fp-16385L, 0.5L, -7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3729     TEST_c_c (casin, -0x1.fp-16385L, -0.5L, -7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3730     TEST_c_c (casin, 0.5L, 0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3731     TEST_c_c (casin, -0.5L, 0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3732     TEST_c_c (casin, 0.5L, -0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3733     TEST_c_c (casin, -0.5L, -0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3734 #endif
3735     TEST_c_c (casin, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3736     TEST_c_c (casin, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3737     TEST_c_c (casin, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3738     TEST_c_c (casin, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3739 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3740     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3741     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3742     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3743     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3744     TEST_c_c (casin, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3745     TEST_c_c (casin, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3746     TEST_c_c (casin, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3747     TEST_c_c (casin, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3748 #endif
3749     TEST_c_c (casin, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L),
3750     TEST_c_c (casin, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L),
3751     TEST_c_c (casin, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L),
3752     TEST_c_c (casin, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L),
3753     TEST_c_c (casin, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L, 0.0L),
3754     TEST_c_c (casin, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L, 0.0L),
3755     TEST_c_c (casin, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L, -0.0L),
3756     TEST_c_c (casin, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L, -0.0L),
3757 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3758     TEST_c_c (casin, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3759     TEST_c_c (casin, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3760     TEST_c_c (casin, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3761     TEST_c_c (casin, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3762 #endif
3763 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3764     TEST_c_c (casin, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3765     TEST_c_c (casin, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3766     TEST_c_c (casin, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3767     TEST_c_c (casin, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3768     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3769     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3770     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3771     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3772     TEST_c_c (casin, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3773     TEST_c_c (casin, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3774     TEST_c_c (casin, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3775     TEST_c_c (casin, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3776     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3777     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3778     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3779     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3780     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L),
3781     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L),
3782     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L),
3783     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L),
3784     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L, 0.0L),
3785     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L, 0.0L),
3786     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L, -0.0L),
3787     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L, -0.0L),
3788 #endif
3789     TEST_c_c (casin, 0x1p-105L, 0.5L, 2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3790     TEST_c_c (casin, 0x1p-105L, -0.5L, 2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3791     TEST_c_c (casin, -0x1p-105L, 0.5L, -2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3792     TEST_c_c (casin, -0x1p-105L, -0.5L, -2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3793     TEST_c_c (casin, 0.5L, 0x1p-105L, 5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3794     TEST_c_c (casin, -0.5L, 0x1p-105L, -5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3795     TEST_c_c (casin, 0.5L, -0x1p-105L, 5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3796     TEST_c_c (casin, -0.5L, -0x1p-105L, -5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3797     TEST_c_c (casin, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3798     TEST_c_c (casin, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3799     TEST_c_c (casin, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3800     TEST_c_c (casin, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3801 #ifndef TEST_FLOAT
3802     /* Bug 15319: underflow exception may be missing.  */
3803     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3804     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3805     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3806     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3807     TEST_c_c (casin, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3808     TEST_c_c (casin, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3809     TEST_c_c (casin, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3810     TEST_c_c (casin, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3811 #endif
3812     TEST_c_c (casin, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
3813     TEST_c_c (casin, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
3814     TEST_c_c (casin, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
3815     TEST_c_c (casin, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
3816     TEST_c_c (casin, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
3817     TEST_c_c (casin, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
3818     TEST_c_c (casin, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
3819     TEST_c_c (casin, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
3820 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3821     TEST_c_c (casin, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3822     TEST_c_c (casin, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3823     TEST_c_c (casin, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3824     TEST_c_c (casin, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3825     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3826     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3827     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3828     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3829     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3830     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3831     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3832     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3833     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3834     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3835     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3836     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3837     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L),
3838     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L),
3839     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L),
3840     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L),
3841     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L, 0.0L),
3842     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L, 0.0L),
3843     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L, -0.0L),
3844     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L, -0.0L),
3845 #endif
3846     TEST_c_c (casin, 0x1p-112L, 0.5L, 1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3847     TEST_c_c (casin, 0x1p-112L, -0.5L, 1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3848     TEST_c_c (casin, -0x1p-112L, 0.5L, -1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3849     TEST_c_c (casin, -0x1p-112L, -0.5L, -1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3850     TEST_c_c (casin, 0.5L, 0x1p-112L, 5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3851     TEST_c_c (casin, -0.5L, 0x1p-112L, -5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3852     TEST_c_c (casin, 0.5L, -0x1p-112L, 5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3853     TEST_c_c (casin, -0.5L, -0x1p-112L, -5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3854     TEST_c_c (casin, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3855     TEST_c_c (casin, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3856     TEST_c_c (casin, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3857     TEST_c_c (casin, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3858 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3859     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3860     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3861     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3862     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3863     TEST_c_c (casin, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3864     TEST_c_c (casin, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3865     TEST_c_c (casin, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3866     TEST_c_c (casin, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3867 #endif
3868     TEST_c_c (casin, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
3869     TEST_c_c (casin, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
3870     TEST_c_c (casin, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
3871     TEST_c_c (casin, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
3872     TEST_c_c (casin, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
3873     TEST_c_c (casin, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
3874     TEST_c_c (casin, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
3875     TEST_c_c (casin, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
3877     TEST_c_c (casin, 0.75L, 1.25L, 0.453276177638793913448921196101971749L, 1.13239363160530819522266333696834467L),
3878     TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L),
3879     END_DATA (casin)
3880   };
3882 static void
3883 casin_test (void)
3885   errno = 0;
3886   FUNC(casin) (BUILD_COMPLEX (0.7L, 1.2L));
3887   if (errno == ENOSYS)
3888     /* Function not implemented.  */
3889     return;
3891   START (casin);
3892   RUN_TEST_LOOP_c_c (casin, casin_test_data, );
3893   END (casin, complex);
3897 static const struct test_c_c_data casinh_test_data[] =
3898   {
3899     START_DATA (casinh),
3900     TEST_c_c (casinh, 0, 0, 0.0, 0.0),
3901     TEST_c_c (casinh, minus_zero, 0, minus_zero, 0),
3902     TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero),
3903     TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero),
3905     TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l),
3906     TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
3907     TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l),
3908     TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l),
3910     TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l),
3911     TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l),
3912     TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l),
3913     TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l),
3914     TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l),
3915     TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l),
3916     TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l),
3917     TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
3919     TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0),
3920     TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero),
3921     TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0),
3922     TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero),
3924     TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0),
3925     TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero),
3926     TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0),
3927     TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero),
3929     TEST_c_c (casinh, plus_infty, qnan_value, plus_infty, qnan_value),
3930     TEST_c_c (casinh, minus_infty, qnan_value, minus_infty, qnan_value),
3932     TEST_c_c (casinh, qnan_value, 0, qnan_value, 0.0),
3933     TEST_c_c (casinh, qnan_value, minus_zero, qnan_value, minus_zero),
3935     TEST_c_c (casinh, qnan_value, plus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
3936     TEST_c_c (casinh, qnan_value, minus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
3938     TEST_c_c (casinh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3939     TEST_c_c (casinh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3941     TEST_c_c (casinh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3942     TEST_c_c (casinh, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3944     TEST_c_c (casinh, qnan_value, qnan_value, qnan_value, qnan_value),
3946     TEST_c_c (casinh, plus_zero, -1.5L, 0.9624236501192068949955178268487368462704L, -M_PI_2l),
3947     TEST_c_c (casinh, minus_zero, -1.5L, -0.9624236501192068949955178268487368462704L, -M_PI_2l),
3948     TEST_c_c (casinh, plus_zero, -1.0L, plus_zero, -M_PI_2l),
3949     TEST_c_c (casinh, minus_zero, -1.0L, minus_zero, -M_PI_2l),
3950     TEST_c_c (casinh, plus_zero, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L),
3951     TEST_c_c (casinh, minus_zero, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L),
3952     TEST_c_c (casinh, plus_zero, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L),
3953     TEST_c_c (casinh, minus_zero, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L),
3954     TEST_c_c (casinh, plus_zero, 1.0L, plus_zero, M_PI_2l),
3955     TEST_c_c (casinh, minus_zero, 1.0L, minus_zero, M_PI_2l),
3956     TEST_c_c (casinh, plus_zero, 1.5L, 0.9624236501192068949955178268487368462704L, M_PI_2l),
3957     TEST_c_c (casinh, minus_zero, 1.5L, -0.9624236501192068949955178268487368462704L, M_PI_2l),
3959     TEST_c_c (casinh, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L, plus_zero),
3960     TEST_c_c (casinh, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L, minus_zero),
3961     TEST_c_c (casinh, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L, plus_zero),
3962     TEST_c_c (casinh, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L, minus_zero),
3963     TEST_c_c (casinh, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L, plus_zero),
3964     TEST_c_c (casinh, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L, minus_zero),
3965     TEST_c_c (casinh, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L, plus_zero),
3966     TEST_c_c (casinh, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L, minus_zero),
3967     TEST_c_c (casinh, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L, plus_zero),
3968     TEST_c_c (casinh, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L, minus_zero),
3969     TEST_c_c (casinh, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L, plus_zero),
3970     TEST_c_c (casinh, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L, minus_zero),
3972     TEST_c_c (casinh, 0x1p50L, 1.0L, 3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
3973     TEST_c_c (casinh, 0x1p50L, -1.0L, 3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
3974     TEST_c_c (casinh, -0x1p50L, 1.0L, -3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
3975     TEST_c_c (casinh, -0x1p50L, -1.0L, -3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
3976     TEST_c_c (casinh, 1.0L, 0x1p50L, 3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
3977     TEST_c_c (casinh, -1.0L, 0x1p50L, -3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
3978     TEST_c_c (casinh, 1.0L, -0x1p50L, 3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
3979     TEST_c_c (casinh, -1.0L, -0x1p50L, -3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
3980 #ifndef TEST_FLOAT
3981     TEST_c_c (casinh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
3982     TEST_c_c (casinh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
3983     TEST_c_c (casinh, -0x1p500L, 1.0L, -3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
3984     TEST_c_c (casinh, -0x1p500L, -1.0L, -3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
3985     TEST_c_c (casinh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
3986     TEST_c_c (casinh, -1.0L, 0x1p500L, -3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
3987     TEST_c_c (casinh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
3988     TEST_c_c (casinh, -1.0L, -0x1p500L, -3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
3989 #endif
3990 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3991     TEST_c_c (casinh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
3992     TEST_c_c (casinh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
3993     TEST_c_c (casinh, -0x1p5000L, 1.0L, -3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
3994     TEST_c_c (casinh, -0x1p5000L, -1.0L, -3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
3995     TEST_c_c (casinh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
3996     TEST_c_c (casinh, -1.0L, 0x1p5000L, -3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
3997     TEST_c_c (casinh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
3998     TEST_c_c (casinh, -1.0L, -0x1p5000L, -3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
3999 #endif
4001     TEST_c_c (casinh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
4002 #ifndef TEST_FLOAT
4003     TEST_c_c (casinh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
4004 #endif
4005 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4006     TEST_c_c (casinh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
4007 #endif
4009     TEST_c_c (casinh, 0x1.fp-129L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4010     TEST_c_c (casinh, 0x1.fp-129L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4011     TEST_c_c (casinh, -0x1.fp-129L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4012     TEST_c_c (casinh, -0x1.fp-129L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4013     TEST_c_c (casinh, 1.5L, 0x1.fp-129L, 1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4014     TEST_c_c (casinh, -1.5L, 0x1.fp-129L, -1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4015     TEST_c_c (casinh, 1.5L, -0x1.fp-129L, 1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4016     TEST_c_c (casinh, -1.5L, -0x1.fp-129L, -1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4017 #ifndef TEST_FLOAT
4018     TEST_c_c (casinh, 0x1.fp-1025L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4019     TEST_c_c (casinh, 0x1.fp-1025L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4020     TEST_c_c (casinh, -0x1.fp-1025L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4021     TEST_c_c (casinh, -0x1.fp-1025L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4022     TEST_c_c (casinh, 1.5L, 0x1.fp-1025L, 1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4023     TEST_c_c (casinh, -1.5L, 0x1.fp-1025L, -1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4024     TEST_c_c (casinh, 1.5L, -0x1.fp-1025L, 1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4025     TEST_c_c (casinh, -1.5L, -0x1.fp-1025L, -1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4026 #endif
4027 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4028     TEST_c_c (casinh, 0x1.fp-16385L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4029     TEST_c_c (casinh, 0x1.fp-16385L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4030     TEST_c_c (casinh, -0x1.fp-16385L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4031     TEST_c_c (casinh, -0x1.fp-16385L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4032     TEST_c_c (casinh, 1.5L, 0x1.fp-16385L, 1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4033     TEST_c_c (casinh, -1.5L, 0x1.fp-16385L, -1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4034     TEST_c_c (casinh, 1.5L, -0x1.fp-16385L, 1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4035     TEST_c_c (casinh, -1.5L, -0x1.fp-16385L, -1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4036 #endif
4038     TEST_c_c (casinh, 0.5L, 1.0L, 7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4039     TEST_c_c (casinh, 0.5L, -1.0L, 7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4040     TEST_c_c (casinh, -0.5L, 1.0L, -7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4041     TEST_c_c (casinh, -0.5L, -1.0L, -7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4042     TEST_c_c (casinh, 1.0L, 0.5L, 9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4043     TEST_c_c (casinh, -1.0L, 0.5L, -9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4044     TEST_c_c (casinh, 1.0L, -0.5L, 9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4045     TEST_c_c (casinh, -1.0L, -0.5L, -9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4046     TEST_c_c (casinh, 0.25L, 1.0L, 5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4047     TEST_c_c (casinh, 0.25L, -1.0L, 5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4048     TEST_c_c (casinh, -0.25L, 1.0L, -5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4049     TEST_c_c (casinh, -0.25L, -1.0L, -5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4050     TEST_c_c (casinh, 1.0L, 0.25L, 8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4051     TEST_c_c (casinh, -1.0L, 0.25L, -8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4052     TEST_c_c (casinh, 1.0L, -0.25L, 8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4053     TEST_c_c (casinh, -1.0L, -0.25L, -8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4054     TEST_c_c (casinh, 0x1.fp-10L, 1.0L, 4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4055     TEST_c_c (casinh, 0x1.fp-10L, -1.0L, 4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4056     TEST_c_c (casinh, -0x1.fp-10L, 1.0L, -4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4057     TEST_c_c (casinh, -0x1.fp-10L, -1.0L, -4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4058     TEST_c_c (casinh, 1.0L, 0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4059     TEST_c_c (casinh, -1.0L, 0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4060     TEST_c_c (casinh, 1.0L, -0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4061     TEST_c_c (casinh, -1.0L, -0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4062     TEST_c_c (casinh, 0x1.fp-30L, 1.0L, 4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4063     TEST_c_c (casinh, 0x1.fp-30L, -1.0L, 4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4064     TEST_c_c (casinh, -0x1.fp-30L, 1.0L, -4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4065     TEST_c_c (casinh, -0x1.fp-30L, -1.0L, -4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4066     TEST_c_c (casinh, 1.0L, 0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4067     TEST_c_c (casinh, -1.0L, 0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4068     TEST_c_c (casinh, 1.0L, -0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4069     TEST_c_c (casinh, -1.0L, -0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4070     TEST_c_c (casinh, 0x1.fp-100L, 1.0L, 1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4071     TEST_c_c (casinh, 0x1.fp-100L, -1.0L, 1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4072     TEST_c_c (casinh, -0x1.fp-100L, 1.0L, -1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4073     TEST_c_c (casinh, -0x1.fp-100L, -1.0L, -1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4074     TEST_c_c (casinh, 1.0L, 0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4075     TEST_c_c (casinh, -1.0L, 0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4076     TEST_c_c (casinh, 1.0L, -0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4077     TEST_c_c (casinh, -1.0L, -0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4078     TEST_c_c (casinh, 0x1.fp-129L, 1.0L, 5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4079     TEST_c_c (casinh, 0x1.fp-129L, -1.0L, 5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4080     TEST_c_c (casinh, -0x1.fp-129L, 1.0L, -5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4081     TEST_c_c (casinh, -0x1.fp-129L, -1.0L, -5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4082     TEST_c_c (casinh, 1.0L, 0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4083     TEST_c_c (casinh, -1.0L, 0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4084     TEST_c_c (casinh, 1.0L, -0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4085     TEST_c_c (casinh, -1.0L, -0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4086 #ifndef TEST_FLOAT
4087     TEST_c_c (casinh, 0x1.fp-1000L, 1.0L, 4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4088     TEST_c_c (casinh, 0x1.fp-1000L, -1.0L, 4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4089     TEST_c_c (casinh, -0x1.fp-1000L, 1.0L, -4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4090     TEST_c_c (casinh, -0x1.fp-1000L, -1.0L, -4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4091     TEST_c_c (casinh, 1.0L, 0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4092     TEST_c_c (casinh, -1.0L, 0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4093     TEST_c_c (casinh, 1.0L, -0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4094     TEST_c_c (casinh, -1.0L, -0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4095     TEST_c_c (casinh, 0x1.fp-1025L, 1.0L, 7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4096     TEST_c_c (casinh, 0x1.fp-1025L, -1.0L, 7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4097     TEST_c_c (casinh, -0x1.fp-1025L, 1.0L, -7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4098     TEST_c_c (casinh, -0x1.fp-1025L, -1.0L, -7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4099     TEST_c_c (casinh, 1.0L, 0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4100     TEST_c_c (casinh, -1.0L, 0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4101     TEST_c_c (casinh, 1.0L, -0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4102     TEST_c_c (casinh, -1.0L, -0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4103 #endif
4104 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4105     TEST_c_c (casinh, 0x1.fp-10000L, 1.0L, 9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4106     TEST_c_c (casinh, 0x1.fp-10000L, -1.0L, 9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4107     TEST_c_c (casinh, -0x1.fp-10000L, 1.0L, -9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4108     TEST_c_c (casinh, -0x1.fp-10000L, -1.0L, -9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4109     TEST_c_c (casinh, 1.0L, 0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4110     TEST_c_c (casinh, -1.0L, 0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4111     TEST_c_c (casinh, 1.0L, -0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4112     TEST_c_c (casinh, -1.0L, -0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4113     TEST_c_c (casinh, 0x1.fp-16385L, 1.0L, 9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4114     TEST_c_c (casinh, 0x1.fp-16385L, -1.0L, 9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4115     TEST_c_c (casinh, -0x1.fp-16385L, 1.0L, -9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4116     TEST_c_c (casinh, -0x1.fp-16385L, -1.0L, -9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4117     TEST_c_c (casinh, 1.0L, 0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4118     TEST_c_c (casinh, -1.0L, 0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4119     TEST_c_c (casinh, 1.0L, -0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4120     TEST_c_c (casinh, -1.0L, -0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4121 #endif
4123     TEST_c_c (casinh, 0x1p-23L, 0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4124     TEST_c_c (casinh, 0x1p-23L, -0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4125     TEST_c_c (casinh, -0x1p-23L, 0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4126     TEST_c_c (casinh, -0x1p-23L, -0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4127     TEST_c_c (casinh, 0x1.000002p0L, 0x1p-23L, 8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4128     TEST_c_c (casinh, -0x1.000002p0L, 0x1p-23L, -8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4129     TEST_c_c (casinh, 0x1.000002p0L, -0x1p-23L, 8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4130     TEST_c_c (casinh, -0x1.000002p0L, -0x1p-23L, -8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4131     TEST_c_c (casinh, 0x1.fp-129L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4132     TEST_c_c (casinh, 0x1.fp-129L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4133     TEST_c_c (casinh, -0x1.fp-129L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4134     TEST_c_c (casinh, -0x1.fp-129L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4135     TEST_c_c (casinh, 0x1.000002p0L, 0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4136     TEST_c_c (casinh, -0x1.000002p0L, 0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4137     TEST_c_c (casinh, 0x1.000002p0L, -0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4138     TEST_c_c (casinh, -0x1.000002p0L, -0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4139     TEST_c_c (casinh, 0.0L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4140     TEST_c_c (casinh, 0.0L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4141     TEST_c_c (casinh, -0.0L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4142     TEST_c_c (casinh, -0.0L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4143     TEST_c_c (casinh, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L, 0.0L),
4144     TEST_c_c (casinh, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L, 0.0L),
4145     TEST_c_c (casinh, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L, -0.0L),
4146     TEST_c_c (casinh, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L, -0.0L),
4147 #ifndef TEST_FLOAT
4148     TEST_c_c (casinh, 0x1p-52L, 0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4149     TEST_c_c (casinh, 0x1p-52L, -0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4150     TEST_c_c (casinh, -0x1p-52L, 0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4151     TEST_c_c (casinh, -0x1p-52L, -0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4152     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1p-52L, 8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4153     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1p-52L, -8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4154     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1p-52L, 8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4155     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1p-52L, -8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4156     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4157     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4158     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4159     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4160     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4161     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4162     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4163     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4164     TEST_c_c (casinh, 0.0L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4165     TEST_c_c (casinh, 0.0L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4166     TEST_c_c (casinh, -0.0L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4167     TEST_c_c (casinh, -0.0L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4168     TEST_c_c (casinh, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L, 0.0L),
4169     TEST_c_c (casinh, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L, 0.0L),
4170     TEST_c_c (casinh, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L, -0.0L),
4171     TEST_c_c (casinh, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L, -0.0L),
4172 #endif
4173 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4174     TEST_c_c (casinh, 0x1p-63L, 0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4175     TEST_c_c (casinh, 0x1p-63L, -0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4176     TEST_c_c (casinh, -0x1p-63L, 0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4177     TEST_c_c (casinh, -0x1p-63L, -0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4178     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1p-63L, 8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4179     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1p-63L, -8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4180     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1p-63L, 8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4181     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1p-63L, -8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4182 # if LDBL_MIN_EXP <= -16381
4183     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4184     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4185     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4186     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4187     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4188     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4189     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4190     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4191 # endif
4192     TEST_c_c (casinh, 0.0L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4193     TEST_c_c (casinh, 0.0L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4194     TEST_c_c (casinh, -0.0L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4195     TEST_c_c (casinh, -0.0L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4196     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L, 0.0L),
4197     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L, 0.0L),
4198     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L, -0.0L),
4199     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L, -0.0L),
4200 #endif
4201 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4202     TEST_c_c (casinh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4203     TEST_c_c (casinh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4204     TEST_c_c (casinh, -0x1p-106L, 0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4205     TEST_c_c (casinh, -0x1p-106L, -0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4206     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4207     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1p-106L, -8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4208     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4209     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1p-106L, -8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4210     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4211     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4212     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4213     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4214     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4215     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4216     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4217     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4218     TEST_c_c (casinh, 0.0L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4219     TEST_c_c (casinh, 0.0L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4220     TEST_c_c (casinh, -0.0L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4221     TEST_c_c (casinh, -0.0L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4222     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L, 0.0L),
4223     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L, 0.0L),
4224     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L, -0.0L),
4225     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L, -0.0L),
4226 #endif
4227 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4228     TEST_c_c (casinh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4229     TEST_c_c (casinh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4230     TEST_c_c (casinh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4231     TEST_c_c (casinh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4232     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4233     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4234     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4235     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4236     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4237     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4238     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4239     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4240     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4241     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4242     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4243     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4244     TEST_c_c (casinh, 0.0L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4245     TEST_c_c (casinh, 0.0L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4246     TEST_c_c (casinh, -0.0L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4247     TEST_c_c (casinh, -0.0L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4248     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L, 0.0L),
4249     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L, 0.0L),
4250     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L, -0.0L),
4251     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L, -0.0L),
4252 #endif
4254     TEST_c_c (casinh, 0x1p-23L, 0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4255     TEST_c_c (casinh, 0x1p-23L, -0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4256     TEST_c_c (casinh, -0x1p-23L, 0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4257     TEST_c_c (casinh, -0x1p-23L, -0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4258     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1p-23L, 8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4259     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1p-23L, -8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4260     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1p-23L, 8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4261     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1p-23L, -8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4262     TEST_c_c (casinh, 0x1.fp-129L, 0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4263     TEST_c_c (casinh, 0x1.fp-129L, -0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4264     TEST_c_c (casinh, -0x1.fp-129L, 0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4265     TEST_c_c (casinh, -0x1.fp-129L, -0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4266     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4267     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4268     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4269     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4270     TEST_c_c (casinh, 0.0L, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L),
4271     TEST_c_c (casinh, 0.0L, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L),
4272     TEST_c_c (casinh, -0.0L, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L),
4273     TEST_c_c (casinh, -0.0L, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L),
4274     TEST_c_c (casinh, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L, 0.0L),
4275     TEST_c_c (casinh, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L, 0.0L),
4276     TEST_c_c (casinh, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L, -0.0L),
4277     TEST_c_c (casinh, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L, -0.0L),
4278     TEST_c_c (casinh, 0x1p-23L, 0.5L, 1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4279     TEST_c_c (casinh, 0x1p-23L, -0.5L, 1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4280     TEST_c_c (casinh, -0x1p-23L, 0.5L, -1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4281     TEST_c_c (casinh, -0x1p-23L, -0.5L, -1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4282     TEST_c_c (casinh, 0.5L, 0x1p-23L, 4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4283     TEST_c_c (casinh, -0.5L, 0x1p-23L, -4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4284     TEST_c_c (casinh, 0.5L, -0x1p-23L, 4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4285     TEST_c_c (casinh, -0.5L, -0x1p-23L, -4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4286     TEST_c_c (casinh, 0x1.fp-129L, 0.5L, 3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4287     TEST_c_c (casinh, 0x1.fp-129L, -0.5L, 3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4288     TEST_c_c (casinh, -0x1.fp-129L, 0.5L, -3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4289     TEST_c_c (casinh, -0x1.fp-129L, -0.5L, -3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4290     TEST_c_c (casinh, 0.5L, 0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4291     TEST_c_c (casinh, -0.5L, 0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4292     TEST_c_c (casinh, 0.5L, -0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4293     TEST_c_c (casinh, -0.5L, -0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4294     TEST_c_c (casinh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4295     TEST_c_c (casinh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4296     TEST_c_c (casinh, -0x1p-23L, 0x1p-23L, -1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4297     TEST_c_c (casinh, -0x1p-23L, -0x1p-23L, -1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4298     TEST_c_c (casinh, 0x1.fp-129L, 0x1p-23L, 2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4299     TEST_c_c (casinh, 0x1.fp-129L, -0x1p-23L, 2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4300     TEST_c_c (casinh, -0x1.fp-129L, 0x1p-23L, -2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4301     TEST_c_c (casinh, -0x1.fp-129L, -0x1p-23L, -2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4302     /* Bug 15319: underflow exception may be missing.  */
4303     TEST_c_c (casinh, 0x1p-23L, 0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4304     TEST_c_c (casinh, -0x1p-23L, 0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4305     TEST_c_c (casinh, 0x1p-23L, -0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4306     TEST_c_c (casinh, -0x1p-23L, -0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4307     TEST_c_c (casinh, 0.0L, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L),
4308     TEST_c_c (casinh, 0.0L, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L),
4309     TEST_c_c (casinh, -0.0L, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L),
4310     TEST_c_c (casinh, -0.0L, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L),
4311     TEST_c_c (casinh, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L, 0.0L),
4312     TEST_c_c (casinh, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L, 0.0L),
4313     TEST_c_c (casinh, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L, -0.0L),
4314     TEST_c_c (casinh, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L, -0.0L),
4315     TEST_c_c (casinh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4316     TEST_c_c (casinh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4317     TEST_c_c (casinh, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4318     TEST_c_c (casinh, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4319 #ifndef TEST_FLOAT
4320     TEST_c_c (casinh, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4321     TEST_c_c (casinh, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4322     TEST_c_c (casinh, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4323     TEST_c_c (casinh, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4324     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1p-52L, 8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4325     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1p-52L, -8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4326     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1p-52L, 8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4327     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1p-52L, -8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4328     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4329     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4330     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4331     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4332     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4333     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4334     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4335     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4336     TEST_c_c (casinh, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L),
4337     TEST_c_c (casinh, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L),
4338     TEST_c_c (casinh, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L),
4339     TEST_c_c (casinh, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L),
4340     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L, 0.0L),
4341     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L, 0.0L),
4342     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L, -0.0L),
4343     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L, -0.0L),
4344 #endif
4345     TEST_c_c (casinh, 0x1p-52L, 0.5L, 2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4346     TEST_c_c (casinh, 0x1p-52L, -0.5L, 2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4347     TEST_c_c (casinh, -0x1p-52L, 0.5L, -2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4348     TEST_c_c (casinh, -0x1p-52L, -0.5L, -2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4349     TEST_c_c (casinh, 0.5L, 0x1p-52L, 4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4350     TEST_c_c (casinh, -0.5L, 0x1p-52L, -4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4351     TEST_c_c (casinh, 0.5L, -0x1p-52L, 4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4352     TEST_c_c (casinh, -0.5L, -0x1p-52L, -4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4353 #ifndef TEST_FLOAT
4354     TEST_c_c (casinh, 0x1.fp-1025L, 0.5L, 6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4355     TEST_c_c (casinh, 0x1.fp-1025L, -0.5L, 6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4356     TEST_c_c (casinh, -0x1.fp-1025L, 0.5L, -6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4357     TEST_c_c (casinh, -0x1.fp-1025L, -0.5L, -6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4358     TEST_c_c (casinh, 0.5L, 0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4359     TEST_c_c (casinh, -0.5L, 0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4360     TEST_c_c (casinh, 0.5L, -0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4361     TEST_c_c (casinh, -0.5L, -0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4362 #endif
4363     TEST_c_c (casinh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4364     TEST_c_c (casinh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4365     TEST_c_c (casinh, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4366     TEST_c_c (casinh, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4367 #ifndef TEST_FLOAT
4368     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4369     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4370     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4371     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4372     /* Bug 15319: underflow exception may be missing.  */
4373     TEST_c_c (casinh, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4374     TEST_c_c (casinh, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4375     TEST_c_c (casinh, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4376     TEST_c_c (casinh, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4377 #endif
4378     TEST_c_c (casinh, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L),
4379     TEST_c_c (casinh, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L),
4380     TEST_c_c (casinh, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L),
4381     TEST_c_c (casinh, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L),
4382     TEST_c_c (casinh, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L, 0.0L),
4383     TEST_c_c (casinh, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L, 0.0L),
4384     TEST_c_c (casinh, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L, -0.0L),
4385     TEST_c_c (casinh, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L, -0.0L),
4386 #ifndef TEST_FLOAT
4387     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4388     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4389     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4390     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4391 #endif
4392 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4393     TEST_c_c (casinh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4394     TEST_c_c (casinh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4395     TEST_c_c (casinh, -0x1p-63L, 0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4396     TEST_c_c (casinh, -0x1p-63L, -0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4397     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4398     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1p-63L, -8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4399     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4400     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1p-63L, -8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4401 # if LDBL_MIN_EXP <= -16381
4402     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4403     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4404     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4405     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4406     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4407     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4408     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4409     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4410 # endif
4411     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L),
4412     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L),
4413     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L),
4414     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L),
4415     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L, 0.0L),
4416     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L, 0.0L),
4417     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L, -0.0L),
4418     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L, -0.0L),
4419 #endif
4420     TEST_c_c (casinh, 0x1p-63L, 0.5L, 1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4421     TEST_c_c (casinh, 0x1p-63L, -0.5L, 1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4422     TEST_c_c (casinh, -0x1p-63L, 0.5L, -1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4423     TEST_c_c (casinh, -0x1p-63L, -0.5L, -1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4424     TEST_c_c (casinh, 0.5L, 0x1p-63L, 4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4425     TEST_c_c (casinh, -0.5L, 0x1p-63L, -4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4426     TEST_c_c (casinh, 0.5L, -0x1p-63L, 4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4427     TEST_c_c (casinh, -0.5L, -0x1p-63L, -4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4428 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4429     TEST_c_c (casinh, 0x1.fp-16385L, 0.5L, 9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4430     TEST_c_c (casinh, 0x1.fp-16385L, -0.5L, 9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4431     TEST_c_c (casinh, -0x1.fp-16385L, 0.5L, -9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4432     TEST_c_c (casinh, -0x1.fp-16385L, -0.5L, -9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4433     TEST_c_c (casinh, 0.5L, 0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4434     TEST_c_c (casinh, -0.5L, 0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4435     TEST_c_c (casinh, 0.5L, -0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4436     TEST_c_c (casinh, -0.5L, -0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4437 #endif
4438     TEST_c_c (casinh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4439     TEST_c_c (casinh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4440     TEST_c_c (casinh, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4441     TEST_c_c (casinh, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4442 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4443     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4444     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4445     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4446     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4447     TEST_c_c (casinh, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4448     TEST_c_c (casinh, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4449     TEST_c_c (casinh, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4450     TEST_c_c (casinh, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4451 #endif
4452     TEST_c_c (casinh, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L),
4453     TEST_c_c (casinh, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L),
4454     TEST_c_c (casinh, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L),
4455     TEST_c_c (casinh, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L),
4456     TEST_c_c (casinh, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L, 0.0L),
4457     TEST_c_c (casinh, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L, 0.0L),
4458     TEST_c_c (casinh, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L, -0.0L),
4459     TEST_c_c (casinh, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L, -0.0L),
4460 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4461     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4462     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4463     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4464     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4465 #endif
4466 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4467     TEST_c_c (casinh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4468     TEST_c_c (casinh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4469     TEST_c_c (casinh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4470     TEST_c_c (casinh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4471     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4472     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4473     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4474     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4475     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4476     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4477     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4478     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4479     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4480     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4481     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4482     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4483     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L),
4484     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L),
4485     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L),
4486     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L),
4487     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L, 0.0L),
4488     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L, 0.0L),
4489     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L, -0.0L),
4490     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L, -0.0L),
4491 #endif
4492     TEST_c_c (casinh, 0x1p-105L, 0.5L, 2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4493     TEST_c_c (casinh, 0x1p-105L, -0.5L, 2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4494     TEST_c_c (casinh, -0x1p-105L, 0.5L, -2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4495     TEST_c_c (casinh, -0x1p-105L, -0.5L, -2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4496     TEST_c_c (casinh, 0.5L, 0x1p-105L, 4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4497     TEST_c_c (casinh, -0.5L, 0x1p-105L, -4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4498     TEST_c_c (casinh, 0.5L, -0x1p-105L, 4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4499     TEST_c_c (casinh, -0.5L, -0x1p-105L, -4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4500     TEST_c_c (casinh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4501     TEST_c_c (casinh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4502     TEST_c_c (casinh, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4503     TEST_c_c (casinh, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4504 #ifndef TEST_FLOAT
4505     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4506     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4507     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4508     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4509     /* Bug 15319: underflow exception may be missing.  */
4510     TEST_c_c (casinh, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4511     TEST_c_c (casinh, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4512     TEST_c_c (casinh, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4513     TEST_c_c (casinh, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4514 #endif
4515     TEST_c_c (casinh, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
4516     TEST_c_c (casinh, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
4517     TEST_c_c (casinh, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
4518     TEST_c_c (casinh, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
4519     TEST_c_c (casinh, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
4520     TEST_c_c (casinh, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
4521     TEST_c_c (casinh, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
4522     TEST_c_c (casinh, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
4523 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4524     TEST_c_c (casinh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4525     TEST_c_c (casinh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4526     TEST_c_c (casinh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4527     TEST_c_c (casinh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4528     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4529     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4530     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4531     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4532     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4533     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4534     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4535     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4536     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4537     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4538     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4539     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4540     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L),
4541     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L),
4542     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L),
4543     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L),
4544     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L, 0.0L),
4545     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L, 0.0L),
4546     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L, -0.0L),
4547     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L, -0.0L),
4548 #endif
4549     TEST_c_c (casinh, 0x1p-112L, 0.5L, 2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4550     TEST_c_c (casinh, 0x1p-112L, -0.5L, 2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4551     TEST_c_c (casinh, -0x1p-112L, 0.5L, -2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4552     TEST_c_c (casinh, -0x1p-112L, -0.5L, -2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4553     TEST_c_c (casinh, 0.5L, 0x1p-112L, 4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4554     TEST_c_c (casinh, -0.5L, 0x1p-112L, -4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4555     TEST_c_c (casinh, 0.5L, -0x1p-112L, 4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4556     TEST_c_c (casinh, -0.5L, -0x1p-112L, -4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4557     TEST_c_c (casinh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4558     TEST_c_c (casinh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4559     TEST_c_c (casinh, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4560     TEST_c_c (casinh, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4561 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4562     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4563     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4564     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4565     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4566     TEST_c_c (casinh, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4567     TEST_c_c (casinh, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4568     TEST_c_c (casinh, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4569     TEST_c_c (casinh, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4570 #endif
4571     TEST_c_c (casinh, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
4572     TEST_c_c (casinh, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
4573     TEST_c_c (casinh, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
4574     TEST_c_c (casinh, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
4575     TEST_c_c (casinh, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
4576     TEST_c_c (casinh, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
4577     TEST_c_c (casinh, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
4578     TEST_c_c (casinh, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
4580     TEST_c_c (casinh, 0.75L, 1.25L, 1.03171853444778027336364058631006594L, 0.911738290968487636358489564316731207L),
4581     TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L),
4582     END_DATA (casinh)
4583   };
4585 static void
4586 casinh_test (void)
4588   errno = 0;
4589   FUNC(casinh) (BUILD_COMPLEX (0.7L, 1.2L));
4590   if (errno == ENOSYS)
4591     /* Function not implemented.  */
4592     return;
4594   START (casinh);
4595   RUN_TEST_LOOP_c_c (casinh, casinh_test_data, );
4596   END (casinh, complex);
4600 static const struct test_c_c_data catan_test_data[] =
4601   {
4602     START_DATA (catan),
4603     TEST_c_c (catan, 0, 0, 0, 0),
4604     TEST_c_c (catan, minus_zero, 0, minus_zero, 0),
4605     TEST_c_c (catan, 0, minus_zero, 0, minus_zero),
4606     TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero),
4608     TEST_c_c (catan, 1.0L, plus_zero, M_PI_4l, plus_zero),
4609     TEST_c_c (catan, 1.0L, minus_zero, M_PI_4l, minus_zero),
4610     TEST_c_c (catan, -1.0L, plus_zero, -M_PI_4l, plus_zero),
4611     TEST_c_c (catan, -1.0L, minus_zero, -M_PI_4l, minus_zero),
4612     TEST_c_c (catan, plus_zero, 1.0L, plus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4613     TEST_c_c (catan, minus_zero, 1.0L, minus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4614     TEST_c_c (catan, plus_zero, -1.0L, plus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4615     TEST_c_c (catan, minus_zero, -1.0L, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4617     TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0),
4618     TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero),
4619     TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0),
4620     TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero),
4623     TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero),
4624     TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero),
4625     TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero),
4626     TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero),
4627     TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0),
4628     TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0),
4629     TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0),
4630     TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0),
4632     TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero),
4633     TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero),
4634     TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero),
4635     TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero),
4637     TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0),
4638     TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0),
4639     TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0),
4640     TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0),
4642     TEST_c_c (catan, qnan_value, 0.0, qnan_value, 0),
4643     TEST_c_c (catan, qnan_value, minus_zero, qnan_value, minus_zero),
4645     TEST_c_c (catan, qnan_value, plus_infty, qnan_value, 0),
4646     TEST_c_c (catan, qnan_value, minus_infty, qnan_value, minus_zero),
4648     TEST_c_c (catan, 0.0, qnan_value, qnan_value, qnan_value),
4649     TEST_c_c (catan, minus_zero, qnan_value, qnan_value, qnan_value),
4651     TEST_c_c (catan, plus_infty, qnan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4652     TEST_c_c (catan, minus_infty, qnan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4654     TEST_c_c (catan, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4655     TEST_c_c (catan, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4657     TEST_c_c (catan, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4658     TEST_c_c (catan, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4660     TEST_c_c (catan, qnan_value, qnan_value, qnan_value, qnan_value),
4662     TEST_c_c (catan, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L, 0.0L),
4663     TEST_c_c (catan, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L, -0.0L),
4664     TEST_c_c (catan, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L, 0.0L),
4665     TEST_c_c (catan, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L, -0.0L),
4666     TEST_c_c (catan, 0.0L, 0x1p50L, 1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4667     TEST_c_c (catan, -0.0L, 0x1p50L, -1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4668     TEST_c_c (catan, 0.0L, -0x1p50L, 1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4669     TEST_c_c (catan, -0.0L, -0x1p50L, -1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4670 #ifndef TEST_FLOAT
4671     TEST_c_c (catan, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4672     TEST_c_c (catan, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4673     TEST_c_c (catan, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4674     TEST_c_c (catan, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4675     TEST_c_c (catan, 0.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4676     TEST_c_c (catan, -0.0L, 0x1p500L, -1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4677     TEST_c_c (catan, 0.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4678     TEST_c_c (catan, -0.0L, -0x1p500L, -1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4679 #endif
4680 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4681     TEST_c_c (catan, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4682     TEST_c_c (catan, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4683     TEST_c_c (catan, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4684     TEST_c_c (catan, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4685     TEST_c_c (catan, 0.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4686     TEST_c_c (catan, -0.0L, 0x1p5000L, -1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4687     TEST_c_c (catan, 0.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4688     TEST_c_c (catan, -0.0L, -0x1p5000L, -1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4689 #endif
4690     TEST_c_c (catan, 0x1p63L, 0.5L, 1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4691     TEST_c_c (catan, 0x1p63L, -0.5L, 1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4692     TEST_c_c (catan, -0x1p63L, 0.5L, -1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4693     TEST_c_c (catan, -0x1p63L, -0.5L, -1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4694     TEST_c_c (catan, 0.5L, 0x1p63L, 1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4695     TEST_c_c (catan, -0.5L, 0x1p63L, -1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4696     TEST_c_c (catan, 0.5L, -0x1p63L, 1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4697     TEST_c_c (catan, -0.5L, -0x1p63L, -1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4698 #ifndef TEST_FLOAT
4699     TEST_c_c (catan, 0x1p511L, 0.5L, 1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4700     TEST_c_c (catan, 0x1p511L, -0.5L, 1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4701     TEST_c_c (catan, -0x1p511L, 0.5L, -1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4702     TEST_c_c (catan, -0x1p511L, -0.5L, -1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4703     TEST_c_c (catan, 0.5L, 0x1p511L, 1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4704     TEST_c_c (catan, -0.5L, 0x1p511L, -1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4705     TEST_c_c (catan, 0.5L, -0x1p511L, 1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4706     TEST_c_c (catan, -0.5L, -0x1p511L, -1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4707 #endif
4708 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4709     TEST_c_c (catan, 0x1p8191L, 0.5L, 1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4710     TEST_c_c (catan, 0x1p8191L, -0.5L, 1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4711     TEST_c_c (catan, -0x1p8191L, 0.5L, -1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4712     TEST_c_c (catan, -0x1p8191L, -0.5L, -1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4713     TEST_c_c (catan, 0.5L, 0x1p8191L, 1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4714     TEST_c_c (catan, -0.5L, 0x1p8191L, -1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4715     TEST_c_c (catan, 0.5L, -0x1p8191L, 1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4716     TEST_c_c (catan, -0.5L, -0x1p8191L, -1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4717 #endif
4718     TEST_c_c (catan, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L, 0.0L),
4719     TEST_c_c (catan, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L, -0.0L),
4720     TEST_c_c (catan, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L, 0.0L),
4721     TEST_c_c (catan, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L, -0.0L),
4722     TEST_c_c (catan, 0.0L, 0x1p100L, 1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4723     TEST_c_c (catan, -0.0L, 0x1p100L, -1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4724     TEST_c_c (catan, 0.0L, -0x1p100L, 1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4725     TEST_c_c (catan, -0.0L, -0x1p100L, -1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4726     TEST_c_c (catan, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L, 0.0L),
4727     TEST_c_c (catan, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L, -0.0L),
4728     TEST_c_c (catan, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L, 0.0L),
4729     TEST_c_c (catan, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L, -0.0L),
4730     TEST_c_c (catan, 0.0L, 0x1.fp127L, 1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4731     TEST_c_c (catan, -0.0L, 0x1.fp127L, -1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4732     TEST_c_c (catan, 0.0L, -0x1.fp127L, 1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4733     TEST_c_c (catan, -0.0L, -0x1.fp127L, -1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4734     TEST_c_c (catan, 0x1.fp127L, 0x1.fp127L, 1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4735     TEST_c_c (catan, 0x1.fp127L, -0x1.fp127L, 1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4736     TEST_c_c (catan, -0x1.fp127L, 0x1.fp127L, -1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4737     TEST_c_c (catan, -0x1.fp127L, -0x1.fp127L, -1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4738 #ifndef TEST_FLOAT
4739     TEST_c_c (catan, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4740     TEST_c_c (catan, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4741     TEST_c_c (catan, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4742     TEST_c_c (catan, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4743     TEST_c_c (catan, 0.0L, 0x1p900L, 1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4744     TEST_c_c (catan, -0.0L, 0x1p900L, -1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4745     TEST_c_c (catan, 0.0L, -0x1p900L, 1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4746     TEST_c_c (catan, -0.0L, -0x1p900L, -1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4747     TEST_c_c (catan, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4748     TEST_c_c (catan, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4749     TEST_c_c (catan, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4750     TEST_c_c (catan, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4751     TEST_c_c (catan, 0.0L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4752     TEST_c_c (catan, -0.0L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4753     TEST_c_c (catan, 0.0L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4754     TEST_c_c (catan, -0.0L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4755     TEST_c_c (catan, 0x1.fp1023L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4756     TEST_c_c (catan, 0x1.fp1023L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4757     TEST_c_c (catan, -0x1.fp1023L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4758     TEST_c_c (catan, -0x1.fp1023L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4759 #endif
4760 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4761     TEST_c_c (catan, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4762     TEST_c_c (catan, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4763     TEST_c_c (catan, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4764     TEST_c_c (catan, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4765     TEST_c_c (catan, 0.0L, 0x1p10000L, 1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4766     TEST_c_c (catan, -0.0L, 0x1p10000L, -1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4767     TEST_c_c (catan, 0.0L, -0x1p10000L, 1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4768     TEST_c_c (catan, -0.0L, -0x1p10000L, -1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4769     TEST_c_c (catan, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4770     TEST_c_c (catan, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4771     TEST_c_c (catan, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4772     TEST_c_c (catan, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4773     TEST_c_c (catan, 0.0L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4774     TEST_c_c (catan, -0.0L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4775     TEST_c_c (catan, 0.0L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4776     TEST_c_c (catan, -0.0L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4777     TEST_c_c (catan, 0x1.fp16383L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4778     TEST_c_c (catan, 0x1.fp16383L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4779     TEST_c_c (catan, -0x1.fp16383L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4780     TEST_c_c (catan, -0x1.fp16383L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4781 #endif
4782     TEST_c_c (catan, 0x1p-13L, 1.0L, 7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4783     TEST_c_c (catan, 0x1p-13L, -1.0L, 7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4784     TEST_c_c (catan, -0x1p-13L, 1.0L, -7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4785     TEST_c_c (catan, -0x1p-13L, -1.0L, -7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4786     TEST_c_c (catan, 1.0L, 0x1p-13L, 7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4787     TEST_c_c (catan, -1.0L, 0x1p-13L, -7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4788     TEST_c_c (catan, 1.0L, -0x1p-13L, 7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4789     TEST_c_c (catan, -1.0L, -0x1p-13L, -7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4790     TEST_c_c (catan, 0x1p-27L, 1.0L, 7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4791     TEST_c_c (catan, 0x1p-27L, -1.0L, 7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4792     TEST_c_c (catan, -0x1p-27L, 1.0L, -7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4793     TEST_c_c (catan, -0x1p-27L, -1.0L, -7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4794     TEST_c_c (catan, 1.0L, 0x1p-27L, 7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4795     TEST_c_c (catan, -1.0L, 0x1p-27L, -7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4796     TEST_c_c (catan, 1.0L, -0x1p-27L, 7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4797     TEST_c_c (catan, -1.0L, -0x1p-27L, -7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4798     TEST_c_c (catan, 0x1p-33L, 1.0L, 7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4799     TEST_c_c (catan, 0x1p-33L, -1.0L, 7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4800     TEST_c_c (catan, -0x1p-33L, 1.0L, -7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4801     TEST_c_c (catan, -0x1p-33L, -1.0L, -7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4802     TEST_c_c (catan, 1.0L, 0x1p-33L, 7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4803     TEST_c_c (catan, -1.0L, 0x1p-33L, -7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4804     TEST_c_c (catan, 1.0L, -0x1p-33L, 7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4805     TEST_c_c (catan, -1.0L, -0x1p-33L, -7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4806     TEST_c_c (catan, 0x1p-54L, 1.0L, 7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4807     TEST_c_c (catan, 0x1p-54L, -1.0L, 7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4808     TEST_c_c (catan, -0x1p-54L, 1.0L, -7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4809     TEST_c_c (catan, -0x1p-54L, -1.0L, -7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4810     TEST_c_c (catan, 1.0L, 0x1p-54L, 7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4811     TEST_c_c (catan, -1.0L, 0x1p-54L, -7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4812     TEST_c_c (catan, 1.0L, -0x1p-54L, 7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4813     TEST_c_c (catan, -1.0L, -0x1p-54L, -7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4814     TEST_c_c (catan, 0x1p-57L, 1.0L, 7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4815     TEST_c_c (catan, 0x1p-57L, -1.0L, 7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4816     TEST_c_c (catan, -0x1p-57L, 1.0L, -7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4817     TEST_c_c (catan, -0x1p-57L, -1.0L, -7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4818     TEST_c_c (catan, 1.0L, 0x1p-57L, 7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4819     TEST_c_c (catan, -1.0L, 0x1p-57L, -7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4820     TEST_c_c (catan, 1.0L, -0x1p-57L, 7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4821     TEST_c_c (catan, -1.0L, -0x1p-57L, -7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4822     TEST_c_c (catan, 0x1p-13L, 0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4823     TEST_c_c (catan, 0x1p-13L, -0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4824     TEST_c_c (catan, -0x1p-13L, 0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4825     TEST_c_c (catan, -0x1p-13L, -0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4826     TEST_c_c (catan, 0x1.000002p0L, 0x1p-13L, 7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4827     TEST_c_c (catan, -0x1.000002p0L, 0x1p-13L, -7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4828     TEST_c_c (catan, 0x1.000002p0L, -0x1p-13L, 7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4829     TEST_c_c (catan, -0x1.000002p0L, -0x1p-13L, -7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4830     TEST_c_c (catan, 0x1p-13L, 0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4831     TEST_c_c (catan, 0x1p-13L, -0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4832     TEST_c_c (catan, -0x1p-13L, 0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4833     TEST_c_c (catan, -0x1p-13L, -0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4834     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-13L, 7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4835     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-13L, -7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4836     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-13L, 7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4837     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-13L, -7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4838 #ifndef TEST_FLOAT
4839     TEST_c_c (catan, 0x1p-27L, 0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4840     TEST_c_c (catan, 0x1p-27L, -0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4841     TEST_c_c (catan, -0x1p-27L, 0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4842     TEST_c_c (catan, -0x1p-27L, -0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4843     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-27L, 7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4844     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-27L, -7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4845     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-27L, 7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4846     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-27L, -7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4847     TEST_c_c (catan, 0x1p-27L, 0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4848     TEST_c_c (catan, 0x1p-27L, -0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4849     TEST_c_c (catan, -0x1p-27L, 0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4850     TEST_c_c (catan, -0x1p-27L, -0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4851     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-27L, 7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4852     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-27L, -7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4853     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-27L, 7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4854     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-27L, -7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4855 #endif
4856 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4857     TEST_c_c (catan, 0x1p-33L, 0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
4858     TEST_c_c (catan, 0x1p-33L, -0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
4859     TEST_c_c (catan, -0x1p-33L, 0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
4860     TEST_c_c (catan, -0x1p-33L, -0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
4861     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-33L, 7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
4862     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-33L, -7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
4863     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-33L, 7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
4864     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-33L, -7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
4865     TEST_c_c (catan, 0x1p-33L, 0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
4866     TEST_c_c (catan, 0x1p-33L, -0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
4867     TEST_c_c (catan, -0x1p-33L, 0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
4868     TEST_c_c (catan, -0x1p-33L, -0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
4869     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-33L, 7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
4870     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-33L, -7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
4871     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-33L, 7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
4872     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-33L, -7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
4873 #endif
4874 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4875     TEST_c_c (catan, 0x1p-54L, 0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
4876     TEST_c_c (catan, 0x1p-54L, -0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
4877     TEST_c_c (catan, -0x1p-54L, 0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
4878     TEST_c_c (catan, -0x1p-54L, -0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
4879     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-54L, 7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
4880     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-54L, -7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
4881     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-54L, 7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
4882     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-54L, -7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
4883     TEST_c_c (catan, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
4884     TEST_c_c (catan, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
4885     TEST_c_c (catan, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
4886     TEST_c_c (catan, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
4887     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
4888     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
4889     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
4890     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
4891 #endif
4892 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4893     TEST_c_c (catan, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
4894     TEST_c_c (catan, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
4895     TEST_c_c (catan, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
4896     TEST_c_c (catan, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
4897     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
4898     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
4899     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
4900     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
4901     TEST_c_c (catan, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
4902     TEST_c_c (catan, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
4903     TEST_c_c (catan, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
4904     TEST_c_c (catan, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
4905     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
4906     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
4907     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
4908     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
4909 #endif
4910     TEST_c_c (catan, 1.0L, 0x1p-64L, 7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
4911     TEST_c_c (catan, 1.0L, -0x1p-64L, 7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
4912     TEST_c_c (catan, -1.0L, 0x1p-64L, -7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
4913     TEST_c_c (catan, -1.0L, -0x1p-64L, -7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
4914     TEST_c_c (catan, 0x1p-64L, 1.0L, 7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
4915     TEST_c_c (catan, -0x1p-64L, 1.0L, -7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
4916     TEST_c_c (catan, 0x1p-64L, -1.0L, 7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
4917     TEST_c_c (catan, -0x1p-64L, -1.0L, -7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
4918     TEST_c_c (catan, 1.0L, 0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
4919     TEST_c_c (catan, 1.0L, -0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
4920     TEST_c_c (catan, -1.0L, 0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
4921     TEST_c_c (catan, -1.0L, -0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
4922     TEST_c_c (catan, 0x1.3p-73L, 1.0L, 7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
4923     TEST_c_c (catan, -0x1.3p-73L, 1.0L, -7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
4924     TEST_c_c (catan, 0x1.3p-73L, -1.0L, 7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
4925     TEST_c_c (catan, -0x1.3p-73L, -1.0L, -7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
4926     TEST_c_c (catan, 1.0L, 0x1p-124L, 7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
4927     TEST_c_c (catan, 1.0L, -0x1p-124L, 7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
4928     TEST_c_c (catan, -1.0L, 0x1p-124L, -7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
4929     TEST_c_c (catan, -1.0L, -0x1p-124L, -7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
4930     TEST_c_c (catan, 0x1p-124L, 1.0L, 7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
4931     TEST_c_c (catan, -0x1p-124L, 1.0L, -7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
4932     TEST_c_c (catan, 0x1p-124L, -1.0L, 7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
4933     TEST_c_c (catan, -0x1p-124L, -1.0L, -7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
4934     TEST_c_c (catan, 0x1.000002p0L, 0x1p-126L, 7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4935     TEST_c_c (catan, 0x1.000002p0L, -0x1p-126L, 7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4936     TEST_c_c (catan, -0x1.000002p0L, 0x1p-126L, -7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4937     TEST_c_c (catan, -0x1.000002p0L, -0x1p-126L, -7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4938     TEST_c_c (catan, 0x1p-126L, 0x1.000002p0L, 1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
4939     TEST_c_c (catan, -0x1p-126L, 0x1.000002p0L, -1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
4940     TEST_c_c (catan, 0x1p-126L, -0x1.000002p0L, 1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
4941     TEST_c_c (catan, -0x1p-126L, -0x1.000002p0L, -1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
4942     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-126L, 7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4943     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-126L, 7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4944     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-126L, -7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4945     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-126L, -7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4946     TEST_c_c (catan, 0x1p-126L, 0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
4947     TEST_c_c (catan, -0x1p-126L, 0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
4948     TEST_c_c (catan, 0x1p-126L, -0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
4949     TEST_c_c (catan, -0x1p-126L, -0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
4950 #ifndef TEST_FLOAT
4951     TEST_c_c (catan, 1.0L, 0x1p-512L, 7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
4952     TEST_c_c (catan, 1.0L, -0x1p-512L, 7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
4953     TEST_c_c (catan, -1.0L, 0x1p-512L, -7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
4954     TEST_c_c (catan, -1.0L, -0x1p-512L, -7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
4955     TEST_c_c (catan, 0x1p-512L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
4956     TEST_c_c (catan, -0x1p-512L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
4957     TEST_c_c (catan, 0x1p-512L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
4958     TEST_c_c (catan, -0x1p-512L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
4959     TEST_c_c (catan, 1.0L, 0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
4960     TEST_c_c (catan, 1.0L, -0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
4961     TEST_c_c (catan, -1.0L, 0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
4962     TEST_c_c (catan, -1.0L, -0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
4963     TEST_c_c (catan, 0x1.3p-536L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
4964     TEST_c_c (catan, -0x1.3p-536L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
4965     TEST_c_c (catan, 0x1.3p-536L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
4966     TEST_c_c (catan, -0x1.3p-536L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
4967     TEST_c_c (catan, 1.0L, 0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4968     TEST_c_c (catan, 1.0L, -0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4969     TEST_c_c (catan, -1.0L, 0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4970     TEST_c_c (catan, -1.0L, -0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4971     TEST_c_c (catan, 0x1p-1020L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
4972     TEST_c_c (catan, -0x1p-1020L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
4973     TEST_c_c (catan, 0x1p-1020L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
4974     TEST_c_c (catan, -0x1p-1020L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
4975     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4976     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4977     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4978     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4979     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
4980     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
4981     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
4982     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
4983     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4984     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4985     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4986     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4987     TEST_c_c (catan, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4988     TEST_c_c (catan, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4989     TEST_c_c (catan, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4990     TEST_c_c (catan, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4991 #endif
4992 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4993     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4994     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4995     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4996     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4997     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
4998     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
4999     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5000     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5001     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5002     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5003     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5004     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5005     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5006     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5007     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5008     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5009 #endif
5010 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5011     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5012     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5013     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5014     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5015     TEST_c_c (catan, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5016     TEST_c_c (catan, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5017     TEST_c_c (catan, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5018     TEST_c_c (catan, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5019     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5020     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5021     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5022     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5023     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5024     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5025     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5026     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5027 #endif
5028 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5029     TEST_c_c (catan, 1.0L, 0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5030     TEST_c_c (catan, 1.0L, -0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5031     TEST_c_c (catan, -1.0L, 0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5032     TEST_c_c (catan, -1.0L, -0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5033     TEST_c_c (catan, 0x1p-8192L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5034     TEST_c_c (catan, -0x1p-8192L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5035     TEST_c_c (catan, 0x1p-8192L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5036     TEST_c_c (catan, -0x1p-8192L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5037     TEST_c_c (catan, 1.0L, 0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5038     TEST_c_c (catan, 1.0L, -0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5039     TEST_c_c (catan, -1.0L, 0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5040     TEST_c_c (catan, -1.0L, -0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5041     TEST_c_c (catan, 0x1.3p-8221L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5042     TEST_c_c (catan, -0x1.3p-8221L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5043     TEST_c_c (catan, 0x1.3p-8221L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5044     TEST_c_c (catan, -0x1.3p-8221L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5045     TEST_c_c (catan, 1.0L, 0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5046     TEST_c_c (catan, 1.0L, -0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5047     TEST_c_c (catan, -1.0L, 0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5048     TEST_c_c (catan, -1.0L, -0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5049     TEST_c_c (catan, 0x1.3p-8246L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5050     TEST_c_c (catan, -0x1.3p-8246L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5051     TEST_c_c (catan, 0x1.3p-8246L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5052     TEST_c_c (catan, -0x1.3p-8246L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5053     TEST_c_c (catan, 1.0L, 0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5054     TEST_c_c (catan, 1.0L, -0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5055     TEST_c_c (catan, -1.0L, 0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5056     TEST_c_c (catan, -1.0L, -0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5057     TEST_c_c (catan, 0x1p-16380L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5058     TEST_c_c (catan, -0x1p-16380L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5059     TEST_c_c (catan, 0x1p-16380L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5060     TEST_c_c (catan, -0x1p-16380L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5061     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5062     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5063     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5064     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5065     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5066     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5067     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5068     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5069     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5070     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5071     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5072     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5073     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5074     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5075     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5076     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5077 # if LDBL_MANT_DIG >= 113
5078     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5079     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5080     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5081     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5082     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5083     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5084     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5085     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5086     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5087     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5088     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5089     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5090     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5091     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5092     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5093     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5094 # endif
5095 #endif
5097     TEST_c_c (catan, 0.75L, 1.25L, 1.10714871779409050301706546017853704L, 0.549306144334054845697622618461262852L),
5098     TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L),
5099     END_DATA (catan)
5100   };
5102 static void
5103 catan_test (void)
5105   errno = 0;
5106   FUNC(catan) (BUILD_COMPLEX (0.7L, 1.2L));
5107   if (errno == ENOSYS)
5108     /* Function not implemented.  */
5109     return;
5111   START (catan);
5112   RUN_TEST_LOOP_c_c (catan, catan_test_data, );
5113   END (catan, complex);
5116 static const struct test_c_c_data catanh_test_data[] =
5117   {
5118     START_DATA (catanh),
5119     TEST_c_c (catanh, 0, 0, 0.0, 0.0),
5120     TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0),
5121     TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero),
5122     TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero),
5124     TEST_c_c (catanh, 1.0L, plus_zero, plus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5125     TEST_c_c (catanh, 1.0L, minus_zero, plus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5126     TEST_c_c (catanh, -1.0L, plus_zero, minus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5127     TEST_c_c (catanh, -1.0L, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5128     TEST_c_c (catanh, plus_zero, 1.0L, plus_zero, M_PI_4l),
5129     TEST_c_c (catanh, minus_zero, 1.0L, minus_zero, M_PI_4l),
5130     TEST_c_c (catanh, plus_zero, -1.0L, plus_zero, -M_PI_4l),
5131     TEST_c_c (catanh, minus_zero, -1.0L, minus_zero, -M_PI_4l),
5133     TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l),
5134     TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l),
5135     TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l),
5136     TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l),
5138     TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l),
5139     TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l),
5140     TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l),
5141     TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l),
5142     TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l),
5143     TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l),
5144     TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l),
5145     TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l),
5147     TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l),
5148     TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l),
5149     TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l),
5150     TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l),
5152     TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l),
5153     TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l),
5154     TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l),
5155     TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l),
5157     TEST_c_c (catanh, 0, qnan_value, 0.0, qnan_value),
5158     TEST_c_c (catanh, minus_zero, qnan_value, minus_zero, qnan_value),
5160     TEST_c_c (catanh, plus_infty, qnan_value, 0.0, qnan_value),
5161     TEST_c_c (catanh, minus_infty, qnan_value, minus_zero, qnan_value),
5163     TEST_c_c (catanh, qnan_value, 0, qnan_value, qnan_value),
5164     TEST_c_c (catanh, qnan_value, minus_zero, qnan_value, qnan_value),
5166     TEST_c_c (catanh, qnan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN),
5167     TEST_c_c (catanh, qnan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN),
5169     TEST_c_c (catanh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5170     TEST_c_c (catanh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5172     TEST_c_c (catanh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5173     TEST_c_c (catanh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5175     TEST_c_c (catanh, qnan_value, qnan_value, qnan_value, qnan_value),
5177     TEST_c_c (catanh, 0x1p50L, 0.0L, 8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5178     TEST_c_c (catanh, 0x1p50L, -0.0L, 8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5179     TEST_c_c (catanh, -0x1p50L, 0.0L, -8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5180     TEST_c_c (catanh, -0x1p50L, -0.0L, -8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5181     TEST_c_c (catanh, 0.0L, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L),
5182     TEST_c_c (catanh, -0.0L, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L),
5183     TEST_c_c (catanh, 0.0L, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L),
5184     TEST_c_c (catanh, -0.0L, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L),
5185 #ifndef TEST_FLOAT
5186     TEST_c_c (catanh, 0x1p500L, 0.0L, 3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5187     TEST_c_c (catanh, 0x1p500L, -0.0L, 3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5188     TEST_c_c (catanh, -0x1p500L, 0.0L, -3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5189     TEST_c_c (catanh, -0x1p500L, -0.0L, -3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5190     TEST_c_c (catanh, 0.0L, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L),
5191     TEST_c_c (catanh, -0.0L, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L),
5192     TEST_c_c (catanh, 0.0L, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L),
5193     TEST_c_c (catanh, -0.0L, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L),
5194 #endif
5195 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5196     TEST_c_c (catanh, 0x1p5000L, 0.0L, 7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5197     TEST_c_c (catanh, 0x1p5000L, -0.0L, 7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5198     TEST_c_c (catanh, -0x1p5000L, 0.0L, -7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5199     TEST_c_c (catanh, -0x1p5000L, -0.0L, -7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5200     TEST_c_c (catanh, 0.0L, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L),
5201     TEST_c_c (catanh, -0.0L, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L),
5202     TEST_c_c (catanh, 0.0L, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L),
5203     TEST_c_c (catanh, -0.0L, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L),
5204 #endif
5205     TEST_c_c (catanh, 0x1p63L, 0.5L, 1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5206     TEST_c_c (catanh, 0x1p63L, -0.5L, 1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5207     TEST_c_c (catanh, -0x1p63L, 0.5L, -1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5208     TEST_c_c (catanh, -0x1p63L, -0.5L, -1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5209     TEST_c_c (catanh, 0.5L, 0x1p63L, 5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5210     TEST_c_c (catanh, -0.5L, 0x1p63L, -5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5211     TEST_c_c (catanh, 0.5L, -0x1p63L, 5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5212     TEST_c_c (catanh, -0.5L, -0x1p63L, -5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5213 #ifndef TEST_FLOAT
5214     TEST_c_c (catanh, 0x1p511L, 0.5L, 1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5215     TEST_c_c (catanh, 0x1p511L, -0.5L, 1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5216     TEST_c_c (catanh, -0x1p511L, 0.5L, -1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5217     TEST_c_c (catanh, -0x1p511L, -0.5L, -1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5218     TEST_c_c (catanh, 0.5L, 0x1p511L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5219     TEST_c_c (catanh, -0.5L, 0x1p511L, -1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5220     TEST_c_c (catanh, 0.5L, -0x1p511L, 1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5221     TEST_c_c (catanh, -0.5L, -0x1p511L, -1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5222 #endif
5223 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5224     TEST_c_c (catanh, 0x1p8191L, 0.5L, 1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5225     TEST_c_c (catanh, 0x1p8191L, -0.5L, 1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5226     TEST_c_c (catanh, -0x1p8191L, 0.5L, -1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5227     TEST_c_c (catanh, -0x1p8191L, -0.5L, -1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5228     TEST_c_c (catanh, 0.5L, 0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5229     TEST_c_c (catanh, -0.5L, 0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5230     TEST_c_c (catanh, 0.5L, -0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5231     TEST_c_c (catanh, -0.5L, -0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5232 #endif
5233     TEST_c_c (catanh, 0x1p100L, 0.0L, 7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5234     TEST_c_c (catanh, 0x1p100L, -0.0L, 7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5235     TEST_c_c (catanh, -0x1p100L, 0.0L, -7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5236     TEST_c_c (catanh, -0x1p100L, -0.0L, -7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5237     TEST_c_c (catanh, 0.0L, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L),
5238     TEST_c_c (catanh, -0.0L, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L),
5239     TEST_c_c (catanh, 0.0L, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L),
5240     TEST_c_c (catanh, -0.0L, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L),
5241     TEST_c_c (catanh, 0x1.fp127L, 0.0L, 3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5242     TEST_c_c (catanh, 0x1.fp127L, -0.0L, 3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5243     TEST_c_c (catanh, -0x1.fp127L, 0.0L, -3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5244     TEST_c_c (catanh, -0x1.fp127L, -0.0L, -3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5245     TEST_c_c (catanh, 0.0L, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L),
5246     TEST_c_c (catanh, -0.0L, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L),
5247     TEST_c_c (catanh, 0.0L, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L),
5248     TEST_c_c (catanh, -0.0L, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L),
5249     TEST_c_c (catanh, 0x1.fp127L, 0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5250     TEST_c_c (catanh, 0x1.fp127L, -0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5251     TEST_c_c (catanh, -0x1.fp127L, 0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5252     TEST_c_c (catanh, -0x1.fp127L, -0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5253 #ifndef TEST_FLOAT
5254     TEST_c_c (catanh, 0x1p900L, 0.0L, 1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5255     TEST_c_c (catanh, 0x1p900L, -0.0L, 1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5256     TEST_c_c (catanh, -0x1p900L, 0.0L, -1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5257     TEST_c_c (catanh, -0x1p900L, -0.0L, -1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5258     TEST_c_c (catanh, 0.0L, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L),
5259     TEST_c_c (catanh, -0.0L, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L),
5260     TEST_c_c (catanh, 0.0L, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L),
5261     TEST_c_c (catanh, -0.0L, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L),
5262     TEST_c_c (catanh, 0x1.fp1023L, 0.0L, 5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5263     TEST_c_c (catanh, 0x1.fp1023L, -0.0L, 5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5264     TEST_c_c (catanh, -0x1.fp1023L, 0.0L, -5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5265     TEST_c_c (catanh, -0x1.fp1023L, -0.0L, -5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5266     TEST_c_c (catanh, 0.0L, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L),
5267     TEST_c_c (catanh, -0.0L, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L),
5268     TEST_c_c (catanh, 0.0L, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L),
5269     TEST_c_c (catanh, -0.0L, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L),
5270     TEST_c_c (catanh, 0x1.fp1023L, 0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5271     TEST_c_c (catanh, 0x1.fp1023L, -0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5272     TEST_c_c (catanh, -0x1.fp1023L, 0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5273     TEST_c_c (catanh, -0x1.fp1023L, -0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5274 #endif
5275 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5276     TEST_c_c (catanh, 0x1p10000L, 0.0L, 5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5277     TEST_c_c (catanh, 0x1p10000L, -0.0L, 5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5278     TEST_c_c (catanh, -0x1p10000L, 0.0L, -5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5279     TEST_c_c (catanh, -0x1p10000L, -0.0L, -5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5280     TEST_c_c (catanh, 0.0L, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L),
5281     TEST_c_c (catanh, -0.0L, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L),
5282     TEST_c_c (catanh, 0.0L, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L),
5283     TEST_c_c (catanh, -0.0L, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L),
5284     TEST_c_c (catanh, 0x1.fp16383L, 0.0L, 8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5285     TEST_c_c (catanh, 0x1.fp16383L, -0.0L, 8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5286     TEST_c_c (catanh, -0x1.fp16383L, 0.0L, -8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5287     TEST_c_c (catanh, -0x1.fp16383L, -0.0L, -8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5288     TEST_c_c (catanh, 0.0L, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L),
5289     TEST_c_c (catanh, -0.0L, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L),
5290     TEST_c_c (catanh, 0.0L, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L),
5291     TEST_c_c (catanh, -0.0L, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L),
5292     TEST_c_c (catanh, 0x1.fp16383L, 0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5293     TEST_c_c (catanh, 0x1.fp16383L, -0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5294     TEST_c_c (catanh, -0x1.fp16383L, 0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5295     TEST_c_c (catanh, -0x1.fp16383L, -0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5296 #endif
5297     TEST_c_c (catanh, 0x1p-13L, 1.0L, 6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5298     TEST_c_c (catanh, 0x1p-13L, -1.0L, 6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5299     TEST_c_c (catanh, -0x1p-13L, 1.0L, -6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5300     TEST_c_c (catanh, -0x1p-13L, -1.0L, -6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5301     TEST_c_c (catanh, 1.0L, 0x1p-13L, 4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5302     TEST_c_c (catanh, -1.0L, 0x1p-13L, -4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5303     TEST_c_c (catanh, 1.0L, -0x1p-13L, 4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5304     TEST_c_c (catanh, -1.0L, -0x1p-13L, -4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5305     TEST_c_c (catanh, 0x1p-27L, 1.0L, 3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5306     TEST_c_c (catanh, 0x1p-27L, -1.0L, 3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5307     TEST_c_c (catanh, -0x1p-27L, 1.0L, -3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5308     TEST_c_c (catanh, -0x1p-27L, -1.0L, -3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5309     TEST_c_c (catanh, 1.0L, 0x1p-27L, 9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5310     TEST_c_c (catanh, -1.0L, 0x1p-27L, -9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5311     TEST_c_c (catanh, 1.0L, -0x1p-27L, 9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5312     TEST_c_c (catanh, -1.0L, -0x1p-27L, -9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5313     TEST_c_c (catanh, 0x1p-33L, 1.0L, 5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5314     TEST_c_c (catanh, 0x1p-33L, -1.0L, 5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5315     TEST_c_c (catanh, -0x1p-33L, 1.0L, -5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5316     TEST_c_c (catanh, -0x1p-33L, -1.0L, -5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5317     TEST_c_c (catanh, 1.0L, 0x1p-33L, 1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5318     TEST_c_c (catanh, -1.0L, 0x1p-33L, -1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5319     TEST_c_c (catanh, 1.0L, -0x1p-33L, 1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5320     TEST_c_c (catanh, -1.0L, -0x1p-33L, -1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5321     TEST_c_c (catanh, 0x1p-54L, 1.0L, 2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5322     TEST_c_c (catanh, 0x1p-54L, -1.0L, 2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5323     TEST_c_c (catanh, -0x1p-54L, 1.0L, -2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5324     TEST_c_c (catanh, -0x1p-54L, -1.0L, -2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5325     TEST_c_c (catanh, 1.0L, 0x1p-54L, 1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5326     TEST_c_c (catanh, -1.0L, 0x1p-54L, -1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5327     TEST_c_c (catanh, 1.0L, -0x1p-54L, 1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5328     TEST_c_c (catanh, -1.0L, -0x1p-54L, -1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5329     TEST_c_c (catanh, 0x1p-57L, 1.0L, 3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5330     TEST_c_c (catanh, 0x1p-57L, -1.0L, 3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5331     TEST_c_c (catanh, -0x1p-57L, 1.0L, -3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5332     TEST_c_c (catanh, -0x1p-57L, -1.0L, -3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5333     TEST_c_c (catanh, 1.0L, 0x1p-57L, 2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5334     TEST_c_c (catanh, -1.0L, 0x1p-57L, -2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5335     TEST_c_c (catanh, 1.0L, -0x1p-57L, 2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5336     TEST_c_c (catanh, -1.0L, -0x1p-57L, -2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5337     TEST_c_c (catanh, 0x1p-13L, 0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5338     TEST_c_c (catanh, 0x1p-13L, -0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5339     TEST_c_c (catanh, -0x1p-13L, 0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5340     TEST_c_c (catanh, -0x1p-13L, -0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5341     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-13L, 4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5342     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-13L, -4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5343     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-13L, 4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5344     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-13L, -4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5345     TEST_c_c (catanh, 0x1p-13L, 0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5346     TEST_c_c (catanh, 0x1p-13L, -0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5347     TEST_c_c (catanh, -0x1p-13L, 0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5348     TEST_c_c (catanh, -0x1p-13L, -0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5349     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-13L, 4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5350     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-13L, -4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5351     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-13L, 4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5352     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-13L, -4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5353 #ifndef TEST_FLOAT
5354     TEST_c_c (catanh, 0x1p-27L, 0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5355     TEST_c_c (catanh, 0x1p-27L, -0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5356     TEST_c_c (catanh, -0x1p-27L, 0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5357     TEST_c_c (catanh, -0x1p-27L, -0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5358     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-27L, 9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5359     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-27L, -9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5360     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-27L, 9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5361     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-27L, -9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5362     TEST_c_c (catanh, 0x1p-27L, 0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5363     TEST_c_c (catanh, 0x1p-27L, -0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5364     TEST_c_c (catanh, -0x1p-27L, 0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5365     TEST_c_c (catanh, -0x1p-27L, -0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5366     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-27L, 9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5367     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-27L, -9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5368     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-27L, 9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5369     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-27L, -9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5370 #endif
5371 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5372     TEST_c_c (catanh, 0x1p-33L, 0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5373     TEST_c_c (catanh, 0x1p-33L, -0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5374     TEST_c_c (catanh, -0x1p-33L, 0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5375     TEST_c_c (catanh, -0x1p-33L, -0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5376     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-33L, 1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5377     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-33L, -1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5378     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-33L, 1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5379     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-33L, -1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5380     TEST_c_c (catanh, 0x1p-33L, 0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5381     TEST_c_c (catanh, 0x1p-33L, -0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5382     TEST_c_c (catanh, -0x1p-33L, 0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5383     TEST_c_c (catanh, -0x1p-33L, -0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5384     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-33L, 1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5385     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-33L, -1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5386     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-33L, 1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5387     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-33L, -1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5388 #endif
5389 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5390     TEST_c_c (catanh, 0x1p-54L, 0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5391     TEST_c_c (catanh, 0x1p-54L, -0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5392     TEST_c_c (catanh, -0x1p-54L, 0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5393     TEST_c_c (catanh, -0x1p-54L, -0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5394     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-54L, 1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5395     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-54L, -1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5396     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-54L, 1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5397     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-54L, -1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5398     TEST_c_c (catanh, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5399     TEST_c_c (catanh, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5400     TEST_c_c (catanh, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5401     TEST_c_c (catanh, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5402     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5403     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5404     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5405     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5406 #endif
5407 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5408     TEST_c_c (catanh, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5409     TEST_c_c (catanh, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5410     TEST_c_c (catanh, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5411     TEST_c_c (catanh, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5412     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5413     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5414     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5415     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5416     TEST_c_c (catanh, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5417     TEST_c_c (catanh, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5418     TEST_c_c (catanh, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5419     TEST_c_c (catanh, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5420     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5421     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5422     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5423     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5424 #endif
5425     TEST_c_c (catanh, 1.0L, 0x1p-64L, 2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5426     TEST_c_c (catanh, 1.0L, -0x1p-64L, 2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5427     TEST_c_c (catanh, -1.0L, 0x1p-64L, -2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5428     TEST_c_c (catanh, -1.0L, -0x1p-64L, -2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5429     TEST_c_c (catanh, 0x1p-64L, 1.0L, 2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5430     TEST_c_c (catanh, -0x1p-64L, 1.0L, -2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5431     TEST_c_c (catanh, 0x1p-64L, -1.0L, 2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5432     TEST_c_c (catanh, -0x1p-64L, -1.0L, -2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5433     TEST_c_c (catanh, 1.0L, 0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5434     TEST_c_c (catanh, 1.0L, -0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5435     TEST_c_c (catanh, -1.0L, 0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5436     TEST_c_c (catanh, -1.0L, -0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5437     TEST_c_c (catanh, 0x1.3p-73L, 1.0L, 6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5438     TEST_c_c (catanh, -0x1.3p-73L, 1.0L, -6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5439     TEST_c_c (catanh, 0x1.3p-73L, -1.0L, 6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5440     TEST_c_c (catanh, -0x1.3p-73L, -1.0L, -6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5441     TEST_c_c (catanh, 1.0L, 0x1p-124L, 4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5442     TEST_c_c (catanh, 1.0L, -0x1p-124L, 4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5443     TEST_c_c (catanh, -1.0L, 0x1p-124L, -4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5444     TEST_c_c (catanh, -1.0L, -0x1p-124L, -4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5445     TEST_c_c (catanh, 0x1p-124L, 1.0L, 2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5446     TEST_c_c (catanh, -0x1p-124L, 1.0L, -2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5447     TEST_c_c (catanh, 0x1p-124L, -1.0L, 2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5448     TEST_c_c (catanh, -0x1p-124L, -1.0L, -2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5449     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-126L, 8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5450     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-126L, 8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5451     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-126L, -8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5452     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-126L, -8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5453     TEST_c_c (catanh, 0x1p-126L, 0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5454     TEST_c_c (catanh, -0x1p-126L, 0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5455     TEST_c_c (catanh, 0x1p-126L, -0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5456     TEST_c_c (catanh, -0x1p-126L, -0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5457     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-126L, 8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5458     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-126L, 8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5459     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-126L, -8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5460     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-126L, -8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5461     TEST_c_c (catanh, 0x1p-126L, 0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5462     TEST_c_c (catanh, -0x1p-126L, 0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5463     TEST_c_c (catanh, 0x1p-126L, -0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5464     TEST_c_c (catanh, -0x1p-126L, -0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5465 #ifndef TEST_FLOAT
5466     TEST_c_c (catanh, 1.0L, 0x1p-512L, 1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5467     TEST_c_c (catanh, 1.0L, -0x1p-512L, 1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5468     TEST_c_c (catanh, -1.0L, 0x1p-512L, -1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5469     TEST_c_c (catanh, -1.0L, -0x1p-512L, -1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5470     TEST_c_c (catanh, 0x1p-512L, 1.0L, 3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5471     TEST_c_c (catanh, -0x1p-512L, 1.0L, -3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5472     TEST_c_c (catanh, 0x1p-512L, -1.0L, 3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5473     TEST_c_c (catanh, -0x1p-512L, -1.0L, -3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5474     TEST_c_c (catanh, 1.0L, 0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5475     TEST_c_c (catanh, 1.0L, -0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5476     TEST_c_c (catanh, -1.0L, 0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5477     TEST_c_c (catanh, -1.0L, -0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5478     TEST_c_c (catanh, 0x1.3p-536L, 1.0L, 2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5479     TEST_c_c (catanh, -0x1.3p-536L, 1.0L, -2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5480     TEST_c_c (catanh, 0x1.3p-536L, -1.0L, 2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5481     TEST_c_c (catanh, -0x1.3p-536L, -1.0L, -2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5482     TEST_c_c (catanh, 1.0L, 0x1p-1020L, 3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5483     TEST_c_c (catanh, 1.0L, -0x1p-1020L, 3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5484     TEST_c_c (catanh, -1.0L, 0x1p-1020L, -3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5485     TEST_c_c (catanh, -1.0L, -0x1p-1020L, -3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5486     TEST_c_c (catanh, 0x1p-1020L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5487     TEST_c_c (catanh, -0x1p-1020L, 1.0L, -4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5488     TEST_c_c (catanh, 0x1p-1020L, -1.0L, 4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5489     TEST_c_c (catanh, -0x1p-1020L, -1.0L, -4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5490     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-1022L, 1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5491     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-1022L, 1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5492     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-1022L, -1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5493     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-1022L, -1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5494     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5495     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5496     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5497     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5498     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-1022L, 1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5499     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-1022L, 1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5500     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-1022L, -1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5501     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-1022L, -1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5502     TEST_c_c (catanh, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5503     TEST_c_c (catanh, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5504     TEST_c_c (catanh, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5505     TEST_c_c (catanh, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5506 #endif
5507 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5508     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-1022L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5509     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-1022L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5510     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-1022L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5511     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-1022L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5512     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5513     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5514     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5515     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5516     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5517     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5518     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5519     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5520     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5521     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5522     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5523     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5524 #endif
5525 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5526     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5527     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5528     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5529     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5530     TEST_c_c (catanh, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5531     TEST_c_c (catanh, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5532     TEST_c_c (catanh, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5533     TEST_c_c (catanh, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5534     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5535     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5536     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5537     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5538     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5539     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5540     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5541     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5542 #endif
5543 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5544     TEST_c_c (catanh, 1.0L, 0x1p-8192L, 2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5545     TEST_c_c (catanh, 1.0L, -0x1p-8192L, 2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5546     TEST_c_c (catanh, -1.0L, 0x1p-8192L, -2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5547     TEST_c_c (catanh, -1.0L, -0x1p-8192L, -2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5548     TEST_c_c (catanh, 0x1p-8192L, 1.0L, 4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5549     TEST_c_c (catanh, -0x1p-8192L, 1.0L, -4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5550     TEST_c_c (catanh, 0x1p-8192L, -1.0L, 4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5551     TEST_c_c (catanh, -0x1p-8192L, -1.0L, -4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5552     TEST_c_c (catanh, 1.0L, 0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5553     TEST_c_c (catanh, 1.0L, -0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5554     TEST_c_c (catanh, -1.0L, 0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5555     TEST_c_c (catanh, -1.0L, -0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5556     TEST_c_c (catanh, 0x1.3p-8221L, 1.0L, 1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5557     TEST_c_c (catanh, -0x1.3p-8221L, 1.0L, -1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5558     TEST_c_c (catanh, 0x1.3p-8221L, -1.0L, 1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5559     TEST_c_c (catanh, -0x1.3p-8221L, -1.0L, -1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5560     TEST_c_c (catanh, 1.0L, 0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5561     TEST_c_c (catanh, 1.0L, -0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5562     TEST_c_c (catanh, -1.0L, 0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5563     TEST_c_c (catanh, -1.0L, -0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5564     TEST_c_c (catanh, 0x1.3p-8246L, 1.0L, 3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5565     TEST_c_c (catanh, -0x1.3p-8246L, 1.0L, -3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5566     TEST_c_c (catanh, 0x1.3p-8246L, -1.0L, 3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5567     TEST_c_c (catanh, -0x1.3p-8246L, -1.0L, -3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5568     TEST_c_c (catanh, 1.0L, 0x1p-16380L, 5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5569     TEST_c_c (catanh, 1.0L, -0x1p-16380L, 5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5570     TEST_c_c (catanh, -1.0L, 0x1p-16380L, -5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5571     TEST_c_c (catanh, -1.0L, -0x1p-16380L, -5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5572     TEST_c_c (catanh, 0x1p-16380L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5573     TEST_c_c (catanh, -0x1p-16380L, 1.0L, -6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5574     TEST_c_c (catanh, 0x1p-16380L, -1.0L, 6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5575     TEST_c_c (catanh, -0x1p-16380L, -1.0L, -6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5576     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-16382L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5577     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-16382L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5578     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-16382L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5579     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-16382L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5580     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5581     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5582     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5583     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5584     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5585     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5586     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5587     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5588     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5589     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5590     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5591     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5592 # if LDBL_MANT_DIG >= 113
5593     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5594     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5595     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5596     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5597     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5598     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5599     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5600     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5601     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5602     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5603     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5604     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5605     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5606     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5607     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5608     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5609 # endif
5610 #endif
5612     TEST_c_c (catanh, 0.75L, 1.25L, 0.261492138795671927078652057366532140L, 0.996825126463918666098902241310446708L),
5613     TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L),
5614     END_DATA (catanh)
5615   };
5617 static void
5618 catanh_test (void)
5620   errno = 0;
5621   FUNC(catanh) (BUILD_COMPLEX (0.7L, 1.2L));
5622   if (errno == ENOSYS)
5623     /* Function not implemented.  */
5624     return;
5626   START (catanh);
5627   RUN_TEST_LOOP_c_c (catanh, catanh_test_data, );
5628   END (catanh, complex);
5631 static const struct test_f_f_data cbrt_test_data[] =
5632   {
5633     START_DATA (cbrt),
5634     TEST_f_f (cbrt, 0.0, 0.0),
5635     TEST_f_f (cbrt, minus_zero, minus_zero),
5637     TEST_f_f (cbrt, plus_infty, plus_infty),
5638     TEST_f_f (cbrt, minus_infty, minus_infty),
5639     TEST_f_f (cbrt, qnan_value, qnan_value),
5641     TEST_f_f (cbrt, -0.001L, -0.1L),
5642     TEST_f_f (cbrt, 8, 2),
5643     TEST_f_f (cbrt, -27.0, -3.0),
5644     TEST_f_f (cbrt, 0.9921875L, 0.997389022060725270579075195353955217L),
5645     TEST_f_f (cbrt, 0.75L, 0.908560296416069829445605878163630251L),
5646     END_DATA (cbrt)
5647   };
5649 static void
5650 cbrt_test (void)
5652   errno = 0;
5653   FUNC(cbrt) (8);
5654   if (errno == ENOSYS)
5655     /* Function not implemented.  */
5656     return;
5658   START (cbrt);
5659   RUN_TEST_LOOP_f_f (cbrt, cbrt_test_data, );
5660   END (cbrt);
5664 static const struct test_c_c_data ccos_test_data[] =
5665   {
5666     START_DATA (ccos),
5667     TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero),
5668     TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0),
5669     TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0),
5670     TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero),
5672     TEST_c_c (ccos, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5673     TEST_c_c (ccos, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5674     TEST_c_c (ccos, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5675     TEST_c_c (ccos, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5677     TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero),
5678     TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0),
5679     TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0),
5680     TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero),
5682     TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5683     TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5684     TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5685     TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5687     TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty),
5688     TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty),
5689     TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty),
5690     TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty),
5692     TEST_c_c (ccos, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5693     TEST_c_c (ccos, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5694     TEST_c_c (ccos, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5695     TEST_c_c (ccos, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5697     TEST_c_c (ccos, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5698     TEST_c_c (ccos, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5700     TEST_c_c (ccos, qnan_value, plus_infty, plus_infty, qnan_value),
5701     TEST_c_c (ccos, qnan_value, minus_infty, plus_infty, qnan_value),
5703     TEST_c_c (ccos, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5704     TEST_c_c (ccos, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5706     TEST_c_c (ccos, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5707     TEST_c_c (ccos, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5709     TEST_c_c (ccos, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5710     TEST_c_c (ccos, -10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5712     TEST_c_c (ccos, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5713     TEST_c_c (ccos, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5715     TEST_c_c (ccos, qnan_value, qnan_value, qnan_value, qnan_value),
5717     TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L),
5718     TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L),
5720     TEST_c_c (ccos, 0.75, 89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5721     TEST_c_c (ccos, 0.75, -89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5722     TEST_c_c (ccos, -0.75, 89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5723     TEST_c_c (ccos, -0.75, -89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5725 #ifndef TEST_FLOAT
5726     TEST_c_c (ccos, 0.75, 710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5727     TEST_c_c (ccos, 0.75, -710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5728     TEST_c_c (ccos, -0.75, 710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5729     TEST_c_c (ccos, -0.75, -710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5730 #endif
5732 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5733     TEST_c_c (ccos, 0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5734     TEST_c_c (ccos, 0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5735     TEST_c_c (ccos, -0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5736     TEST_c_c (ccos, -0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5737 #endif
5739 #ifdef TEST_FLOAT
5740     TEST_c_c (ccos, 0x1p-149, 180, plus_infty, -1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5741 #endif
5743 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5744     TEST_c_c (ccos, 0x1p-1074, 1440, plus_infty, -5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5745 #endif
5747 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5748     TEST_c_c (ccos, 0x1p-16434L, 22730, plus_infty, -1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5749 #endif
5751     TEST_c_c (ccos, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5752     TEST_c_c (ccos, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5753     END_DATA (ccos)
5754   };
5756 static void
5757 ccos_test (void)
5759   errno = 0;
5760   FUNC(ccos) (BUILD_COMPLEX (0, 0));
5761   if (errno == ENOSYS)
5762     /* Function not implemented.  */
5763     return;
5765   START (ccos);
5766   RUN_TEST_LOOP_c_c (ccos, ccos_test_data, );
5767   END (ccos, complex);
5771 static const struct test_c_c_data ccosh_test_data[] =
5772   {
5773     START_DATA (ccosh),
5774     TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0),
5775     TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero),
5776     TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero),
5777     TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0),
5779     TEST_c_c (ccosh, 0.0, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5780     TEST_c_c (ccosh, minus_zero, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5781     TEST_c_c (ccosh, 0.0, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5782     TEST_c_c (ccosh, minus_zero, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5784     TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0),
5785     TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero),
5786     TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero),
5787     TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0),
5789     TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5790     TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5791     TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5792     TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5794     TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty),
5795     TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty),
5796     TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty),
5797     TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty),
5799     TEST_c_c (ccosh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5800     TEST_c_c (ccosh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5801     TEST_c_c (ccosh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5802     TEST_c_c (ccosh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5804     TEST_c_c (ccosh, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5805     TEST_c_c (ccosh, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5807     TEST_c_c (ccosh, plus_infty, qnan_value, plus_infty, qnan_value),
5808     TEST_c_c (ccosh, minus_infty, qnan_value, plus_infty, qnan_value),
5810     TEST_c_c (ccosh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5811     TEST_c_c (ccosh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5813     TEST_c_c (ccosh, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5814     TEST_c_c (ccosh, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5816     TEST_c_c (ccosh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5817     TEST_c_c (ccosh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5819     TEST_c_c (ccosh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5820     TEST_c_c (ccosh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5822     TEST_c_c (ccosh, qnan_value, qnan_value, qnan_value, qnan_value),
5824     TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L),
5826     TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L),
5828     TEST_c_c (ccosh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5829     TEST_c_c (ccosh, -89.5, 0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5830     TEST_c_c (ccosh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5831     TEST_c_c (ccosh, -89.5, -0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5833 #ifndef TEST_FLOAT
5834     TEST_c_c (ccosh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5835     TEST_c_c (ccosh, -710.5, 0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5836     TEST_c_c (ccosh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5837     TEST_c_c (ccosh, -710.5, -0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5838 #endif
5840 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5841     TEST_c_c (ccosh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5842     TEST_c_c (ccosh, -11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5843     TEST_c_c (ccosh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5844     TEST_c_c (ccosh, -11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5845 #endif
5847 #ifdef TEST_FLOAT
5848     TEST_c_c (ccosh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5849 #endif
5851 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5852     TEST_c_c (ccosh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5853 #endif
5855 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5856     TEST_c_c (ccosh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5857 #endif
5859     TEST_c_c (ccosh, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
5860     TEST_c_c (ccosh, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
5861     END_DATA (ccosh)
5862   };
5864 static void
5865 ccosh_test (void)
5867   errno = 0;
5868   FUNC(ccosh) (BUILD_COMPLEX (0.7L, 1.2L));
5869   if (errno == ENOSYS)
5870     /* Function not implemented.  */
5871     return;
5873   START (ccosh);
5874   RUN_TEST_LOOP_c_c (ccosh, ccosh_test_data, );
5875   END (ccosh, complex);
5879 static const struct test_f_f_data ceil_test_data[] =
5880   {
5881     START_DATA (ceil),
5882     TEST_f_f (ceil, 0.0, 0.0),
5883     TEST_f_f (ceil, minus_zero, minus_zero),
5884     TEST_f_f (ceil, plus_infty, plus_infty),
5885     TEST_f_f (ceil, minus_infty, minus_infty),
5886     TEST_f_f (ceil, qnan_value, qnan_value),
5888     TEST_f_f (ceil, M_PIl, 4.0),
5889     TEST_f_f (ceil, -M_PIl, -3.0),
5890     TEST_f_f (ceil, 0.1, 1.0),
5891     TEST_f_f (ceil, 0.25, 1.0),
5892     TEST_f_f (ceil, 0.625, 1.0),
5893     TEST_f_f (ceil, -0.1, minus_zero),
5894     TEST_f_f (ceil, -0.25, minus_zero),
5895     TEST_f_f (ceil, -0.625, minus_zero),
5897 #ifdef TEST_LDOUBLE
5898     /* The result can only be represented in long double.  */
5899     TEST_f_f (ceil, 4503599627370495.5L, 4503599627370496.0L),
5900     TEST_f_f (ceil, 4503599627370496.25L, 4503599627370497.0L),
5901     TEST_f_f (ceil, 4503599627370496.5L, 4503599627370497.0L),
5902     TEST_f_f (ceil, 4503599627370496.75L, 4503599627370497.0L),
5903     TEST_f_f (ceil, 4503599627370497.5L, 4503599627370498.0L),
5905     TEST_f_f (ceil, -4503599627370495.5L, -4503599627370495.0L),
5906     TEST_f_f (ceil, -4503599627370496.25L, -4503599627370496.0L),
5907     TEST_f_f (ceil, -4503599627370496.5L, -4503599627370496.0L),
5908     TEST_f_f (ceil, -4503599627370496.75L, -4503599627370496.0L),
5909     TEST_f_f (ceil, -4503599627370497.5L, -4503599627370497.0L),
5911 # if LDBL_MANT_DIG > 100
5912     TEST_f_f (ceil, 4503599627370494.5000000000001L, 4503599627370495.0L),
5913     TEST_f_f (ceil, 4503599627370495.5000000000001L, 4503599627370496.0L),
5914     TEST_f_f (ceil, 4503599627370496.5000000000001L, 4503599627370497.0L),
5915     TEST_f_f (ceil, -4503599627370494.5000000000001L, -4503599627370494.0L),
5916     TEST_f_f (ceil, -4503599627370495.5000000000001L, -4503599627370495.0L),
5917     TEST_f_f (ceil, -4503599627370496.5000000000001L, -4503599627370496.0L),
5918 # endif
5920     TEST_f_f (ceil, 9007199254740991.5L, 9007199254740992.0L),
5921     TEST_f_f (ceil, 9007199254740992.25L, 9007199254740993.0L),
5922     TEST_f_f (ceil, 9007199254740992.5L, 9007199254740993.0L),
5923     TEST_f_f (ceil, 9007199254740992.75L, 9007199254740993.0L),
5924     TEST_f_f (ceil, 9007199254740993.5L, 9007199254740994.0L),
5926     TEST_f_f (ceil, -9007199254740991.5L, -9007199254740991.0L),
5927     TEST_f_f (ceil, -9007199254740992.25L, -9007199254740992.0L),
5928     TEST_f_f (ceil, -9007199254740992.5L, -9007199254740992.0L),
5929     TEST_f_f (ceil, -9007199254740992.75L, -9007199254740992.0L),
5930     TEST_f_f (ceil, -9007199254740993.5L, -9007199254740993.0L),
5932 # if LDBL_MANT_DIG > 100
5933     TEST_f_f (ceil, 9007199254740991.0000000000001L, 9007199254740992.0L),
5934     TEST_f_f (ceil, 9007199254740992.0000000000001L, 9007199254740993.0L),
5935     TEST_f_f (ceil, 9007199254740993.0000000000001L, 9007199254740994.0L),
5936     TEST_f_f (ceil, 9007199254740991.5000000000001L, 9007199254740992.0L),
5937     TEST_f_f (ceil, 9007199254740992.5000000000001L, 9007199254740993.0L),
5938     TEST_f_f (ceil, 9007199254740993.5000000000001L, 9007199254740994.0L),
5940     TEST_f_f (ceil, -9007199254740991.0000000000001L, -9007199254740991.0L),
5941     TEST_f_f (ceil, -9007199254740992.0000000000001L, -9007199254740992.0L),
5942     TEST_f_f (ceil, -9007199254740993.0000000000001L, -9007199254740993.0L),
5943     TEST_f_f (ceil, -9007199254740991.5000000000001L, -9007199254740991.0L),
5944     TEST_f_f (ceil, -9007199254740992.5000000000001L, -9007199254740992.0L),
5945     TEST_f_f (ceil, -9007199254740993.5000000000001L, -9007199254740993.0L),
5946 # endif
5948     TEST_f_f (ceil, 72057594037927935.5L, 72057594037927936.0L),
5949     TEST_f_f (ceil, 72057594037927936.25L, 72057594037927937.0L),
5950     TEST_f_f (ceil, 72057594037927936.5L, 72057594037927937.0L),
5951     TEST_f_f (ceil, 72057594037927936.75L, 72057594037927937.0L),
5952     TEST_f_f (ceil, 72057594037927937.5L, 72057594037927938.0L),
5954     TEST_f_f (ceil, -72057594037927935.5L, -72057594037927935.0L),
5955     TEST_f_f (ceil, -72057594037927936.25L, -72057594037927936.0L),
5956     TEST_f_f (ceil, -72057594037927936.5L, -72057594037927936.0L),
5957     TEST_f_f (ceil, -72057594037927936.75L, -72057594037927936.0L),
5958     TEST_f_f (ceil, -72057594037927937.5L, -72057594037927937.0L),
5960     TEST_f_f (ceil, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
5961     TEST_f_f (ceil, 10141204801825835211973625643008.25L, 10141204801825835211973625643009.0L),
5962     TEST_f_f (ceil, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
5963     TEST_f_f (ceil, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
5964     TEST_f_f (ceil, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
5965 #endif
5966     END_DATA (ceil)
5967   };
5969 static void
5970 ceil_test (void)
5972   START (ceil);
5973   RUN_TEST_LOOP_f_f (ceil, ceil_test_data, );
5974   END (ceil);
5978 static const struct test_c_c_data cexp_test_data[] =
5979   {
5980     START_DATA (cexp),
5981     TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0),
5982     TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0),
5983     TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero),
5984     TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero),
5986     TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0),
5987     TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero),
5989     TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0),
5990     TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero),
5992     TEST_c_c (cexp, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5993     TEST_c_c (cexp, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5995     TEST_c_c (cexp, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5996     TEST_c_c (cexp, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5998     TEST_c_c (cexp, 100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5999     TEST_c_c (cexp, -100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6001     TEST_c_c (cexp, 100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6002     TEST_c_c (cexp, -100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6004     TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0),
6005     TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero),
6006     TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty),
6007     TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty),
6009     TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6010     TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6012     TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN),
6013     TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN),
6015     TEST_c_c (cexp, minus_infty, qnan_value, 0, 0, IGNORE_ZERO_INF_SIGN),
6017     TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value),
6019     TEST_c_c (cexp, qnan_value, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6020     TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6022     TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6023     TEST_c_c (cexp, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6024     TEST_c_c (cexp, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6025     TEST_c_c (cexp, qnan_value, qnan_value, qnan_value, qnan_value),
6027     TEST_c_c (cexp, 0.75L, 1.25L, 0.667537446429131586942201977015932112L, 2.00900045494094876258347228145863909L),
6028     TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L),
6030     TEST_c_c (cexp, 0, 0x1p65, 0.99888622066058013610642172179340364209972L, -0.047183876212354673805106149805700013943218L),
6031     TEST_c_c (cexp, 0, -0x1p65, 0.99888622066058013610642172179340364209972L, 0.047183876212354673805106149805700013943218L),
6032     TEST_c_c (cexp, 50, 0x1p127, 4.053997150228616856622417636046265337193e21L, 3.232070315463388524466674772633810238819e21L),
6034 #ifndef TEST_FLOAT
6035     TEST_c_c (cexp, 0, 1e22, 0.5232147853951389454975944733847094921409L, -0.8522008497671888017727058937530293682618L),
6036     TEST_c_c (cexp, 0, 0x1p1023, -0.826369834614147994500785680811743734805L, 0.5631277798508840134529434079444683477104L),
6037     TEST_c_c (cexp, 500, 0x1p1023, -1.159886268932754433233243794561351783426e217L, 7.904017694554466595359379965081774849708e216L),
6038 #endif
6040 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6041     TEST_c_c (cexp, 0, 0x1p16383L, 0.9210843909921906206874509522505756251609L, 0.3893629985894208126948115852610595405563L),
6042     TEST_c_c (cexp, -10000, 0x1p16383L, 1.045876464564882298442774542991176546722e-4343L, 4.421154026488516836023811173959413420548e-4344L),
6043 #endif
6045     TEST_c_c (cexp, 88.75, 0.75, 2.558360358486542817001900410314204322891e38L, 2.383359453227311447654736314679677655100e38L),
6046     TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L, UNDERFLOW_EXCEPTION_FLOAT),
6048 #ifndef TEST_FLOAT
6049     TEST_c_c (cexp, 709.8125, 0.75, 1.355121963080879535248452862759108365762e308L, 1.262426823598609432507811340856186873507e308L),
6050     TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L, UNDERFLOW_EXCEPTION_DOUBLE),
6051 #endif
6053 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6054     TEST_c_c (cexp, 11356.5625, 0.75, 9.052188470850960144814815984311663764287e4931L, 8.432986734191301036267148978260970230200e4931L),
6055     TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L, UNDERFLOW_EXCEPTION),
6056 #endif
6058 #ifdef TEST_FLOAT
6059     TEST_c_c (cexp, 180, 0x1p-149, plus_infty, 2.087071793345235105931967606907855310664e33L, OVERFLOW_EXCEPTION),
6060 #endif
6062 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6063     TEST_c_c (cexp, 1440, 0x1p-1074, plus_infty, 1.196295853897226111293303155636183216483e302L, OVERFLOW_EXCEPTION),
6064 #endif
6066 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6067     TEST_c_c (cexp, 22730, 0x1p-16434L, plus_infty, 2.435706297811211974162115164702304105374e4924L, OVERFLOW_EXCEPTION),
6068 #endif
6070     TEST_c_c (cexp, 1e6, 0, plus_infty, 0, OVERFLOW_EXCEPTION),
6071     TEST_c_c (cexp, 1e6, min_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
6072     TEST_c_c (cexp, 1e6, -min_value, plus_infty, minus_infty, OVERFLOW_EXCEPTION),
6074     TEST_c_c (cexp, min_value, min_subnorm_value, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6075     TEST_c_c (cexp, min_value, -min_subnorm_value, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
6076     END_DATA (cexp)
6077   };
6079 static void
6080 cexp_test (void)
6082   errno = 0;
6083   FUNC(cexp) (BUILD_COMPLEX (0, 0));
6084   if (errno == ENOSYS)
6085     /* Function not implemented.  */
6086     return;
6088   START (cexp);
6089   RUN_TEST_LOOP_c_c (cexp, cexp_test_data, );
6090   END (cexp, complex);
6094 static const struct test_c_f_data cimag_test_data[] =
6095   {
6096     START_DATA (cimag);
6097     TEST_c_f (cimag, 1.0, 0.0, 0.0),
6098     TEST_c_f (cimag, 1.0, minus_zero, minus_zero),
6099     TEST_c_f (cimag, 1.0, qnan_value, qnan_value),
6100     TEST_c_f (cimag, qnan_value, qnan_value, qnan_value),
6101     TEST_c_f (cimag, 1.0, plus_infty, plus_infty),
6102     TEST_c_f (cimag, 1.0, minus_infty, minus_infty),
6103     TEST_c_f (cimag, 2.0, 3.0, 3.0),
6104     END_DATA (cimag);
6105   };
6107 static void
6108 cimag_test (void)
6110   START (cimag);
6111   RUN_TEST_LOOP_c_f (cimag, cimag_test_data, );
6112   END (cimag);
6115 static const struct test_c_c_data clog_test_data[] =
6116   {
6117     START_DATA (clog),
6118     TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6119     TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6121     TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6122     TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6124     TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l),
6125     TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l),
6127     TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l),
6128     TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l),
6130     TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l),
6131     TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l),
6132     TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l),
6133     TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l),
6134     TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l),
6135     TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l),
6136     TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l),
6137     TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l),
6139     TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl),
6140     TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl),
6141     TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl),
6142     TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl),
6144     TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0),
6145     TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0),
6146     TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero),
6147     TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero),
6149     TEST_c_c (clog, plus_infty, qnan_value, plus_infty, qnan_value),
6150     TEST_c_c (clog, minus_infty, qnan_value, plus_infty, qnan_value),
6152     TEST_c_c (clog, qnan_value, plus_infty, plus_infty, qnan_value),
6153     TEST_c_c (clog, qnan_value, minus_infty, plus_infty, qnan_value),
6155     TEST_c_c (clog, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6156     TEST_c_c (clog, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6157     TEST_c_c (clog, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6158     TEST_c_c (clog, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6160     TEST_c_c (clog, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6161     TEST_c_c (clog, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6162     TEST_c_c (clog, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6163     TEST_c_c (clog, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6165     TEST_c_c (clog, qnan_value, qnan_value, qnan_value, qnan_value),
6167     TEST_c_c (clog, 0.75L, 1.25L, 0.376885901188190075998919126749298416L, 1.03037682652431246378774332703115153L),
6168     TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L),
6170     TEST_c_c (clog, 0x1.fffffep+127L, 0x1.fffffep+127L, 89.06941264234832570836679262104313101776L, M_PI_4l),
6171     TEST_c_c (clog, 0x1.fffffep+127L, 1.0L, 88.72283905206835305365817656031404273372L, 2.938736052218037251011746307725933020145e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6172     TEST_c_c (clog, 0x1p-149L, 0x1p-149L, -102.9323563131518784484589700365392203592L, M_PI_4l),
6173     TEST_c_c (clog, 0x1p-147L, 0x1p-147L, -101.5460619520319878296245057936228672231L, M_PI_4l),
6175 #ifndef TEST_FLOAT
6176     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 710.1292864836639693869320059713862337880L, M_PI_4l),
6177     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 709.8942846690411016323109979483151967689L, 0.4636476090008061606231772164674799632783L),
6178     TEST_c_c (clog, 0x1p-1074L, 0x1p-1074L, -744.0934983311012896593986823853525458290L, M_PI_4l),
6179     TEST_c_c (clog, 0x1p-1073L, 0x1p-1073L, -743.4003511505413443499814502638943692610L, M_PI_4l),
6180 #endif
6182 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6183     TEST_c_c (clog, 0x1.fp+16383L, 0x1.fp+16383L, 11356.83823118610934184548269774874545400L, M_PI_4l),
6184     TEST_c_c (clog, 0x1.fp+16383L, 0x1p+16383L, 11356.60974243783798653123798337822335902L, 0.4764674194737066993385333770295162295856L),
6185     TEST_c_c (clog, 0x1p-16440L, 0x1p-16441L, -11395.22807662984378194141292922726786191L, 0.4636476090008061162142562314612144020285L),
6186 #endif
6188     TEST_c_c (clog, 0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6189     TEST_c_c (clog, -0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6190     TEST_c_c (clog, 0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6191     TEST_c_c (clog, -0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6192     TEST_c_c (clog, -0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, M_PIl),
6193     TEST_c_c (clog, -0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, -M_PIl),
6194 #ifdef TEST_FLOAT
6195     TEST_c_c (clog, 0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, plus_zero, UNDERFLOW_EXCEPTION),
6196     TEST_c_c (clog, 0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, minus_zero, UNDERFLOW_EXCEPTION),
6197 #endif
6199 #ifndef TEST_FLOAT
6200     TEST_c_c (clog, 0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6201     TEST_c_c (clog, -0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6202     TEST_c_c (clog, 0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6203     TEST_c_c (clog, -0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6204     TEST_c_c (clog, -0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, M_PIl),
6205     TEST_c_c (clog, -0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, -M_PIl),
6206 #endif
6207 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6208     TEST_c_c (clog, 0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, plus_zero, UNDERFLOW_EXCEPTION),
6209     TEST_c_c (clog, 0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, minus_zero, UNDERFLOW_EXCEPTION),
6210 #endif
6212 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6213     TEST_c_c (clog, 0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6214     TEST_c_c (clog, -0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6215     TEST_c_c (clog, 0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6216     TEST_c_c (clog, -0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6217     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, M_PIl),
6218     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, -M_PIl),
6219     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6220     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6221 # if LDBL_MANT_DIG >= 113
6222     TEST_c_c (clog, 0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6223     TEST_c_c (clog, -0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6224     TEST_c_c (clog, 0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6225     TEST_c_c (clog, -0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6226     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, M_PIl),
6227     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, -M_PIl),
6228     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6229     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6230 # endif
6231 #endif
6233     TEST_c_c (clog, 1.0L, 0x1.234566p-10L, 6.172834701221959432440126967147726538097e-7L, 1.111110564353742042376451655136933182201e-3L),
6234     TEST_c_c (clog, -1.0L, 0x1.234566p-20L, 5.886877547844618300918562490463748605537e-13L, 3.141591568520436206990380699322226378452L),
6235     TEST_c_c (clog, 0x1.234566p-30L, 1.0L, 5.614163921211322622623353961365728040115e-19L, 1.570796325735258575254858696548386439740L),
6236     TEST_c_c (clog, -0x1.234566p-40L, -1.0L, 5.354083939753840089583620652120903838944e-25L, -1.570796326795931422008642456283782656359L),
6237     TEST_c_c (clog, 0x1.234566p-50L, 1.0L, 5.106052341226425256332038420428899201070e-31L, 1.570796326794895608681734464330528755366L),
6238     TEST_c_c (clog, 0x1.234566p-60L, 1.0L, 4.869510976053643471080816669875627875933e-37L, 1.570796326794896618244456860363082279319L),
6239     TEST_c_c (clog, 0x1p-62L, 1.0L, 2.350988701644575015937473074444491355582e-38L, 1.570796326794896619014481257142650555297L),
6240     TEST_c_c (clog, 0x1p-63L, 1.0L, 5.877471754111437539843682686111228389059e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
6241     TEST_c_c (clog, 0x1p-64L, 1.0L, 1.469367938527859384960920671527807097271e-39L, 1.570796326794896619177111583015476220398L, UNDERFLOW_EXCEPTION_FLOAT),
6242 #ifndef TEST_FLOAT
6243     TEST_c_c (clog, 0x1p-510L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6244     TEST_c_c (clog, 0x1p-511L, 1.0L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6245     TEST_c_c (clog, 0x1p-512L, 1.0L, 2.781342323134001728862790896665505080274e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6246 #endif
6247 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6248     TEST_c_c (clog, 0x1p-8190L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 1.570796326794896619231321691639751442099L),
6249     TEST_c_c (clog, 0x1p-8191L, 1.0L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6250     TEST_c_c (clog, 0x1p-8192L, 1.0L, 4.202628928890116882828347271652190753248e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6251 #endif
6253     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-10L, 8.298731898331237038231468223024422855654e-5L, 1.110938609507128729312743251313024793990e-3L),
6254     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-100L, 8.237022655933121125560939513260027133767e-5L, 8.974094312218060110948251664314290484113e-31L),
6255 #ifndef TEST_FLOAT
6256     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-30L, 2.649094282537168795982991778475646793277e-10L, 3.141592652530155111500161671113150737892L),
6257     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 2.649094276923003995420209214900915462737e-10L, 3.141592653589793238462643383279502884197L),
6258 #endif
6259 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6260     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 9.868649107778739757272772275265050767867e-19L, 9.868649106423871142816660980898339912137e-19L),
6261     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 9.868649107778739752403260515979017248596e-19L, 1.061846605795612822522063052130030717368e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6262 #endif
6264     TEST_c_c (clog, 0x0.ffffffp0L, 0x0.ffffffp-100L, -5.960464655174753498633255797994360530379e-8L, 7.888609052210118054117285652827862296732e-31L),
6265 #ifndef TEST_FLOAT
6266     TEST_c_c (clog, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -1.110223024625156602053389888482372171810e-16L, 9.332636185032188789900895447238171696171e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6267 #endif
6268 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6269     TEST_c_c (clog, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -5.421010862427522170184200798202494495630e-20L, 3.548665303440282824232502561095699343814e-4516L),
6270 #endif
6272     TEST_c_c (clog, 0x1a6p-10L, 0x3a5p-10L, -1.4305135209763571252847059962654228661815e-06L, 1.1460277178115757370775644871674016684074L),
6273     TEST_c_c (clog, 0xf2p-10L, 0x3e3p-10L, 6.1988446308070710970664736815277450078106e-06L, 1.3322126499153926210226335249558203898460L),
6274     TEST_c_c (clog, 0x4d4ep-15L, 0x6605p-15L, -1.6298145321400412054744424587143483169412e-08L, 0.9223574537155056772124552172295398141249L),
6275     TEST_c_c (clog, 0x2818p-15L, 0x798fp-15L, 1.5366822245016167178749091974664853785194e-08L, 1.2522014929038946066987318471922169174157L),
6276     TEST_c_c (clog, 0x9b57bp-20L, 0xcb7b4p-20L, -3.9563019528687610863490232935890272740908e-11L, 0.9187593477446338910857133065497364950682L),
6277     TEST_c_c (clog, 0x2731p-20L, 0xfffd0p-20L, 4.4110493034041283943115971658295280288115e-11L, 1.5612279663766352262688735061954290528838L),
6278     TEST_c_c (clog, 0x2ede88p-23L, 0x771c3fp-23L, -4.4764192352906350039050902870893173560494e-13L, 1.1959106857549200806818600493552847793381L),
6279     TEST_c_c (clog, 0x11682p-23L, 0x7ffed1p-23L, 1.1723955140027907954461000991619077811832e-12L, 1.5622968405332756349813737986164832897108L),
6280     TEST_c_c (clog, 0xa1f2c1p-24L, 0xc643aep-24L, -1.0480505352462576151523512837107080269981e-13L, 0.8858771987699967480545613322309315260313L),
6281     TEST_c_c (clog, 0x659feap-24L, 0xeaf6f9p-24L, 3.7303493627403868207597214252239749960738e-14L, 1.1625816408046866464773042283673653469061L),
6282 #ifndef TEST_FLOAT
6283     TEST_c_c (clog, 0x4447d7175p-35L, 0x6c445e00ap-35L, -1.4823076576950255933915367361099865652625e-20L, 1.0081311552703893116404606212158840190615L),
6284     TEST_c_c (clog, 0x2dd46725bp-35L, 0x7783a1284p-35L, 4.4469229730850767799109418892826021157328e-20L, 1.2046235979300843056806465045930070146351L),
6285     TEST_c_c (clog, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -3.0292258760486853327810377824479932031744e-26L, 0.7998237934177411746093524982030330293980L),
6286     TEST_c_c (clog, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 5.3718272201930019901317065495843842735179e-26L, 1.0503831592447830576186444373011142397404L),
6287     TEST_c_c (clog, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -6.2122796286154679676173624516405339768606e-30L, 1.4904138780720095276446375492434049214172L),
6288     TEST_c_c (clog, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 3.2047474274603604594851472963586149973093e-29L, 1.4422922682185099608731642353544207976604L),
6289     TEST_c_c (clog, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -9.7375017988218644730510244778042114638107e-30L, 0.9790637929494922564724108399524154766631L),
6290     TEST_c_c (clog, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 8.3076914081087805757422664530653247447136e-30L, 1.2072712126771536614482822173033535043206L),
6291     TEST_c_c (clog, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -2.5083311595699359750201056724289010648701e-30L, 1.3710185432462268491534742969536240564640L),
6292     TEST_c_c (clog, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 1.0168910106364605304135563536838075568606e-30L, 0.8208373755522359859870890246475340086663L),
6293     TEST_c_c (clog, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 5.0844550531823026520677817684239496041087e-32L, 1.2627468605458094918919206628466016525397L),
6294     TEST_c_c (clog, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -5.2000108498455368032511404449795741611813e-32L, 1.5288921536982513453421343495466824420259L),
6295 #endif
6296 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6297     TEST_c_c (clog, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -1.1931267660846218205882675852805793644095e-36L, 1.2402109774337032400594953899784058127412L),
6298     TEST_c_c (clog, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 6.4064442119814669184296141278612389400075e-37L, 0.9193591364645830864185131402313014890145L),
6299     TEST_c_c (clog, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -2.3362950222592964220878638677292132852104e-37L, 1.1856121127236268105413184264288408265852L),
6300     TEST_c_c (clog, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 2.4244570985709679851855191080208817099132e-37L, 1.1393074519572050614551047548718495655972L),
6301     TEST_c_c (clog, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -9.9182335850630508484862145328126979066934e-39L, 1.3146479888794807046338799047003947008804L),
6302 #endif
6303 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6304     TEST_c_c (clog, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -1.0509738482436128031927971874674370984602e-45L, 1.0509191467640012308402149909370784281448L),
6305     TEST_c_c (clog, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 1.3487497719126364307640897239165442763573e-43L, 1.1750493008528425228929764149024375035382L),
6306     TEST_c_c (clog, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -4.7775669192897997174762089350332738583822e-50L, 0.8393953487996880419413728440067635213372L),
6307     TEST_c_c (clog, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 2.8398125044729578740243199963484494962411e-50L, 0.9149964976334130461795060758257083099706L),
6308     TEST_c_c (clog, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -3.5048022044913950094635368750889659723004e-57L, 1.3345633256521815205858155673950177421079L),
6309     TEST_c_c (clog, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 4.1101771307217268747345114262406964584250e-56L, 1.4596065864518742494094402406719567059585L),
6310     TEST_c_c (clog, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -1.4281333889622737316199756373421183559948e-62L, 1.3673546561165378090903506783353927980633L),
6311     TEST_c_c (clog, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 1.0027319539522347477331743836657426754857e-62L, 0.8193464073721167323313606647411269414759L),
6312     TEST_c_c (clog, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -1.7471844652198029695350765775994001163767e-63L, 1.1789110097072986038243729592318526094314L),
6313     TEST_c_c (clog, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 4.3299788920664682288477984749202524623248e-63L, 1.4746938237585656250866370987773473745867L),
6314 #endif
6315 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6316     TEST_c_c (clog, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -1.1683999374665377365054966073875064467108e-66L, 1.3257197596350832748781065387304444940172L),
6317     TEST_c_c (clog, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 1.5077923002544367932999503838191154621839e-65L, 1.2897445708311412721399861948957141824914L),
6318     TEST_c_c (clog, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -7.1865869169568789348552370692485515571497e-67L, 0.8730167479365994646287897223471819363668L),
6319     TEST_c_c (clog, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 6.6255694866654064502633121109394710807528e-66L, 1.0526409614996288387567810726095850312049L),
6320     TEST_c_c (clog, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 4.6017338806965821566734340588575402712716e-67L, 1.3547418904611758959096647942223384691728L),
6321     TEST_c_c (clog, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 2.5993421227864195179698176012564317527271e-67L, 1.4132318089683022770487383611430906982461L),
6322 #endif
6323     END_DATA (clog)
6324   };
6326 static void
6327 clog_test (void)
6329   errno = 0;
6330   FUNC(clog) (BUILD_COMPLEX (-2, -3));
6331   if (errno == ENOSYS)
6332     /* Function not implemented.  */
6333     return;
6335   START (clog);
6336   RUN_TEST_LOOP_c_c (clog, clog_test_data, );
6337   END (clog, complex);
6341 static const struct test_c_c_data clog10_test_data[] =
6342   {
6343     START_DATA (clog10),
6344     TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6345     TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6347     TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6348     TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6350     TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El),
6352     TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El),
6353     TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El),
6355     TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El),
6356     TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El),
6357     TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El),
6358     TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El),
6359     TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El),
6360     TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El),
6361     TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El),
6362     TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El),
6364     TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El),
6365     TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El),
6366     TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El),
6367     TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El),
6369     TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0),
6370     TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0),
6371     TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero),
6372     TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero),
6374     TEST_c_c (clog10, plus_infty, qnan_value, plus_infty, qnan_value),
6375     TEST_c_c (clog10, minus_infty, qnan_value, plus_infty, qnan_value),
6377     TEST_c_c (clog10, qnan_value, plus_infty, plus_infty, qnan_value),
6378     TEST_c_c (clog10, qnan_value, minus_infty, plus_infty, qnan_value),
6380     TEST_c_c (clog10, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6381     TEST_c_c (clog10, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6382     TEST_c_c (clog10, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6383     TEST_c_c (clog10, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6385     TEST_c_c (clog10, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6386     TEST_c_c (clog10, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6387     TEST_c_c (clog10, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6388     TEST_c_c (clog10, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6390     TEST_c_c (clog10, qnan_value, qnan_value, qnan_value, qnan_value),
6392     TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L),
6393     TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L),
6395     TEST_c_c (clog10, 0x1.fffffep+127L, 0x1.fffffep+127L, 38.68235441693561449174780668781319348761L, M_PI4_LOG10El),
6396     TEST_c_c (clog10, 0x1.fffffep+127L, 1.0L, 38.53183941910362389414093724045094697423L, 1.276276851248440096917018665609900318458e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6397     TEST_c_c (clog10, 0x1p-149L, 0x1p-149L, -44.70295435610120748924022586658721447508L, M_PI4_LOG10El),
6398     TEST_c_c (clog10, 0x1p-147L, 0x1p-147L, -44.10089436477324509881274807713822842154L, M_PI4_LOG10El),
6400 #ifndef TEST_FLOAT
6401     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 308.4052305577487344482591243175787477115L, M_PI4_LOG10El),
6402     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 308.3031705664207720674749211936626341569L, 0.2013595981366865903254995612594728746470L),
6403     TEST_c_c (clog10, 0x1p-1074L, 0x1p-1074L, -323.1557003452838130619487034867432642357L, M_PI4_LOG10El),
6404     TEST_c_c (clog10, 0x1p-1073L, 0x1p-1073L, -322.8546703496198318667349645920187712089L, M_PI4_LOG10El),
6405 #endif
6407 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6408     TEST_c_c (clog10, 0x1.fp+16383L, 0x1.fp+16383L, 4932.212175672014259683102930239951947672L, M_PI4_LOG10El),
6409     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p+16383L, 4932.112944269463028900262609694408579449L, 0.2069271710841128115912940666587802677383L),
6410     TEST_c_c (clog10, 0x1p-16440L, 0x1p-16441L, -4948.884673709346821106688037612752099609L, 0.2013595981366865710389502301937289472543L),
6411 #endif
6413     TEST_c_c (clog10, 0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6414     TEST_c_c (clog10, -0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6415     TEST_c_c (clog10, 0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6416     TEST_c_c (clog10, -0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6417     TEST_c_c (clog10, -0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, 1.364376353841841347485783625431355770210L),
6418     TEST_c_c (clog10, -0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, -1.364376353841841347485783625431355770210L),
6419 #ifdef TEST_FLOAT
6420     TEST_c_c (clog10, 0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, plus_zero, UNDERFLOW_EXCEPTION),
6421     TEST_c_c (clog10, 0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, minus_zero, UNDERFLOW_EXCEPTION),
6422 #endif
6424 #ifndef TEST_FLOAT
6425     TEST_c_c (clog10, 0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6426     TEST_c_c (clog10, -0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6427     TEST_c_c (clog10, 0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6428     TEST_c_c (clog10, -0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6429     TEST_c_c (clog10, -0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, 1.364376353841841347485783625431355770210L),
6430     TEST_c_c (clog10, -0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, -1.364376353841841347485783625431355770210L),
6431 #endif
6432 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6433     TEST_c_c (clog10, 0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, plus_zero, UNDERFLOW_EXCEPTION),
6434     TEST_c_c (clog10, 0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, minus_zero, UNDERFLOW_EXCEPTION),
6435 #endif
6437 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6438     TEST_c_c (clog10, 0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6439     TEST_c_c (clog10, -0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6440     TEST_c_c (clog10, 0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6441     TEST_c_c (clog10, -0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6442     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6443     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6444     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6445     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6446 # if LDBL_MANT_DIG >= 113
6447     TEST_c_c (clog10, 0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6448     TEST_c_c (clog10, -0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6449     TEST_c_c (clog10, 0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6450     TEST_c_c (clog10, -0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6451     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6452     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6453     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6454     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6455 # endif
6456 #endif
6458     TEST_c_c (clog10, 1.0L, 0x1.234566p-10L, 2.680828048441605163181684680300513080769e-7L, 4.825491868832381486767558728169977751564e-4L),
6459     TEST_c_c (clog10, -1.0L, 0x1.234566p-20L, 2.556638434669064077889576526006849923281e-13L, 1.364375882602207106407956770293808181427L),
6460     TEST_c_c (clog10, 0x1.234566p-30L, 1.0L, 2.438200411482400072282924063740535840474e-19L, 6.821881764607257184291586401763604544928e-1L),
6461     TEST_c_c (clog10, -0x1.234566p-40L, -1.0L, 2.325249110681915353442924915876654139373e-25L, -6.821881769213700828789403802671540158935e-1L),
6462     TEST_c_c (clog10, 0x1.234566p-50L, 1.0L, 2.217530356103816369479108963807448194409e-31L, 6.821881769209202348667823902864283966959e-1L),
6463     TEST_c_c (clog10, 0x1.234566p-60L, 1.0L, 2.114801746467415208319767917450504756866e-37L, 6.821881769209206733143018621078368211515e-1L),
6464     TEST_c_c (clog10, 0x1p-61L, 1.0L, 4.084085680564517578238994467153626207224e-38L, 6.821881769209206735545466044044889962925e-1L),
6465     TEST_c_c (clog10, 0x1p-62L, 1.0L, 1.021021420141129394559748616788406551878e-38L, 6.821881769209206736487192085600834406988e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6466     TEST_c_c (clog10, 0x1p-63L, 1.0L, 2.552553550352823486399371541971016379740e-39L, 6.821881769209206736958055106378806629019e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6467 #ifndef TEST_FLOAT
6468     TEST_c_c (clog10, 0x1p-509L, 1.0L, 7.730698388614835910296270976605350994446e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6469     TEST_c_c (clog10, 0x1p-510L, 1.0L, 1.932674597153708977574067744151337748612e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6470     TEST_c_c (clog10, 0x1p-511L, 1.0L, 4.831686492884272443935169360378344371529e-309L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6471 #endif
6472 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6473     TEST_c_c (clog10, 0x1p-8189L, 1.0L, 1.168114274114528946314738738025008370069e-4931L, 6.821881769209206737428918127156778851051e-1L),
6474     TEST_c_c (clog10, 0x1p-8190L, 1.0L, 2.920285685286322365786846845062520925172e-4932L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6475     TEST_c_c (clog10, 0x1p-8191L, 1.0L, 7.300714213215805914467117112656302312931e-4933L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6476 #endif
6478     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-10L, 3.604093470239754109961125085078190708674e-5L, 4.824745078422174667425851670822596859720e-4L),
6479     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-100L, 3.577293486783822178310971763308187385546e-5L, 3.897399639875661463735636919790792140598e-31L),
6480 #ifndef TEST_FLOAT
6481     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-30L, 1.150487028947346337782682105935961875822e-10L, 1.364376353381646356131680448946397884147L),
6482     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 1.150487026509145544402795327729455391948e-10L, 1.364376353841841347485783625431355770210L),
6483 #endif
6484 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6485     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 4.285899851347756188767674032946882584784e-19L, 4.285899850759344225805480528847018395861e-19L),
6486     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 4.285899851347756186652871946325962330640e-19L, 4.611541215247321502041995872887317363241e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6487 #endif
6489     TEST_c_c (clog10, 0x0.ffffffp0L, 0x0.ffffffp-100L, -2.588596909321764128428416045209904492216e-8L, 3.425979381266895667295625489912064603415e-31L),
6490 #ifndef TEST_FLOAT
6491     TEST_c_c (clog10, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -4.821637332766435821255375046554377090472e-17L, 4.053112396770095089737411317782466262176e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6492 #endif
6493 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6494     TEST_c_c (clog10, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -2.354315103889861110220423157644627849164e-20L, 1.541165759405643564697852372112893034397e-4516L),
6495 #endif
6497     TEST_c_c (clog10, 0x1a6p-10L, 0x3a5p-10L, -6.2126412844802358329771948751248003038444e-07L, 0.4977135139537443711784513409096950995985L),
6498     TEST_c_c (clog10, 0xf2p-10L, 0x3e3p-10L, 2.6921240173351112953324592659528481616879e-06L, 0.5785726025799636431142862788413361783862L),
6499     TEST_c_c (clog10, 0x4d4ep-15L, 0x6605p-15L, -7.0781945783414996953799915941870192015212e-09L, 0.4005747524909781155537088181659175147564L),
6500     TEST_c_c (clog10, 0x2818p-15L, 0x798fp-15L, 6.6737261053986614395049481326819059203910e-09L, 0.5438241985991753781478398141908629586460L),
6501     TEST_c_c (clog10, 0x9b57bp-20L, 0xcb7b4p-20L, -1.7182001068739620267773842120965071561416e-11L, 0.3990121149225253562859800593935899629087L),
6502     TEST_c_c (clog10, 0x2731p-20L, 0xfffd0p-20L, 1.9156943718715958194239364991329064049438e-11L, 0.6780326907904082601285090019969008967595L),
6503     TEST_c_c (clog10, 0x2ede88p-23L, 0x771c3fp-23L, -1.9440841725722970687903291200493082253766e-13L, 0.5193774116724956222518530053006822210323L),
6504     TEST_c_c (clog10, 0x11682p-23L, 0x7ffed1p-23L, 5.0916490233953865181284669870035717560498e-13L, 0.6784968969384861816694467029319146542069L),
6505     TEST_c_c (clog10, 0xa1f2c1p-24L, 0xc643aep-24L, -4.5516256421319921959681423447271490869664e-14L, 0.3847315790697197749315054516562206543710L),
6506     TEST_c_c (clog10, 0x659feap-24L, 0xeaf6f9p-24L, 1.6200701438094619117335617123525612051457e-14L, 0.5049027913635038013499728086604870749732L),
6507 #ifndef TEST_FLOAT
6508     TEST_c_c (clog10, 0x4447d7175p-35L, 0x6c445e00ap-35L, -6.4375803621988389731799033530075237868110e-21L, 0.4378257977686804492768642780897650927167L),
6509     TEST_c_c (clog10, 0x2dd46725bp-35L, 0x7783a1284p-35L, 1.9312741086596516918394613098872836703188e-20L, 0.5231613813514771042838490538484014771862L),
6510     TEST_c_c (clog10, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -1.3155760824064879362415202279780039150764e-26L, 0.3473590599762514228227328130640352044313L),
6511     TEST_c_c (clog10, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 2.3329549194675052736016290082882121135546e-26L, 0.4561756099441139182878993697611751382976L),
6512     TEST_c_c (clog10, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -2.6979587627476803379953050733225113494503e-30L, 0.6472785229986997177606324374555347813105L),
6513     TEST_c_c (clog10, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 1.3918041236396763648388478552321724382899e-29L, 0.6263795733790237053262025311642907438291L),
6514     TEST_c_c (clog10, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -4.2289432987513243393180377141513840878196e-30L, 0.4252020027092323591068799049905597805296L),
6515     TEST_c_c (clog10, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 3.6079845358966994996207055940336690133424e-30L, 0.5243112258263349992771652393178033846555L),
6516     TEST_c_c (clog10, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -1.0893543813872082317104059174982092534059e-30L, 0.5954257879188711495921161433751775633232L),
6517     TEST_c_c (clog10, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 4.4163015461643576961232672330852798804976e-31L, 0.3564851427422832755956993418877523303529L),
6518     TEST_c_c (clog10, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 2.2081507730821788480616336165447731164865e-32L, 0.5484039935757001196548030312819898864760L),
6519     TEST_c_c (clog10, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -2.2583360179249556400630343805573865814771e-32L, 0.6639894257763289307423302343317622430835L),
6520 #endif
6521 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6522     TEST_c_c (clog10, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -5.1816837072162316773907242302011632570857e-37L, 0.5386167838952956925896424154370364458140L),
6523     TEST_c_c (clog10, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 2.7822833698845776001753149807484078521508e-37L, 0.3992725998539071066769046272515417679815L),
6524     TEST_c_c (clog10, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -1.0146400362652473358437501879334790111898e-37L, 0.5149047982335273098246594109614460842099L),
6525     TEST_c_c (clog10, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 1.0529283395205396881397407610630442563938e-37L, 0.4947949395762683446121140513971996916447L),
6526     TEST_c_c (clog10, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -4.3074341162203896332989394770760901408798e-39L, 0.5709443672155660428417571212549720987784L),
6527 #endif
6528 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6529     TEST_c_c (clog10, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -4.5643214291682663316715446865040356750881e-46L, 0.4564083863660793840592614609053162690362L),
6530     TEST_c_c (clog10, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 5.8575458340992751256451490143468457830297e-44L, 0.5103174273246635294300470585396890237265L),
6531     TEST_c_c (clog10, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -2.0748709499710785084693619097712106753591e-50L, 0.3645447681189598740620098186365764884771L),
6532     TEST_c_c (clog10, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 1.2333149003324592532859843519619084433953e-50L, 0.3973779298829931059309198145608711073016L),
6533     TEST_c_c (clog10, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -1.5221162575729652613635150540947625639689e-57L, 0.5795934880811949230121092882659698986043L),
6534     TEST_c_c (clog10, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 1.7850272475173865337808494725293124613817e-56L, 0.6338990862456906754888183278564382516852L),
6535     TEST_c_c (clog10, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -6.2023045024810589256360494043570293518879e-63L, 0.5938345819561308555003145899438513900776L),
6536     TEST_c_c (clog10, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 4.3548095442952115860848857519953610343042e-63L, 0.3558376234889641500775150477035448866763L),
6537     TEST_c_c (clog10, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -7.5879257211204444302994221436282805900756e-64L, 0.5119945461708707332160859198685423099187L),
6538     TEST_c_c (clog10, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 1.8804859395820231849002915747252695375405e-63L, 0.6404513901551516189871978418046651877394L),
6539 #endif
6540 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6541     TEST_c_c (clog10, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -5.0742964549782184008668435276046798273476e-67L, 0.5757527761596220360985719127090110408283L),
6542     TEST_c_c (clog10, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 6.5482587585671294601662599808612773010057e-66L, 0.5601289501766423782280643144987875760229L),
6543     TEST_c_c (clog10, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -3.1210950417524756037077807411854181477733e-67L, 0.3791463562379872585396164879981280044658L),
6544     TEST_c_c (clog10, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 2.8774482675253468630312378575186855052697e-66L, 0.4571561610046221605554903008571429975493L),
6545     TEST_c_c (clog10, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 1.9985076315737626043096596036300177494613e-67L, 0.5883569274304683249184005177865521205198L),
6546     TEST_c_c (clog10, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 1.1288799405048268615023706955013387413519e-67L, 0.6137587762850841972073301550420510507903L),
6547 #endif
6548     END_DATA (clog10)
6549   };
6551 static void
6552 clog10_test (void)
6554   errno = 0;
6555   FUNC(clog10) (BUILD_COMPLEX (0.7L, 1.2L));
6556   if (errno == ENOSYS)
6557     /* Function not implemented.  */
6558     return;
6560   START (clog10);
6561   RUN_TEST_LOOP_c_c (clog10, clog10_test_data, );
6562   END (clog10, complex);
6566 static const struct test_c_c_data conj_test_data[] =
6567   {
6568     START_DATA (conj),
6569     TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero),
6570     TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0),
6571     TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value),
6572     TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty),
6573     TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty),
6574     TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0),
6575     TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0),
6576     END_DATA (conj)
6577   };
6579 static void
6580 conj_test (void)
6582   START (conj);
6583   RUN_TEST_LOOP_c_c (conj, conj_test_data, );
6584   END (conj, complex);
6588 static const struct test_ff_f_data copysign_test_data[] =
6589   {
6590     START_DATA (copysign),
6591     TEST_ff_f (copysign, 0, 4, 0),
6592     TEST_ff_f (copysign, 0, -4, minus_zero),
6593     TEST_ff_f (copysign, minus_zero, 4, 0),
6594     TEST_ff_f (copysign, minus_zero, -4, minus_zero),
6596     TEST_ff_f (copysign, plus_infty, 0, plus_infty),
6597     TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty),
6598     TEST_ff_f (copysign, minus_infty, 0, plus_infty),
6599     TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty),
6601     TEST_ff_f (copysign, 0, plus_infty, 0),
6602     TEST_ff_f (copysign, 0, minus_zero, minus_zero),
6603     TEST_ff_f (copysign, minus_zero, plus_infty, 0),
6604     TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero),
6606     /* XXX More correctly we would have to check the sign of the NaN.  */
6607     TEST_ff_f (copysign, qnan_value, 0, qnan_value),
6608     TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value),
6609     TEST_ff_f (copysign, -qnan_value, 0, qnan_value),
6610     TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value),
6611     END_DATA (copysign)
6612   };
6614 static void
6615 copysign_test (void)
6617   START (copysign);
6618   RUN_TEST_LOOP_ff_f (copysign, copysign_test_data, );
6619   END (copysign);
6623 static const struct test_f_f_data cos_test_data[] =
6624   {
6625     START_DATA (cos),
6626     TEST_f_f (cos, 0, 1),
6627     TEST_f_f (cos, minus_zero, 1),
6628     TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6629     TEST_f_f (cos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6630     TEST_f_f (cos, qnan_value, qnan_value, ERRNO_UNCHANGED),
6632     TEST_f_f (cos, M_PI_6l * 2.0, 0.5),
6633     TEST_f_f (cos, M_PI_6l * 4.0, -0.5),
6635     /* The value of M_PI_2l is never exactly PI/2, and therefore the
6636        answer is never exactly zero. The answer is equal to the error
6637        in rounding PI/2 for the type used.  Thus the answer is unique
6638        to each type.  */
6639 #ifdef TEST_FLOAT
6640     /* 32-bit float.  */
6641     TEST_f_f (cos, M_PI_2l, -0x1.777a5cp-25L),
6642 #endif
6643 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
6644     /* 64-bit double or 64-bit long double.  */
6645     TEST_f_f (cos, M_PI_2l, 0x1.1a62633145c07p-54L),
6646 #endif
6647 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
6648     /* 96-bit long double.  */
6649     TEST_f_f (cos, M_PI_2l, -0xe.ce675d1fc8f8cbbp-69L),
6650 #endif
6651 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
6652     /* 128-bit IBM long double.  */
6653     TEST_f_f (cos, M_PI_2l, 0x1.c1cd129024e088a67cc74020bcp-107L),
6654 #endif
6655 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
6656     /* 128-bit long double.  */
6657     TEST_f_f (cos, M_PI_2l, 0x1.cd129024e088a67cc74020bbea64p-115L),
6658 #endif
6660     TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L),
6662     TEST_f_f (cos, 0x1p65, 0.99888622066058013610642172179340364209972L),
6663     TEST_f_f (cos, -0x1p65, 0.99888622066058013610642172179340364209972L),
6665 #ifdef TEST_DOUBLE
6666     TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473),
6667 #endif
6669     TEST_f_f (cos, 0x1.442f74p+15, 2.4407839902314016628485779006274989801517e-06L),
6671 #ifndef TEST_FLOAT
6672     TEST_f_f (cos, 1e22, 0.5232147853951389454975944733847094921409L),
6673     TEST_f_f (cos, 0x1p1023, -0.826369834614147994500785680811743734805L),
6674 #endif
6676 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6677     TEST_f_f (cos, 0x1p16383L, 0.9210843909921906206874509522505756251609L),
6678 #endif
6680     TEST_f_f (cos, 0x1p+120, -9.25879022854837867303861764107414946730833e-01L),
6681     TEST_f_f (cos, 0x1p+127, 7.81914638714960072263910298466369236613162e-01L),
6682     TEST_f_f (cos, 0x1.fffff8p+127, 9.98819362551949040703862043664101081064641e-01L),
6683     TEST_f_f (cos, 0x1.fffffep+127, 8.53021039830304158051791467692161107353094e-01L),
6684     TEST_f_f (cos, 0x1p+50, 8.68095904660550604334592502063501320395739e-01L),
6685     TEST_f_f (cos, 0x1p+28, -1.65568979490578758865468278195361551113358e-01L),
6686     END_DATA (cos)
6687   };
6689 static void
6690 cos_test (void)
6692   errno = 0;
6693   FUNC(cos) (0);
6694   if (errno == ENOSYS)
6695     /* Function not implemented.  */
6696     return;
6698   START (cos);
6699   RUN_TEST_LOOP_f_f (cos, cos_test_data, );
6700   END (cos);
6704 static const struct test_f_f_data cos_tonearest_test_data[] =
6705   {
6706     START_DATA (cos_tonearest),
6707     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6708     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6709     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6710     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6711     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6712     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6713     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6714     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6715     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6716     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6717     END_DATA (cos_tonearest)
6718   };
6720 static void
6721 cos_test_tonearest (void)
6723   errno = 0;
6724   FUNC(cos) (0);
6725   if (errno == ENOSYS)
6726     /* Function not implemented.  */
6727     return;
6729   START (cos_tonearest);
6730   RUN_TEST_LOOP_f_f (cos, cos_tonearest_test_data, FE_TONEAREST);
6731   END (cos_tonearest);
6735 static const struct test_f_f_data cos_towardzero_test_data[] =
6736   {
6737     START_DATA (cos_towardzero),
6738     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6739     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6740     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6741     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6742     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6743     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6744     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6745     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6746     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6747     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6748     END_DATA (cos_towardzero)
6749   };
6751 static void
6752 cos_test_towardzero (void)
6754   errno = 0;
6755   FUNC(cos) (0);
6756   if (errno == ENOSYS)
6757     /* Function not implemented.  */
6758     return;
6760   START (cos_towardzero);
6761   RUN_TEST_LOOP_f_f (cos, cos_towardzero_test_data, FE_TOWARDZERO);
6762   END (cos_towardzero);
6766 static const struct test_f_f_data cos_downward_test_data[] =
6767   {
6768     START_DATA (cos_downward),
6769     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6770     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6771     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6772     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6773     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6774     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6775     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6776     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6777     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6778     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6779     END_DATA (cos_downward)
6780   };
6782 static void
6783 cos_test_downward (void)
6785   errno = 0;
6786   FUNC(cos) (0);
6787   if (errno == ENOSYS)
6788     /* Function not implemented.  */
6789     return;
6791   START (cos_downward);
6792   RUN_TEST_LOOP_f_f (cos, cos_downward_test_data, FE_DOWNWARD);
6793   END (cos_downward);
6797 static const struct test_f_f_data cos_upward_test_data[] =
6798   {
6799     START_DATA (cos_upward),
6800     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6801     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6802     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6803     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6804     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6805     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6806     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6807     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6808     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6809     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6810     END_DATA (cos_upward)
6811   };
6813 static void
6814 cos_test_upward (void)
6816   errno = 0;
6817   FUNC(cos) (0);
6818   if (errno == ENOSYS)
6819     /* Function not implemented.  */
6820     return;
6822   START (cos_upward);
6823   RUN_TEST_LOOP_f_f (cos, cos_upward_test_data, FE_UPWARD);
6824   END (cos_upward);
6828 static const struct test_f_f_data cosh_test_data[] =
6829   {
6830     START_DATA (cosh),
6831     TEST_f_f (cosh, 0, 1),
6832     TEST_f_f (cosh, minus_zero, 1),
6834 #ifndef TEST_INLINE
6835     TEST_f_f (cosh, plus_infty, plus_infty),
6836     TEST_f_f (cosh, minus_infty, plus_infty),
6837 #endif
6838     TEST_f_f (cosh, qnan_value, qnan_value),
6840     TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L),
6842 #ifndef TEST_FLOAT
6843     TEST_f_f (cosh, 709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6844     TEST_f_f (cosh, -709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6845 #endif
6846     END_DATA (cosh)
6847   };
6849 static void
6850 cosh_test (void)
6852   errno = 0;
6853   FUNC(cosh) (0.7L);
6854   if (errno == ENOSYS)
6855     /* Function not implemented.  */
6856     return;
6858   START (cosh);
6859   RUN_TEST_LOOP_f_f (cosh, cosh_test_data, );
6860   END (cosh);
6864 static const struct test_f_f_data cosh_tonearest_test_data[] =
6865   {
6866     START_DATA (cosh_tonearest),
6867     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6868     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6869     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6870     END_DATA (cosh_tonearest)
6871   };
6873 static void
6874 cosh_test_tonearest (void)
6876   errno = 0;
6877   FUNC(cosh) (0);
6878   if (errno == ENOSYS)
6879     /* Function not implemented.  */
6880     return;
6882   START (cosh_tonearest);
6883   RUN_TEST_LOOP_f_f (cosh, cosh_tonearest_test_data, FE_TONEAREST);
6884   END (cosh_tonearest);
6888 static const struct test_f_f_data cosh_towardzero_test_data[] =
6889   {
6890     START_DATA (cosh_towardzero),
6891     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6892     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6893     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6894     END_DATA (cosh_towardzero)
6895   };
6897 static void
6898 cosh_test_towardzero (void)
6900   errno = 0;
6901   FUNC(cosh) (0);
6902   if (errno == ENOSYS)
6903     /* Function not implemented.  */
6904     return;
6906   START (cosh_towardzero);
6907   RUN_TEST_LOOP_f_f (cosh, cosh_towardzero_test_data, FE_TOWARDZERO);
6908   END (cosh_towardzero);
6912 static const struct test_f_f_data cosh_downward_test_data[] =
6913   {
6914     START_DATA (cosh_downward),
6915     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6916     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6917     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6918     END_DATA (cosh_downward)
6919   };
6921 static void
6922 cosh_test_downward (void)
6924   errno = 0;
6925   FUNC(cosh) (0);
6926   if (errno == ENOSYS)
6927     /* Function not implemented.  */
6928     return;
6930   START (cosh_downward);
6931   RUN_TEST_LOOP_f_f (cosh, cosh_downward_test_data, FE_DOWNWARD);
6932   END (cosh_downward);
6936 static const struct test_f_f_data cosh_upward_test_data[] =
6937   {
6938     START_DATA (cosh_upward),
6939     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6940     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6941     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6942     END_DATA (cosh_upward)
6943   };
6945 static void
6946 cosh_test_upward (void)
6948   errno = 0;
6949   FUNC(cosh) (0);
6950   if (errno == ENOSYS)
6951     /* Function not implemented.  */
6952     return;
6954   START (cosh_upward);
6955   RUN_TEST_LOOP_f_f (cosh, cosh_upward_test_data, FE_UPWARD);
6956   END (cosh_upward);
6960 static void
6961 cpow_test (void)
6963   errno = 0;
6964   FUNC(cpow) (BUILD_COMPLEX (1, 0), BUILD_COMPLEX (0, 0));
6965   if (errno == ENOSYS)
6966     /* Function not implemented.  */
6967     return;
6969   START (cpow);
6971   TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0);
6972   TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0);
6974   TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0);
6975   TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0);
6977   TEST_cc_c (cpow, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value);
6979   TEST_cc_c (cpow, 0.75L, 1.25L, 0.75L, 1.25L, 0.117506293914473555420279832210420483L, 0.346552747708338676483025352060418001L);
6980   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 1.0L, 0.0846958290317209430433805274189191353L, 0.513285749182902449043287190519090481L);
6981   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 0.0L, 0.75L, 1.25L);
6982   TEST_cc_c (cpow, 0.75L, 1.25L, 0.0L, 1.0L, 0.331825439177608832276067945276730566L, 0.131338600281188544930936345230903032L);
6984   END (cpow, complex);
6988 static const struct test_c_c_data cproj_test_data[] =
6989   {
6990     START_DATA (cproj),
6991     TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0),
6992     TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero),
6993     TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero),
6994     TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0),
6996     TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value),
6998     TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0),
6999     TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero),
7000     TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0),
7001     TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero),
7003     TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0),
7004     TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0),
7005     END_DATA (cproj)
7006   };
7008 static void
7009 cproj_test (void)
7011   START (cproj);
7012   RUN_TEST_LOOP_c_c (cproj, cproj_test_data, );
7013   END (cproj, complex);
7017 static const struct test_c_f_data creal_test_data[] =
7018   {
7019     START_DATA (creal);
7020     TEST_c_f (creal, 0.0, 1.0, 0.0),
7021     TEST_c_f (creal, minus_zero, 1.0, minus_zero),
7022     TEST_c_f (creal, qnan_value, 1.0, qnan_value),
7023     TEST_c_f (creal, qnan_value, qnan_value, qnan_value),
7024     TEST_c_f (creal, plus_infty, 1.0, plus_infty),
7025     TEST_c_f (creal, minus_infty, 1.0, minus_infty),
7026     TEST_c_f (creal, 2.0, 3.0, 2.0),
7027     END_DATA (creal);
7028   };
7030 static void
7031 creal_test (void)
7033   START (creal);
7034   RUN_TEST_LOOP_c_f (creal, creal_test_data, );
7035   END (creal);
7038 static const struct test_c_c_data csin_test_data[] =
7039   {
7040     START_DATA (csin),
7041     TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0),
7042     TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0),
7043     TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero),
7044     TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero),
7046     TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty),
7047     TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty),
7048     TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty),
7049     TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty),
7051     TEST_c_c (csin, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7052     TEST_c_c (csin, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7053     TEST_c_c (csin, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7054     TEST_c_c (csin, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7056     TEST_c_c (csin, plus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7057     TEST_c_c (csin, minus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7058     TEST_c_c (csin, plus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7059     TEST_c_c (csin, minus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7061     TEST_c_c (csin, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7062     TEST_c_c (csin, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7063     TEST_c_c (csin, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7064     TEST_c_c (csin, minus_infty, -6.75,  qnan_value, qnan_value, INVALID_EXCEPTION),
7066     TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty),
7067     TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty),
7068     TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty),
7069     TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty),
7071     TEST_c_c (csin, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7072     TEST_c_c (csin, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7074     TEST_c_c (csin, qnan_value, plus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7075     TEST_c_c (csin, qnan_value, minus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7077     TEST_c_c (csin, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7078     TEST_c_c (csin, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7080     TEST_c_c (csin, 0.0, qnan_value, 0.0, qnan_value),
7081     TEST_c_c (csin, minus_zero, qnan_value, minus_zero, qnan_value),
7083     TEST_c_c (csin, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7084     TEST_c_c (csin, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7086     TEST_c_c (csin, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7087     TEST_c_c (csin, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7089     TEST_c_c (csin, qnan_value, qnan_value, qnan_value, qnan_value),
7091     TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L),
7092     TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L),
7094     TEST_c_c (csin, 0.75, 89.5, 2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7095     TEST_c_c (csin, 0.75, -89.5, 2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7096     TEST_c_c (csin, -0.75, 89.5, -2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7097     TEST_c_c (csin, -0.75, -89.5, -2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7099 #ifndef TEST_FLOAT
7100     TEST_c_c (csin, 0.75, 710.5, 1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7101     TEST_c_c (csin, 0.75, -710.5, 1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7102     TEST_c_c (csin, -0.75, 710.5, -1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7103     TEST_c_c (csin, -0.75, -710.5, -1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7104 #endif
7106 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7107     TEST_c_c (csin, 0.75, 11357.25, 8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7108     TEST_c_c (csin, 0.75, -11357.25, 8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7109     TEST_c_c (csin, -0.75, 11357.25, -8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7110     TEST_c_c (csin, -0.75, -11357.25, -8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7111 #endif
7113 #ifdef TEST_FLOAT
7114     TEST_c_c (csin, 0x1p-149, 180, 1.043535896672617552965983803453927655332e33L, plus_infty, OVERFLOW_EXCEPTION),
7115 #endif
7117 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7118     TEST_c_c (csin, 0x1p-1074, 1440, 5.981479269486130556466515778180916082415e301L, plus_infty, OVERFLOW_EXCEPTION),
7119 #endif
7121 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7122     TEST_c_c (csin, 0x1p-16434L, 22730, 1.217853148905605987081057582351152052687e4924L, plus_infty, OVERFLOW_EXCEPTION),
7123 #endif
7125     TEST_c_c (csin, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7126     TEST_c_c (csin, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7127     END_DATA (csin)
7128   };
7130 static void
7131 csin_test (void)
7133   errno = 0;
7134   FUNC(csin) (BUILD_COMPLEX (0.7L, 1.2L));
7135   if (errno == ENOSYS)
7136     /* Function not implemented.  */
7137     return;
7139   START (csin);
7140   RUN_TEST_LOOP_c_c (csin, csin_test_data, );
7141   END (csin, complex);
7145 static const struct test_c_c_data csinh_test_data[] =
7146   {
7147     START_DATA (csinh),
7148     TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0),
7149     TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0),
7150     TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero),
7151     TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero),
7153     TEST_c_c (csinh, 0.0, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7154     TEST_c_c (csinh, minus_zero, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7155     TEST_c_c (csinh, 0.0, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7156     TEST_c_c (csinh, minus_zero, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7158     TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0),
7159     TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0),
7160     TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero),
7161     TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero),
7163     TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7164     TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7165     TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7166     TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7168     TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty),
7169     TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty),
7170     TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty),
7171     TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty),
7173     TEST_c_c (csinh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7174     TEST_c_c (csinh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7175     TEST_c_c (csinh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7176     TEST_c_c (csinh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7178     TEST_c_c (csinh, 0.0, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7179     TEST_c_c (csinh, minus_zero, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7181     TEST_c_c (csinh, plus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7182     TEST_c_c (csinh, minus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7184     TEST_c_c (csinh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7185     TEST_c_c (csinh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7187     TEST_c_c (csinh, qnan_value, 0.0, qnan_value, 0.0),
7188     TEST_c_c (csinh, qnan_value, minus_zero, qnan_value, minus_zero),
7190     TEST_c_c (csinh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7191     TEST_c_c (csinh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7193     TEST_c_c (csinh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7194     TEST_c_c (csinh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7196     TEST_c_c (csinh, qnan_value, qnan_value, qnan_value, qnan_value),
7198     TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L),
7199     TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L),
7201     TEST_c_c (csinh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7202     TEST_c_c (csinh, -89.5, 0.75, -2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7203     TEST_c_c (csinh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7204     TEST_c_c (csinh, -89.5, -0.75, -2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7206 #ifndef TEST_FLOAT
7207     TEST_c_c (csinh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7208     TEST_c_c (csinh, -710.5, 0.75, -1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7209     TEST_c_c (csinh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7210     TEST_c_c (csinh, -710.5, -0.75, -1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7211 #endif
7213 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7214     TEST_c_c (csinh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7215     TEST_c_c (csinh, -11357.25, 0.75, -9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7216     TEST_c_c (csinh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7217     TEST_c_c (csinh, -11357.25, -0.75, -9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7218 #endif
7220 #ifdef TEST_FLOAT
7221     TEST_c_c (csinh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
7222 #endif
7224 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7225     TEST_c_c (csinh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
7226 #endif
7228 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7229     TEST_c_c (csinh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
7230 #endif
7232     TEST_c_c (csinh, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7233     TEST_c_c (csinh, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7234     END_DATA (csinh)
7235   };
7237 static void
7238 csinh_test (void)
7240   errno = 0;
7241   FUNC(csinh) (BUILD_COMPLEX (0.7L, 1.2L));
7242   if (errno == ENOSYS)
7243     /* Function not implemented.  */
7244     return;
7246   START (csinh);
7247   RUN_TEST_LOOP_c_c (csinh, csinh_test_data, );
7248   END (csinh, complex);
7252 static const struct test_c_c_data csqrt_test_data[] =
7253   {
7254     START_DATA (csqrt),
7255     TEST_c_c (csqrt, 0, 0, 0.0, 0.0),
7256     TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero),
7257     TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0),
7258     TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero),
7260     TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty),
7261     TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty),
7262     TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty),
7263     TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty),
7265     TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0),
7266     TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0),
7267     TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero),
7268     TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero),
7270     TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty),
7271     TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty),
7272     TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty),
7273     TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty),
7274     TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty),
7275     TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty),
7276     TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty),
7277     TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty),
7278     TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty),
7279     TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty),
7280     TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty),
7281     TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty),
7283     TEST_c_c (csqrt, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7285     TEST_c_c (csqrt, plus_infty, qnan_value, plus_infty, qnan_value),
7287     TEST_c_c (csqrt, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7288     TEST_c_c (csqrt, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7289     TEST_c_c (csqrt, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7290     TEST_c_c (csqrt, -1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7292     TEST_c_c (csqrt, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7293     TEST_c_c (csqrt, qnan_value, 8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7294     TEST_c_c (csqrt, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7295     TEST_c_c (csqrt, qnan_value, -8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7297     TEST_c_c (csqrt, qnan_value, qnan_value, qnan_value, qnan_value),
7299     TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0),
7300     TEST_c_c (csqrt, -1, 0, 0.0, 1.0),
7301     TEST_c_c (csqrt, 0, 2, 1.0, 1.0),
7302     TEST_c_c (csqrt, 119, 120, 12.0, 5.0),
7303     TEST_c_c (csqrt, 0.75L, 1.25L, 1.05065169626078392338656675760808326L, 0.594868882070379067881984030639932657L),
7304     TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L),
7305     TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L),
7306     /* Principal square root should be returned (i.e., non-negative real
7307        part).  */
7308     TEST_c_c (csqrt, 0, -1, M_SQRT1_2l, -M_SQRT1_2l),
7310     TEST_c_c (csqrt, 0x1.fffffep+127L, 0x1.fffffep+127L, 2.026714405498316804978751017492482558075e+19L, 8.394925938143272988211878516208015586281e+18L),
7311     TEST_c_c (csqrt, 0x1.fffffep+127L, 1.0L, 1.844674352395372953599975585936590505260e+19L, 2.710505511993121390769065968615872097053e-20L),
7312     TEST_c_c (csqrt, 0x1p-149L, 0x1p-149L, 4.112805464342778798097003462770175200803e-23L, 1.703579802732953750368659735601389709551e-23L),
7313     TEST_c_c (csqrt, 0x1p-147L, 0x1p-147L, 8.225610928685557596194006925540350401606e-23L, 3.407159605465907500737319471202779419102e-23L),
7315     TEST_c_c (csqrt, plus_zero, 0x1p-149L, 2.646977960169688559588507814623881131411e-23L, 2.646977960169688559588507814623881131411e-23L),
7316     TEST_c_c (csqrt, 0x1p-50L, 0x1p-149L, 2.980232238769531250000000000000000000000e-8L, 2.350988701644575015937473074444491355637e-38L),
7317 #ifdef TEST_FLOAT
7318     TEST_c_c (csqrt, 0x1p+127L, 0x1p-149L, 1.304381782533278221234957180625250836888e19L, plus_zero, UNDERFLOW_EXCEPTION),
7319 #endif
7320     TEST_c_c (csqrt, 0x1p-149L, 0x1p+127L, 9.223372036854775808000000000000000000000e18L, 9.223372036854775808000000000000000000000e18L),
7321     TEST_c_c (csqrt, 0x1.000002p-126L, 0x1.000002p-126L, 1.191195773697904627170323731331667740087e-19L, 4.934094449071842328766868579214125217132e-20L),
7322     TEST_c_c (csqrt, -0x1.000002p-126L, -0x1.000002p-126L, 4.934094449071842328766868579214125217132e-20L, -1.191195773697904627170323731331667740087e-19L),
7324 #ifndef TEST_FLOAT
7325     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 1.473094556905565378990473658199034571917e+154L, 6.101757441282702188537080005372547713595e+153L),
7326     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 1.379778091031440685006200821918878702861e+154L, 3.257214233483129514781233066898042490248e+153L),
7327     TEST_c_c (csqrt, 0x1p-1074L, 0x1p-1074L, 2.442109726130830256743814843868934877597e-162L, 1.011554969366634726113090867589031782487e-162L),
7328     TEST_c_c (csqrt, 0x1p-1073L, 0x1p-1073L, 3.453664695497464982856905711457966660085e-162L, 1.430554756764195530630723976279903095110e-162L),
7330     TEST_c_c (csqrt, plus_zero, 0x1p-1074L, 1.571727784702628688909515672805082228285e-162L, 1.571727784702628688909515672805082228285e-162L),
7331     TEST_c_c (csqrt, 0x1p-500L, 0x1p-1074L, 5.527147875260444560247265192192255725514e-76L, 4.469444793151709302716387622440056066334e-249L),
7332 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7333     TEST_c_c (csqrt, 0x1p+1023L, 0x1p-1074L, 9.480751908109176726832526455652159260085e153L, plus_zero, UNDERFLOW_EXCEPTION),
7334 #endif
7335     TEST_c_c (csqrt, 0x1p-1074L, 0x1p+1023L, 6.703903964971298549787012499102923063740e153L, 6.703903964971298549787012499102923063740e153L),
7336     TEST_c_c (csqrt, 0x1.0000000000001p-1022L, 0x1.0000000000001p-1022L, 1.638872094839911521020410942677082920935e-154L, 6.788430486774966350907249113759995429568e-155L),
7337     TEST_c_c (csqrt, -0x1.0000000000001p-1022L, -0x1.0000000000001p-1022L, 6.788430486774966350907249113759995429568e-155L, -1.638872094839911521020410942677082920935e-154L),
7338 #endif
7340 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7341     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1.fp+16383L, 1.179514222452201722651836720466795901016e+2466L, 4.885707879516577666702435054303191575148e+2465L),
7342     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1p+16383L, 1.106698967236475180613254276996359485630e+2466L, 2.687568007603946993388538156299100955642e+2465L),
7343     TEST_c_c (csqrt, 0x1p-16440L, 0x1p-16441L, 3.514690655930285351254618340783294558136e-2475L,  8.297059146828716918029689466551384219370e-2476L),
7345     TEST_c_c (csqrt, plus_zero, 0x1p-16445L, 4.269191686890197837775136325621239761720e-2476L, 4.269191686890197837775136325621239761720e-2476L),
7346     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16445L, 2.660791472672778409283210520357607795518e-753L, 6.849840675828785164910701384823702064234e-4199L),
7347     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16445L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7348     TEST_c_c (csqrt, 0x1p-16445L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7349     TEST_c_c (csqrt, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-16382L, 2.014551439675644900131815801350165472778e-2466L, 8.344545284118961664300307045791497724440e-2467L),
7350     TEST_c_c (csqrt, -0x1.0000000000000002p-16382L, -0x1.0000000000000002p-16382L, 8.344545284118961664300307045791497724440e-2467L, -2.014551439675644900131815801350165472778e-2466L),
7352 # if LDBL_MANT_DIG >= 113
7353     TEST_c_c (csqrt, plus_zero, 0x1p-16494L, 1.799329752913293143453817328207572571442e-2483L, 1.799329752913293143453817328207572571442e-2483L),
7354     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16494L, 2.660791472672778409283210520357607795518e-753L, 1.216776133331049643422030716668249905907e-4213L),
7355     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16494L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7356     TEST_c_c (csqrt, 0x1p-16494L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7357     TEST_c_c (csqrt, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-16382L, 2.014551439675644900022606748976158925145e-2466L, 8.344545284118961663847948339519226074126e-2467L),
7358     TEST_c_c (csqrt, -0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-16382L, 8.344545284118961663847948339519226074126e-2467L, -2.014551439675644900022606748976158925145e-2466L),
7359 # endif
7360 #endif
7361     END_DATA (csqrt)
7362   };
7364 static void
7365 csqrt_test (void)
7367   errno = 0;
7368   FUNC(csqrt) (BUILD_COMPLEX (-1, 0));
7369   if (errno == ENOSYS)
7370     /* Function not implemented.  */
7371     return;
7373   START (csqrt);
7374   RUN_TEST_LOOP_c_c (csqrt, csqrt_test_data, );
7375   END (csqrt, complex);
7378 static const struct test_c_c_data ctan_test_data[] =
7379   {
7380     START_DATA (ctan),
7381     TEST_c_c (ctan, 0, 0, 0.0, 0.0),
7382     TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero),
7383     TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0),
7384     TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero),
7386     TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0),
7387     TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0),
7388     TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0),
7389     TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0),
7391     TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0),
7392     TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0),
7393     TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0),
7394     TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0),
7396     TEST_c_c (ctan, plus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7397     TEST_c_c (ctan, plus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7398     TEST_c_c (ctan, minus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7399     TEST_c_c (ctan, minus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7400     TEST_c_c (ctan, plus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7401     TEST_c_c (ctan, plus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7402     TEST_c_c (ctan, minus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7403     TEST_c_c (ctan, minus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7405     TEST_c_c (ctan, qnan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN),
7406     TEST_c_c (ctan, qnan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN),
7408     TEST_c_c (ctan, 0, qnan_value, 0.0, qnan_value),
7409     TEST_c_c (ctan, minus_zero, qnan_value, minus_zero, qnan_value),
7411     TEST_c_c (ctan, 0.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7412     TEST_c_c (ctan, -4.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7414     TEST_c_c (ctan, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7415     TEST_c_c (ctan, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7416     TEST_c_c (ctan, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7417     TEST_c_c (ctan, qnan_value, -0.25, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7419     TEST_c_c (ctan, qnan_value, qnan_value, qnan_value, qnan_value),
7421     TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L),
7422     TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L),
7424     TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L, UNDERFLOW_EXCEPTION_FLOAT),
7425     TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0, UNDERFLOW_EXCEPTION_FLOAT),
7427 #ifndef TEST_FLOAT
7428     TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7429     TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7430 #endif
7432 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7433     TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0, UNDERFLOW_EXCEPTION),
7434     TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0, UNDERFLOW_EXCEPTION),
7435 #endif
7437     TEST_c_c (ctan, 0x3.243f6cp-1, 0, -2.287733242885645987394874673945769518150e7L, 0.0),
7439     TEST_c_c (ctan, 0x1p127, 1, 0.2446359391192790896381501310437708987204L, 0.9101334047676183761532873794426475906201L),
7441 #ifndef TEST_FLOAT
7442     TEST_c_c (ctan, 0x1p1023, 1, -0.2254627924997545057926782581695274244229L, 0.8786063118883068695462540226219865087189L),
7443 #endif
7445 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7446     TEST_c_c (ctan, 0x1p16383L, 1, 0.1608598776370396607204448234354670036772L, 0.8133818522051542536316746743877629761488L),
7447 #endif
7449     TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0, UNDERFLOW_EXCEPTION),
7450     TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0, UNDERFLOW_EXCEPTION),
7451     TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0, UNDERFLOW_EXCEPTION),
7452     TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0, UNDERFLOW_EXCEPTION),
7453     END_DATA (ctan)
7454   };
7456 static void
7457 ctan_test (void)
7459   errno = 0;
7460   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7461   if (errno == ENOSYS)
7462     /* Function not implemented.  */
7463     return;
7465   START (ctan);
7466   RUN_TEST_LOOP_c_c (ctan, ctan_test_data, );
7467   END (ctan, complex);
7471 static const struct test_c_c_data ctan_tonearest_test_data[] =
7472   {
7473     START_DATA (ctan_tonearest),
7474     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7476 #ifndef TEST_FLOAT
7477     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7478 #endif
7480 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7481     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7482 #endif
7483     END_DATA (ctan_tonearest)
7484   };
7486 static void
7487 ctan_test_tonearest (void)
7489   errno = 0;
7490   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7491   if (errno == ENOSYS)
7492     /* Function not implemented.  */
7493     return;
7495   START (ctan_tonearest);
7496   RUN_TEST_LOOP_c_c (ctan, ctan_tonearest_test_data, FE_TONEAREST);
7497   END (ctan_tonearest, complex);
7501 static const struct test_c_c_data ctan_towardzero_test_data[] =
7502   {
7503     START_DATA (ctan_towardzero),
7504     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7506 #ifndef TEST_FLOAT
7507     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7508 #endif
7510 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7511     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7512 #endif
7513     END_DATA (ctan_towardzero)
7514   };
7516 static void
7517 ctan_test_towardzero (void)
7519   errno = 0;
7520   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7521   if (errno == ENOSYS)
7522     /* Function not implemented.  */
7523     return;
7525   START (ctan_towardzero);
7526   RUN_TEST_LOOP_c_c (ctan, ctan_towardzero_test_data, FE_TOWARDZERO);
7527   END (ctan_towardzero, complex);
7531 static const struct test_c_c_data ctan_downward_test_data[] =
7532   {
7533     START_DATA (ctan_downward),
7534     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7536 #ifndef TEST_FLOAT
7537     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7538 #endif
7540 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7541     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7542 #endif
7543     END_DATA (ctan_downward)
7544   };
7546 static void
7547 ctan_test_downward (void)
7549   errno = 0;
7550   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7551   if (errno == ENOSYS)
7552     /* Function not implemented.  */
7553     return;
7555   START (ctan_downward);
7556   RUN_TEST_LOOP_c_c (ctan, ctan_downward_test_data, FE_DOWNWARD);
7557   END (ctan_downward, complex);
7561 static const struct test_c_c_data ctan_upward_test_data[] =
7562   {
7563     START_DATA (ctan_upward),
7564     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7566 #ifndef TEST_FLOAT
7567     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7568 #endif
7570 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7571     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7572 #endif
7573     END_DATA (ctan_upward)
7574   };
7576 static void
7577 ctan_test_upward (void)
7579   errno = 0;
7580   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7581   if (errno == ENOSYS)
7582     /* Function not implemented.  */
7583     return;
7585   START (ctan_upward);
7586   RUN_TEST_LOOP_c_c (ctan, ctan_upward_test_data, FE_UPWARD);
7587   END (ctan_upward, complex);
7591 static const struct test_c_c_data ctanh_test_data[] =
7592   {
7593     START_DATA (ctanh),
7594     TEST_c_c (ctanh, 0, 0, 0.0, 0.0),
7595     TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero),
7596     TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0),
7597     TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero),
7599     TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0),
7600     TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0),
7601     TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero),
7602     TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero),
7603     TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0),
7604     TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0),
7605     TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero),
7606     TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero),
7608     TEST_c_c (ctanh, 0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7609     TEST_c_c (ctanh, 2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7610     TEST_c_c (ctanh, 0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7611     TEST_c_c (ctanh, 2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7612     TEST_c_c (ctanh, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7613     TEST_c_c (ctanh, -2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7614     TEST_c_c (ctanh, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7615     TEST_c_c (ctanh, -2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7617     TEST_c_c (ctanh, plus_infty, qnan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7618     TEST_c_c (ctanh, minus_infty, qnan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7620     TEST_c_c (ctanh, qnan_value, 0, qnan_value, 0.0),
7621     TEST_c_c (ctanh, qnan_value, minus_zero, qnan_value, minus_zero),
7623     TEST_c_c (ctanh, qnan_value, 0.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7624     TEST_c_c (ctanh, qnan_value, -4.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7626     TEST_c_c (ctanh, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7627     TEST_c_c (ctanh, 5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7628     TEST_c_c (ctanh, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7629     TEST_c_c (ctanh, -0.25, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7631     TEST_c_c (ctanh, qnan_value, qnan_value, qnan_value, qnan_value),
7633     TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0),
7635     TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L),
7636     TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L),
7638     TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L, UNDERFLOW_EXCEPTION_FLOAT),
7639     TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L, UNDERFLOW_EXCEPTION_FLOAT),
7641 #ifndef TEST_FLOAT
7642     TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
7643     TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L, UNDERFLOW_EXCEPTION_DOUBLE),
7644 #endif
7646 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7647     TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L, UNDERFLOW_EXCEPTION),
7648     TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L, UNDERFLOW_EXCEPTION),
7649 #endif
7651     TEST_c_c (ctanh, 0, 0x3.243f6cp-1, 0.0, -2.287733242885645987394874673945769518150e7L),
7653     TEST_c_c (ctanh, 1, 0x1p127, 0.9101334047676183761532873794426475906201L, 0.2446359391192790896381501310437708987204L),
7655 #ifndef TEST_FLOAT
7656     TEST_c_c (ctanh, 1, 0x1p1023, 0.8786063118883068695462540226219865087189L, -0.2254627924997545057926782581695274244229L),
7657 #endif
7659 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7660     TEST_c_c (ctanh, 1, 0x1p16383L, 0.8133818522051542536316746743877629761488L, 0.1608598776370396607204448234354670036772L),
7661 #endif
7663     TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero, UNDERFLOW_EXCEPTION),
7664     TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero, UNDERFLOW_EXCEPTION),
7665     TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero, UNDERFLOW_EXCEPTION),
7666     TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero, UNDERFLOW_EXCEPTION),
7667     END_DATA (ctanh)
7668   };
7670 static void
7671 ctanh_test (void)
7673   errno = 0;
7674   FUNC(ctanh) (BUILD_COMPLEX (0, 0));
7675   if (errno == ENOSYS)
7676     /* Function not implemented.  */
7677     return;
7679   START (ctanh);
7680   RUN_TEST_LOOP_c_c (ctanh, ctanh_test_data, );
7681   END (ctanh, complex);
7685 static const struct test_c_c_data ctanh_tonearest_test_data[] =
7686   {
7687     START_DATA (ctanh_tonearest),
7688     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7690 #ifndef TEST_FLOAT
7691     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7692 #endif
7694 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7695     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7696 #endif
7697     END_DATA (ctanh_tonearest)
7698   };
7700 static void
7701 ctanh_test_tonearest (void)
7703   errno = 0;
7704   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7705   if (errno == ENOSYS)
7706     /* Function not implemented.  */
7707     return;
7709   START (ctanh_tonearest);
7710   RUN_TEST_LOOP_c_c (ctanh, ctanh_tonearest_test_data, FE_TONEAREST);
7711   END (ctanh_tonearest, complex);
7715 static const struct test_c_c_data ctanh_towardzero_test_data[] =
7716   {
7717     START_DATA (ctanh_towardzero),
7718     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7720 #ifndef TEST_FLOAT
7721     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7722 #endif
7724 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7725     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7726 #endif
7727     END_DATA (ctanh_towardzero)
7728   };
7730 static void
7731 ctanh_test_towardzero (void)
7733   errno = 0;
7734   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7735   if (errno == ENOSYS)
7736     /* Function not implemented.  */
7737     return;
7739   START (ctanh_towardzero);
7740   RUN_TEST_LOOP_c_c (ctanh, ctanh_towardzero_test_data, FE_TOWARDZERO);
7741   END (ctanh_towardzero, complex);
7745 static const struct test_c_c_data ctanh_downward_test_data[] =
7746   {
7747     START_DATA (ctanh_downward),
7748     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7750 #ifndef TEST_FLOAT
7751     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7752 #endif
7754 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7755     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7756 #endif
7757     END_DATA (ctanh_downward)
7758   };
7760 static void
7761 ctanh_test_downward (void)
7763   errno = 0;
7764   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7765   if (errno == ENOSYS)
7766     /* Function not implemented.  */
7767     return;
7769   START (ctanh_downward);
7770   RUN_TEST_LOOP_c_c (ctanh, ctanh_downward_test_data, FE_DOWNWARD);
7771   END (ctanh_downward, complex);
7775 static const struct test_c_c_data ctanh_upward_test_data[] =
7776   {
7777     START_DATA (ctanh_upward),
7778     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7780 #ifndef TEST_FLOAT
7781     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7782 #endif
7784 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7785     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7786 #endif
7787     END_DATA (ctanh_upward)
7788   };
7790 static void
7791 ctanh_test_upward (void)
7793   errno = 0;
7794   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7795   if (errno == ENOSYS)
7796     /* Function not implemented.  */
7797     return;
7799   START (ctanh_upward);
7800   RUN_TEST_LOOP_c_c (ctanh, ctanh_upward_test_data, FE_UPWARD);
7801   END (ctanh_upward, complex);
7805 static const struct test_f_f_data erf_test_data[] =
7806   {
7807     START_DATA (erf),
7808     TEST_f_f (erf, 0, 0),
7809     TEST_f_f (erf, minus_zero, minus_zero),
7810     TEST_f_f (erf, plus_infty, 1),
7811     TEST_f_f (erf, minus_infty, -1),
7812     TEST_f_f (erf, qnan_value, qnan_value),
7814     TEST_f_f (erf, 0.125L, 0.140316204801333817393029446521623398L),
7815     TEST_f_f (erf, 0.75L, 0.711155633653515131598937834591410777L),
7816     TEST_f_f (erf, 1.25L, 0.922900128256458230136523481197281140L),
7817     TEST_f_f (erf, 2.0L, 0.995322265018952734162069256367252929L),
7818     TEST_f_f (erf, 4.125L, 0.999999994576599200434933994687765914L),
7819     TEST_f_f (erf, 27.0L, 1.0L),
7820     END_DATA (erf)
7821   };
7823 static void
7824 erf_test (void)
7826   errno = 0;
7827   FUNC(erf) (0);
7828   if (errno == ENOSYS)
7829     /* Function not implemented.  */
7830     return;
7832   START (erf);
7833   RUN_TEST_LOOP_f_f (erf, erf_test_data, );
7834   END (erf);
7838 static const struct test_f_f_data erfc_test_data[] =
7839   {
7840     START_DATA (erfc),
7841     TEST_f_f (erfc, plus_infty, 0.0),
7842     TEST_f_f (erfc, minus_infty, 2.0),
7843     TEST_f_f (erfc, 0.0, 1.0),
7844     TEST_f_f (erfc, minus_zero, 1.0),
7845     TEST_f_f (erfc, qnan_value, qnan_value),
7847     TEST_f_f (erfc, 0.125L, 0.859683795198666182606970553478376602L),
7848     TEST_f_f (erfc, 0.75L, 0.288844366346484868401062165408589223L),
7849     TEST_f_f (erfc, 1.25L, 0.0770998717435417698634765188027188596L),
7850     TEST_f_f (erfc, 2.0L, 0.00467773498104726583793074363274707139L),
7851     TEST_f_f (erfc, 0x1.f7303cp+1L, 2.705500297238986897105236321218861842255e-8L),
7852     TEST_f_f (erfc, 4.125L, 0.542340079956506600531223408575531062e-8L),
7853     TEST_f_f (erfc, 0x1.ffa002p+2L, 1.233585992097580296336099501489175967033e-29L),
7854     TEST_f_f (erfc, 0x1.ffffc8p+2L, 1.122671365033056305522366683719541099329e-29L),
7855 #ifdef TEST_LDOUBLE
7856     /* The result can only be represented in long double.  */
7857 # if LDBL_MIN_10_EXP < -319
7858     TEST_f_f (erfc, 27.0L, 0.523704892378925568501606768284954709e-318L),
7859 # endif
7860 # if LDBL_MANT_DIG >= 106
7861     TEST_f_f (erfc, 0x1.ffff56789abcdef0123456789a8p+2L, 1.123161416304655390092138725253789378459e-29L),
7862 # endif
7863 #endif
7864     END_DATA (erfc)
7865   };
7867 static void
7868 erfc_test (void)
7870   errno = 0;
7871   FUNC(erfc) (0);
7872   if (errno == ENOSYS)
7873     /* Function not implemented.  */
7874     return;
7876   START (erfc);
7877   RUN_TEST_LOOP_f_f (erfc, erfc_test_data, );
7878   END (erfc);
7882 static const struct test_f_f_data exp_test_data[] =
7883   {
7884     START_DATA (exp),
7885     TEST_f_f (exp, 0, 1),
7886     TEST_f_f (exp, minus_zero, 1),
7888 #ifndef TEST_INLINE
7889     TEST_f_f (exp, plus_infty, plus_infty),
7890     TEST_f_f (exp, minus_infty, 0),
7891 #endif
7892     TEST_f_f (exp, qnan_value, qnan_value),
7893     TEST_f_f (exp, 1, M_El),
7895     TEST_f_f (exp, 2, M_E2l),
7896     TEST_f_f (exp, 3, M_E3l),
7897     TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L),
7898     TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L),
7899     TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L),
7900 #ifndef TEST_FLOAT
7901     TEST_f_f (exp, 709.75L, 1.739836873264160557698252711673830393864768e+308L),
7902 #endif
7903 #if defined TEST_LDOUBLE && __LDBL_MAX_EXP__ > 1024
7904     /* The result can only be represented in sane long double.  */
7905     TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L),
7906 #endif
7908 #if !(defined TEST_LDOUBLE && LDBL_MAX_EXP > 1024)
7909     TEST_f_f (exp, 710, plus_infty, OVERFLOW_EXCEPTION),
7910     TEST_f_f (exp, -1234, plus_zero, UNDERFLOW_EXCEPTION),
7911 #endif
7912     TEST_f_f (exp, 1e5, plus_infty, OVERFLOW_EXCEPTION),
7913     TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION),
7914     TEST_f_f (exp, -max_value, 0, UNDERFLOW_EXCEPTION),
7915     END_DATA (exp)
7916   };
7918 static void
7919 exp_test (void)
7921   errno = 0;
7922   FUNC(exp) (0);
7923   if (errno == ENOSYS)
7924     /* Function not implemented.  */
7925     return;
7927   START (exp);
7928   RUN_TEST_LOOP_f_f (exp, exp_test_data, );
7929   END (exp);
7933 static const struct test_f_f_data exp_tonearest_test_data[] =
7934   {
7935     START_DATA (exp_tonearest),
7936     TEST_f_f (exp, 1, M_El),
7937     TEST_f_f (exp, 2, M_E2l),
7938     TEST_f_f (exp, 3, M_E3l),
7939     END_DATA (exp_tonearest)
7940   };
7942 static void
7943 exp_test_tonearest (void)
7945   errno = 0;
7946   FUNC(exp) (0);
7947   if (errno == ENOSYS)
7948     /* Function not implemented.  */
7949     return;
7951   START (exp_tonearest);
7952   RUN_TEST_LOOP_f_f (exp, exp_tonearest_test_data, FE_TONEAREST);
7953   END (exp_tonearest);
7957 static const struct test_f_f_data exp_towardzero_test_data[] =
7958   {
7959     START_DATA (exp_towardzero),
7960     TEST_f_f (exp, 1, M_El),
7961     TEST_f_f (exp, 2, M_E2l),
7962     TEST_f_f (exp, 3, M_E3l),
7963     END_DATA (exp_towardzero)
7964   };
7966 static void
7967 exp_test_towardzero (void)
7969   errno = 0;
7970   FUNC(exp) (0);
7971   if (errno == ENOSYS)
7972     /* Function not implemented.  */
7973     return;
7975   START (exp_towardzero);
7976   RUN_TEST_LOOP_f_f (exp, exp_towardzero_test_data, FE_TOWARDZERO);
7977   END (exp_towardzero);
7981 static const struct test_f_f_data exp_downward_test_data[] =
7982   {
7983     START_DATA (exp_downward),
7984     TEST_f_f (exp, 1, M_El),
7985     TEST_f_f (exp, 2, M_E2l),
7986     TEST_f_f (exp, 3, M_E3l),
7987     END_DATA (exp_downward)
7988   };
7990 static void
7991 exp_test_downward (void)
7993   errno = 0;
7994   FUNC(exp) (0);
7995   if (errno == ENOSYS)
7996     /* Function not implemented.  */
7997     return;
7999   START (exp_downward);
8000   RUN_TEST_LOOP_f_f (exp, exp_downward_test_data, FE_DOWNWARD);
8001   END (exp_downward);
8005 static const struct test_f_f_data exp_upward_test_data[] =
8006   {
8007     START_DATA (exp_upward),
8008     TEST_f_f (exp, 1, M_El),
8009     TEST_f_f (exp, 2, M_E2l),
8010     TEST_f_f (exp, 3, M_E3l),
8011     END_DATA (exp_upward)
8012   };
8014 static void
8015 exp_test_upward (void)
8017   errno = 0;
8018   FUNC(exp) (0);
8019   if (errno == ENOSYS)
8020     /* Function not implemented.  */
8021     return;
8023   START (exp_upward);
8024   RUN_TEST_LOOP_f_f (exp, exp_upward_test_data, FE_UPWARD);
8025   END (exp_upward);
8029 static const struct test_f_f_data exp10_test_data[] =
8030   {
8031     START_DATA (exp10),
8032     TEST_f_f (exp10, 0, 1),
8033     TEST_f_f (exp10, minus_zero, 1),
8035     TEST_f_f (exp10, plus_infty, plus_infty),
8036     TEST_f_f (exp10, minus_infty, 0),
8037     TEST_f_f (exp10, qnan_value, qnan_value),
8038     TEST_f_f (exp10, 3, 1000),
8039     TEST_f_f (exp10, -1, 0.1L),
8040     TEST_f_f (exp10, 36, 1.0e36L),
8041     TEST_f_f (exp10, -36, 1.0e-36L),
8042 #ifndef TEST_FLOAT
8043     TEST_f_f (exp10, 305, 1.0e305L),
8044     TEST_f_f (exp10, -305, 1.0e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
8045 #endif
8046 #if defined TEST_LDOUBLE && LDBL_MAX_10_EXP >= 4932
8047     TEST_f_f (exp10, 4932, 1.0e4932L),
8048     TEST_f_f (exp10, -4932, 1.0e-4932L, UNDERFLOW_EXCEPTION),
8049 #endif
8050     TEST_f_f (exp10, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8051     TEST_f_f (exp10, -1e6, 0, UNDERFLOW_EXCEPTION),
8052     TEST_f_f (exp10, max_value, plus_infty, OVERFLOW_EXCEPTION),
8053     TEST_f_f (exp10, -max_value, 0, UNDERFLOW_EXCEPTION),
8054     TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L),
8055     END_DATA (exp10)
8056   };
8058 static void
8059 exp10_test (void)
8061   errno = 0;
8062   FUNC(exp10) (0);
8063   if (errno == ENOSYS)
8064     /* Function not implemented.  */
8065     return;
8067   START (exp10);
8068   RUN_TEST_LOOP_f_f (exp10, exp10_test_data, );
8069   END (exp10);
8073 static const struct test_f_f_data exp2_test_data[] =
8074   {
8075     START_DATA (exp2),
8076     TEST_f_f (exp2, 0, 1),
8077     TEST_f_f (exp2, minus_zero, 1),
8078     TEST_f_f (exp2, plus_infty, plus_infty),
8079     TEST_f_f (exp2, minus_infty, 0),
8080     TEST_f_f (exp2, qnan_value, qnan_value),
8082     TEST_f_f (exp2, 10, 1024),
8083     TEST_f_f (exp2, -1, 0.5),
8084     TEST_f_f (exp2, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8085     TEST_f_f (exp2, -1e6, 0, UNDERFLOW_EXCEPTION),
8086     TEST_f_f (exp2, max_value, plus_infty, OVERFLOW_EXCEPTION),
8087     TEST_f_f (exp2, -max_value, 0, UNDERFLOW_EXCEPTION),
8088     TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L),
8090     TEST_f_f (exp2, 100.5, 1.792728671193156477399422023278661496394e+30L),
8091     TEST_f_f (exp2, 127, 0x1p127),
8092     TEST_f_f (exp2, -149, 0x1p-149),
8094 #ifndef TEST_FLOAT
8095     TEST_f_f (exp2, 1000.25, 1.274245659452564874772384918171765416737e+301L),
8096     TEST_f_f (exp2, 1023, 0x1p1023),
8097     TEST_f_f (exp2, -1074, 0x1p-1074),
8098 #endif
8100 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8101     TEST_f_f (exp2, 16383, 0x1p16383L),
8102     TEST_f_f (exp2, -16400, 0x1p-16400L),
8103 #endif
8104     END_DATA (exp2)
8105   };
8107 static void
8108 exp2_test (void)
8110   errno = 0;
8111   FUNC(exp2) (0);
8112   if (errno == ENOSYS)
8113     /* Function not implemented.  */
8114     return;
8116   START (exp2);
8117   RUN_TEST_LOOP_f_f (exp2, exp2_test_data, );
8118   END (exp2);
8122 static const struct test_f_f_data expm1_test_data[] =
8123   {
8124     START_DATA (expm1),
8125     TEST_f_f (expm1, 0, 0),
8126     TEST_f_f (expm1, minus_zero, minus_zero),
8128 #ifndef TEST_INLINE
8129     TEST_f_f (expm1, plus_infty, plus_infty),
8130     TEST_f_f (expm1, minus_infty, -1),
8131 #endif
8132     TEST_f_f (expm1, qnan_value, qnan_value),
8134     TEST_f_f (expm1, 1, M_El - 1.0),
8135     TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L),
8137     TEST_f_f (expm1, 50.0L, 5.1847055285870724640864533229334853848275e+21L),
8139 #ifndef TEST_FLOAT
8140     TEST_f_f (expm1, 127.0L, 1.4302079958348104463583671072905261080748e+55L),
8141     TEST_f_f (expm1, 500.0L, 1.4035922178528374107397703328409120821806e+217L),
8142 #endif
8144 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8145     TEST_f_f (expm1, 11356.25L, 9.05128237311923300051376115753226014206e+4931L),
8146 #endif
8148     TEST_f_f (expm1, -10.0, -0.9999546000702375151484644084844394493898L),
8149     TEST_f_f (expm1, -16.0, -0.9999998874648252807408854862248209398728L),
8150     TEST_f_f (expm1, -17.0, -0.9999999586006228121483334034897228104472L),
8151     TEST_f_f (expm1, -18.0, -0.9999999847700202552873715638633707664826L),
8152     TEST_f_f (expm1, -36.0, -0.9999999999999997680477169756430611687736L),
8153     TEST_f_f (expm1, -37.0, -0.9999999999999999146695237425593420572195L),
8154     TEST_f_f (expm1, -38.0, -0.9999999999999999686086720795197037129104L),
8155     TEST_f_f (expm1, -44.0, -0.9999999999999999999221886775886620348429L),
8156     TEST_f_f (expm1, -45.0, -0.9999999999999999999713748141945060635553L),
8157     TEST_f_f (expm1, -46.0, -0.9999999999999999999894693826424461876212L),
8158     TEST_f_f (expm1, -73.0, -0.9999999999999999999999999999999802074012L),
8159     TEST_f_f (expm1, -74.0, -0.9999999999999999999999999999999927187098L),
8160     TEST_f_f (expm1, -75.0, -0.9999999999999999999999999999999973213630L),
8161     TEST_f_f (expm1, -78.0, -0.9999999999999999999999999999999998666385L),
8162     TEST_f_f (expm1, -79.0, -0.9999999999999999999999999999999999509391L),
8163     TEST_f_f (expm1, -80.0, -0.9999999999999999999999999999999999819515L),
8164     TEST_f_f (expm1, -100.0, -1.0),
8165     TEST_f_f (expm1, -1000.0, -1.0),
8166     TEST_f_f (expm1, -10000.0, -1.0),
8167     TEST_f_f (expm1, -100000.0, -1.0),
8169     TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8170     TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION),
8171     TEST_f_f (expm1, -max_value, -1),
8172     END_DATA (expm1)
8173   };
8175 static void
8176 expm1_test (void)
8178   errno = 0;
8179   FUNC(expm1) (0);
8180   if (errno == ENOSYS)
8181     /* Function not implemented.  */
8182     return;
8184   START (expm1);
8185   RUN_TEST_LOOP_f_f (expm1, expm1_test_data, );
8186   END (expm1);
8190 static const struct test_f_f_data fabs_test_data[] =
8191   {
8192     START_DATA (fabs),
8193     TEST_f_f (fabs, 0, 0),
8194     TEST_f_f (fabs, minus_zero, 0),
8196     TEST_f_f (fabs, plus_infty, plus_infty),
8197     TEST_f_f (fabs, minus_infty, plus_infty),
8198     TEST_f_f (fabs, qnan_value, qnan_value),
8200     TEST_f_f (fabs, 38.0, 38.0),
8201     TEST_f_f (fabs, -M_El, M_El),
8202     END_DATA (fabs)
8203   };
8205 static void
8206 fabs_test (void)
8208   START (fabs);
8209   RUN_TEST_LOOP_f_f (fabs, fabs_test_data, );
8210   END (fabs);
8214 static const struct test_ff_f_data fdim_test_data[] =
8215   {
8216     START_DATA (fdim),
8217     TEST_ff_f (fdim, 0, 0, 0),
8218     TEST_ff_f (fdim, 9, 0, 9),
8219     TEST_ff_f (fdim, 0, 9, 0),
8220     TEST_ff_f (fdim, -9, 0, 0),
8221     TEST_ff_f (fdim, 0, -9, 9),
8223     TEST_ff_f (fdim, plus_infty, 9, plus_infty),
8224     TEST_ff_f (fdim, plus_infty, -9, plus_infty),
8225     TEST_ff_f (fdim, minus_infty, 9, 0),
8226     TEST_ff_f (fdim, minus_infty, -9, 0),
8227     TEST_ff_f (fdim, 9, minus_infty, plus_infty),
8228     TEST_ff_f (fdim, -9, minus_infty, plus_infty),
8229     TEST_ff_f (fdim, 9, plus_infty, 0),
8230     TEST_ff_f (fdim, -9, plus_infty, 0),
8232     TEST_ff_f (fdim, 0, qnan_value, qnan_value),
8233     TEST_ff_f (fdim, 9, qnan_value, qnan_value),
8234     TEST_ff_f (fdim, -9, qnan_value, qnan_value),
8235     TEST_ff_f (fdim, qnan_value, 9, qnan_value),
8236     TEST_ff_f (fdim, qnan_value, -9, qnan_value),
8237     TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value),
8238     TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value),
8239     TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value),
8240     TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value),
8241     TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value),
8243     TEST_ff_f (fdim, plus_infty, plus_infty, 0),
8244     END_DATA (fdim)
8245   };
8247 static void
8248 fdim_test (void)
8250   START (fdim);
8251   RUN_TEST_LOOP_ff_f (fdim, fdim_test_data, );
8252   END (fdim);
8256 static void
8257 finite_test (void)
8259   START (finite);
8261   TEST_f_b (finite, 0, 1);
8262   TEST_f_b (finite, minus_zero, 1);
8263   TEST_f_b (finite, 10, 1);
8264   TEST_f_b (finite, min_subnorm_value, 1);
8265   TEST_f_b (finite, plus_infty, 0);
8266   TEST_f_b (finite, minus_infty, 0);
8267   TEST_f_b (finite, qnan_value, 0);
8269   END (finite);
8273 static const struct test_f_f_data floor_test_data[] =
8274   {
8275     START_DATA (floor),
8276     TEST_f_f (floor, 0.0, 0.0),
8277     TEST_f_f (floor, minus_zero, minus_zero),
8278     TEST_f_f (floor, plus_infty, plus_infty),
8279     TEST_f_f (floor, minus_infty, minus_infty),
8280     TEST_f_f (floor, qnan_value, qnan_value),
8282     TEST_f_f (floor, M_PIl, 3.0),
8283     TEST_f_f (floor, -M_PIl, -4.0),
8285     TEST_f_f (floor, 0.1, 0.0),
8286     TEST_f_f (floor, 0.25, 0.0),
8287     TEST_f_f (floor, 0.625, 0.0),
8288     TEST_f_f (floor, -0.1, -1.0),
8289     TEST_f_f (floor, -0.25, -1.0),
8290     TEST_f_f (floor, -0.625, -1.0),
8292 #ifdef TEST_LDOUBLE
8293     /* The result can only be represented in long double.  */
8294     TEST_f_f (floor, 4503599627370495.5L, 4503599627370495.0L),
8295     TEST_f_f (floor, 4503599627370496.25L, 4503599627370496.0L),
8296     TEST_f_f (floor, 4503599627370496.5L, 4503599627370496.0L),
8297     TEST_f_f (floor, 4503599627370496.75L, 4503599627370496.0L),
8298     TEST_f_f (floor, 4503599627370497.5L, 4503599627370497.0L),
8299 # if LDBL_MANT_DIG > 100
8300     TEST_f_f (floor, 4503599627370494.5000000000001L, 4503599627370494.0L),
8301     TEST_f_f (floor, 4503599627370495.5000000000001L, 4503599627370495.0L),
8302     TEST_f_f (floor, 4503599627370496.5000000000001L, 4503599627370496.0L),
8303 # endif
8305     TEST_f_f (floor, -4503599627370495.5L, -4503599627370496.0L),
8306     TEST_f_f (floor, -4503599627370496.25L, -4503599627370497.0L),
8307     TEST_f_f (floor, -4503599627370496.5L, -4503599627370497.0L),
8308     TEST_f_f (floor, -4503599627370496.75L, -4503599627370497.0L),
8309     TEST_f_f (floor, -4503599627370497.5L, -4503599627370498.0L),
8310 # if LDBL_MANT_DIG > 100
8311     TEST_f_f (floor, -4503599627370494.5000000000001L, -4503599627370495.0L),
8312     TEST_f_f (floor, -4503599627370495.5000000000001L, -4503599627370496.0L),
8313     TEST_f_f (floor, -4503599627370496.5000000000001L, -4503599627370497.0L),
8314 # endif
8316     TEST_f_f (floor, 9007199254740991.5L, 9007199254740991.0L),
8317     TEST_f_f (floor, 9007199254740992.25L, 9007199254740992.0L),
8318     TEST_f_f (floor, 9007199254740992.5L, 9007199254740992.0L),
8319     TEST_f_f (floor, 9007199254740992.75L, 9007199254740992.0L),
8320     TEST_f_f (floor, 9007199254740993.5L, 9007199254740993.0L),
8322 # if LDBL_MANT_DIG > 100
8323     TEST_f_f (floor, 9007199254740991.0000000000001L, 9007199254740991.0L),
8324     TEST_f_f (floor, 9007199254740992.0000000000001L, 9007199254740992.0L),
8325     TEST_f_f (floor, 9007199254740993.0000000000001L, 9007199254740993.0L),
8326     TEST_f_f (floor, 9007199254740991.5000000000001L, 9007199254740991.0L),
8327     TEST_f_f (floor, 9007199254740992.5000000000001L, 9007199254740992.0L),
8328     TEST_f_f (floor, 9007199254740993.5000000000001L, 9007199254740993.0L),
8329 # endif
8331     TEST_f_f (floor, -9007199254740991.5L, -9007199254740992.0L),
8332     TEST_f_f (floor, -9007199254740992.25L, -9007199254740993.0L),
8333     TEST_f_f (floor, -9007199254740992.5L, -9007199254740993.0L),
8334     TEST_f_f (floor, -9007199254740992.75L, -9007199254740993.0L),
8335     TEST_f_f (floor, -9007199254740993.5L, -9007199254740994.0L),
8337 # if LDBL_MANT_DIG > 100
8338     TEST_f_f (floor, -9007199254740991.0000000000001L, -9007199254740992.0L),
8339     TEST_f_f (floor, -9007199254740992.0000000000001L, -9007199254740993.0L),
8340     TEST_f_f (floor, -9007199254740993.0000000000001L, -9007199254740994.0L),
8341     TEST_f_f (floor, -9007199254740991.5000000000001L, -9007199254740992.0L),
8342     TEST_f_f (floor, -9007199254740992.5000000000001L, -9007199254740993.0L),
8343     TEST_f_f (floor, -9007199254740993.5000000000001L, -9007199254740994.0L),
8344 # endif
8346     TEST_f_f (floor, 72057594037927935.5L, 72057594037927935.0L),
8347     TEST_f_f (floor, 72057594037927936.25L, 72057594037927936.0L),
8348     TEST_f_f (floor, 72057594037927936.5L, 72057594037927936.0L),
8349     TEST_f_f (floor, 72057594037927936.75L, 72057594037927936.0L),
8350     TEST_f_f (floor, 72057594037927937.5L, 72057594037927937.0L),
8352     TEST_f_f (floor, -72057594037927935.5L, -72057594037927936.0L),
8353     TEST_f_f (floor, -72057594037927936.25L, -72057594037927937.0L),
8354     TEST_f_f (floor, -72057594037927936.5L, -72057594037927937.0L),
8355     TEST_f_f (floor, -72057594037927936.75L, -72057594037927937.0L),
8356     TEST_f_f (floor, -72057594037927937.5L, -72057594037927938.0L),
8358     TEST_f_f (floor, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
8359     TEST_f_f (floor, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
8360     TEST_f_f (floor, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
8361     TEST_f_f (floor, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
8362     TEST_f_f (floor, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
8364     TEST_f_f (floor, 0xf.ffffffffffffff8p+47L, 0xf.fffffffffffep+47L),
8365     TEST_f_f (floor, -0x8.000000000000004p+48L, -0x8.000000000001p+48L),
8366 #endif
8367     END_DATA (floor)
8368   };
8370 static void
8371 floor_test (void)
8373   START (floor);
8374   RUN_TEST_LOOP_f_f (floor, floor_test_data, );
8375   END (floor);
8379 static const struct test_fff_f_data fma_test_data[] =
8380   {
8381     START_DATA (fma),
8382     TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0),
8383     TEST_fff_f (fma, qnan_value, 2.0, 3.0, qnan_value),
8384     TEST_fff_f (fma, 1.0, qnan_value, 3.0, qnan_value),
8385     TEST_fff_f (fma, 1.0, 2.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8386     TEST_fff_f (fma, plus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8387     TEST_fff_f (fma, minus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8388     TEST_fff_f (fma, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8389     TEST_fff_f (fma, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8390     TEST_fff_f (fma, plus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8391     TEST_fff_f (fma, minus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8392     TEST_fff_f (fma, 0.0, plus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8393     TEST_fff_f (fma, 0.0, minus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8395     TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8396     TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8397     TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8398     TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8399     TEST_fff_f (fma, plus_infty, 3.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8400     TEST_fff_f (fma, minus_infty, -7.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8401     TEST_fff_f (fma, -13.5L, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8402     TEST_fff_f (fma, minus_infty, 7.5L, plus_infty, qnan_value, INVALID_EXCEPTION),
8404     TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L),
8406     TEST_fff_f (fma, -max_value, -max_value, minus_infty, minus_infty),
8407     TEST_fff_f (fma, max_value / 2, max_value / 2, minus_infty, minus_infty),
8408     TEST_fff_f (fma, -max_value, max_value, plus_infty, plus_infty),
8409     TEST_fff_f (fma, max_value / 2, -max_value / 4, plus_infty, plus_infty),
8410     TEST_fff_f (fma, plus_infty, 4, plus_infty, plus_infty),
8411     TEST_fff_f (fma, 2, minus_infty, minus_infty, minus_infty),
8412     TEST_fff_f (fma, minus_infty, minus_infty, plus_infty, plus_infty),
8413     TEST_fff_f (fma, plus_infty, minus_infty, minus_infty, minus_infty),
8415     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8416     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8417     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8418     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8419     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8420     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8421     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8422     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8423     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8424     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8425     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8426     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8427     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8428     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8429     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8430     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8431     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8432     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8433     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8434     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8435     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8436     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8437     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8438     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8440     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8441     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8442     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8443     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8445     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8446     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8447     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8448     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8449     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8450     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8451     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8452     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8454     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8455     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8456     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8457     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8458     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8459     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8460     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8461     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8463 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8464     TEST_fff_f (fma, 0x1.7ff8p+13, 0x1.000002p+0, 0x1.ffffp-24, 0x1.7ff802p+13),
8465     TEST_fff_f (fma, 0x1.fffp+0, 0x1.00001p+0, -0x1.fffp+0, 0x1.fffp-20),
8466     TEST_fff_f (fma, 0x1.9abcdep+127, 0x0.9abcdep-126, -0x1.f08948p+0, 0x1.bb421p-25),
8467     TEST_fff_f (fma, 0x1.9abcdep+100, 0x0.9abcdep-126, -0x1.f08948p-27, 0x1.bb421p-52),
8468     TEST_fff_f (fma, 0x1.fffffep+127, 0x1.001p+0, -0x1.fffffep+127, 0x1.fffffep+115),
8469     TEST_fff_f (fma, -0x1.fffffep+127, 0x1.fffffep+0, 0x1.fffffep+127, -0x1.fffffap+127),
8470     TEST_fff_f (fma, 0x1.fffffep+127, 2.0, -0x1.fffffep+127, 0x1.fffffep+127),
8471     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8472     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8473     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8474     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8475     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8476     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8477     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8478     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8479     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8480     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
8481     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8482     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8483     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8484     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8485     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8486     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8487     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8488     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8489     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8490     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8491     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8492     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8493     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8494     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8495     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8496     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8497     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8498     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8499     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8500     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
8501     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8502     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8503     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8504     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
8505     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8506     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8507 #endif
8508 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8509     TEST_fff_f (fma, 0x1.7fp+13, 0x1.0000000000001p+0, 0x1.ffep-48, 0x1.7f00000000001p+13),
8510     TEST_fff_f (fma, 0x1.fffp+0, 0x1.0000000000001p+0, -0x1.fffp+0, 0x1.fffp-52),
8511     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, 0x1p-300, 1.0),
8512     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, -0x1p-300, 0x1.fffffffffffffp-1),
8513     TEST_fff_f (fma, 0x1.deadbeef2feedp+1023, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp+1, 0x1.0989687bc9da4p-53),
8514     TEST_fff_f (fma, 0x1.deadbeef2feedp+900, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp-122, 0x1.0989687bc9da4p-176),
8515     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 0x1.001p+0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1011),
8516     TEST_fff_f (fma, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+0, 0x1.fffffffffffffp+1023, -0x1.ffffffffffffdp+1023),
8517     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 2.0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023),
8518     TEST_fff_f (fma, 0x1.6a09e667f3bccp-538, 0x1.6a09e667f3bccp-538, 0.0, 0.0, UNDERFLOW_EXCEPTION),
8519     TEST_fff_f (fma, 0x1.deadbeef2feedp-495, 0x1.deadbeef2feedp-495, -0x1.bf86a5786a574p-989, 0x0.0000042625a1fp-1022, UNDERFLOW_EXCEPTION),
8520     TEST_fff_f (fma, 0x1.deadbeef2feedp-503, 0x1.deadbeef2feedp-503, -0x1.bf86a5786a574p-1005, 0x0.0000000004262p-1022, UNDERFLOW_EXCEPTION),
8521     TEST_fff_f (fma, 0x1p-537, 0x1p-538, 0x1p-1074, 0x0.0000000000002p-1022, UNDERFLOW_EXCEPTION),
8522     TEST_fff_f (fma, 0x1.7fffff8p-968, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000001p-1022, UNDERFLOW_EXCEPTION),
8523     TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022, UNDERFLOW_EXCEPTION),
8524     TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022, UNDERFLOW_EXCEPTION),
8525     TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022, UNDERFLOW_EXCEPTION),
8526     TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION),
8527     TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022, UNDERFLOW_EXCEPTION),
8528     TEST_fff_f (fma, -0x1.fffffffffffffp-711, 0x1.fffffffffffffp-275, 0x1.fffffe00007ffp-983, 0x1.7ffffe00007ffp-983),
8529     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8530     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8531     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8532     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8533     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8534     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8535     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8536     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8537     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8538     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
8539     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
8540     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8541     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8542     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8543     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8544     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8545     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8546     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8547     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8548     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8549     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8550     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8551     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8552     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8553     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8554     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8555     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8556     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8557     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8558     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8559     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8560     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8561     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8562     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
8563     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
8564     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8565 #endif
8566 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8567     TEST_fff_f (fma, -0x8.03fcp+3696L, 0xf.fffffffffffffffp-6140L, 0x8.3ffffffffffffffp-2450L, -0x8.01ecp-2440L),
8568     TEST_fff_f (fma, 0x9.fcp+2033L, -0x8.000e1f000ff800fp-3613L, -0xf.fffffffffffc0ffp-1579L, -0xd.fc119fb093ed092p-1577L),
8569     TEST_fff_f (fma, 0xc.7fc000003ffffffp-1194L, 0x8.1e0003fffffffffp+15327L, -0x8.fffep+14072L, 0xc.ae9f164020effffp+14136L),
8570     TEST_fff_f (fma, -0x8.0001fc000000003p+1798L, 0xcp-2230L, 0x8.f7e000000000007p-468L, -0xc.0002f9ffee10404p-429L),
8571     TEST_fff_f (fma, 0xc.0000000000007ffp+10130L, -0x8.000000000000001p+4430L, 0xc.07000000001ffffp+14513L, -0xb.fffffffffffd7e4p+14563L),
8572     TEST_fff_f (fma, 0xb.ffffp-4777L, 0x8.000000fffffffffp-11612L, -0x0.3800fff8p-16385L, 0x5.c7fe80c7ffeffffp-16385L, UNDERFLOW_EXCEPTION),
8573     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8574     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8575     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8576     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8577     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8578     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8579     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8580     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8581     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8582     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
8583     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
8584     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8585     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8586     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8587     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8588     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8589     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8590     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8591     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8592     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8593     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8594     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8595     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8596     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8597     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8598     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8599     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8600     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8601     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8602     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8603     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8604     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8605     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8606     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8607     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8608     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8609 #endif
8610 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8611     TEST_fff_f (fma, 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584L, -0x1.6b500daf0580d987f1bc0cadfcddp-13777L, 0x1.613cd91d9fed34b33820e5ab9d8dp-16378L, -0x1.3a79fb50eb9ce887cffa0f09bd9fp-16360L),
8612     TEST_fff_f (fma, -0x1.f949b880cacb0f0c61540105321dp-5954L, -0x1.3876cec84b4140f3bd6198731b7ep-10525L, -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382L, -0x0.a5dc1c6cfbc498c54fb0b5038abbp-16382L, UNDERFLOW_EXCEPTION),
8613     TEST_fff_f (fma, -0x1.0000fffffffffp-16221L, 0x1.0000001fffff8007fep-239L, 0x0.ff87ffffffffffffe000003fffffp-16382L, 0x0.ff87ffffffffffffdffc003bff7fp-16382L, UNDERFLOW_EXCEPTION),
8614     TEST_fff_f (fma, -0x1.ac79c9376ef447f3827c9e9de008p-2228L, -0x1.5ba830022b6139e21fbe7270cad8p-6314L, 0x1.e8282b6a26bb6a9daf5c8e73e9f9p-8616L, 0x1.22f14a0253878a730cd1aee373adp-8541L),
8615     TEST_fff_f (fma, -0x1.c69749ec574caaa2ab8e97ddb9f3p+2652L, 0x1.f34235ff9d095449c29b4831b62dp+3311L, 0x1.fbe4302df23354dbd0c4d3cfe606p+5879L, -0x1.bb473bfdfb7a6e18886ce6e57eafp+5964L),
8616     TEST_fff_f (fma, -0x1.ca8835fc6ecfb5398625fc891be5p-1686L, 0x1.621e1972bbe2180e5be9dd7d8df5p-7671L, -0x1.7d2d21b73b52cf20dec2a83902a4p-9395L, -0x1.3d2322191c9c88bc68a62ab8042cp-9356L),
8617     TEST_fff_f (fma, -0x1.55cff679ec49c2541fab41fc843ep-11819L, 0x1.e60e9f464f9e8df0509647c7c971p+12325L, 0x1.eaa2a7649d765c2f564f7a5beca7p+454L, -0x1.447e29fa7e406a285f4e350fcf86p+507L),
8618     TEST_fff_f (fma, 0x1.f0e7b1454908576f2537d863cf9bp+11432L, 0x1.cdce52f09d4ca76e68706f34b5d5p-1417L, -0x1.2e986187c70f146235ea2066e486p+9979L, 0x1.c030dad3cc5643f3dd0f5619f661p+10016L),
8619     TEST_fff_f (fma, 0x1.f102f7da4a57a3a4aab620e29452p-3098L, -0x1.cc06a4ff40248f9e2dcc4b6afd84p-11727L, 0x1.d512a11126b5ac8ed8973b8580c8p-14849L, -0x1.be8f1cf737ab4d1c31c54f5ec23bp-14824L),
8620     TEST_fff_f (fma, -0x1.fc47ac7434b993cd8dcb2b431f25p-3816L, 0x1.fbc9750da8468852d84558e1db6dp-5773L, -0x1.00a98abf783f75c40fe5b7a37d86p-9607L, -0x1.f81917b166f45e763cfcc057e2adp-9588L),
8621     TEST_fff_f (fma, 0x1.00000000000007ffffffffffffffp-9045L, -0x1.ffffffffffff80000001ffffffffp+4773L, -0x1.f8p-4316L, -0x1.00000000000f88000000fffffdffp-4271L),
8622     TEST_fff_f (fma, 0x1.4e922764c90701d4a2f21d01893dp-8683L, -0x1.955a12e2d7c9447c27fa022fc865p+212L, -0x1.e9634462eaef96528b90b6944578p-8521L, -0x1.08e1783184a371943d3598e10865p-8470L),
8623     TEST_fff_f (fma, 0x1.801181509c03bdbef10d6165588cp-15131L, 0x1.ad86f8e57d3d40bfa8007780af63p-368L, -0x1.6e9df0dab1c9f1d7a6043c390741p-15507L, 0x1.417c9b2b15e2ad57dc9e0e920844p-15498L),
8624     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8625     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8626     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8627     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8628     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8629     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8630     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8631     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8632     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8633     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
8634     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
8635     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8636     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8637     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8638     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8639     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8640     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8641     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8642     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8643     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8644     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8645     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8646     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8647     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8648     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8649     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8650     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8651     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8652     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8653     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8654     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8655     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8656     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8657     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8658     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8659     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8660 #endif
8661     END_DATA (fma)
8662   };
8664 static void
8665 fma_test (void)
8667   START (fma);
8668   RUN_TEST_LOOP_fff_f (fma, fma_test_data, );
8669   END (fma);
8673 static const struct test_fff_f_data fma_towardzero_test_data[] =
8674   {
8675     START_DATA (fma_towardzero),
8676     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8677     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8678     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8679     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8680     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8681     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8682     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8683     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8684     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8685     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8686     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8687     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8688     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8689     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8690     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8691     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8692     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8693     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8694     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8695     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8696     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8697     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8698     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8699     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8701     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8702     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8703     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8704     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8706     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8707     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8708     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8709     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8710     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8711     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8712     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8713     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8715 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8716     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8717     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8718     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8719     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8720     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8721     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8722     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8723     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8724 #endif
8726 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8727     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8728     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8729     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8730     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8731     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8732     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8733     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8734     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8735     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8736     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8737     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
8738     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8739     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8740     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8741     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8742     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8743     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8744     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8745     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8746     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8747     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8748     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8749     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
8750     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8751     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8752     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8753     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8754     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8755     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8756     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8757     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
8758     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8759     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8760     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8761     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
8762     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8763 #endif
8764 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8765     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8766     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8767     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8768     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8769     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8770     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8771     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8772     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8773     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8774     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
8775     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
8776     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8777     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8778     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8779     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8780     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8781     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8782     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8783     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8784     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8785     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8786     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
8787     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
8788     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8789     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8790     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8791     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8792     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8793     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8794     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
8795     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
8796     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8797     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8798     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
8799     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
8800     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8801 #endif
8802 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8803     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8804     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8805     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8806     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8807     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8808     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8809     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8810     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8811     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8812     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8813     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8814     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8815     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8816     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8817     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8818     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8819     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8820     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8821     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8822     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8823     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8824     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
8825     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
8826     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8827     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8828     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8829     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8830     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8831     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8832     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8833     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8834     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8835     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8836     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
8837     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
8838     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8839 #endif
8840 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8841     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8842     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8843     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8844     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8845     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8846     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8847     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8848     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8849     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8850     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8851     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8852     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8853     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8854     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8855     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8856     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8857     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8858     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8859     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8860     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8861     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8862     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
8863     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
8864     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8865     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8866     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8867     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8868     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8869     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8870     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8871     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8872     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8873     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8874     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
8875     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
8876     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8877 #endif
8878     END_DATA (fma_towardzero)
8879   };
8881 static void
8882 fma_test_towardzero (void)
8884   START (fma_towardzero);
8885   RUN_TEST_LOOP_fff_f (fma, fma_towardzero_test_data, FE_TOWARDZERO);
8886   END (fma_towardzero);
8890 static const struct test_fff_f_data fma_downward_test_data[] =
8891   {
8892     START_DATA (fma_downward),
8893     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8894     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, minus_zero),
8895     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, minus_zero),
8896     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8897     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, minus_zero),
8898     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8899     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8900     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, minus_zero),
8901     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8902     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, minus_zero),
8903     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, minus_zero),
8904     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8905     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, minus_zero),
8906     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8907     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8908     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, minus_zero),
8909     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8910     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, minus_zero),
8911     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, minus_zero),
8912     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8913     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, minus_zero),
8914     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8915     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8916     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, minus_zero),
8918     TEST_fff_f (fma, 1.0, 1.0, -1.0, minus_zero),
8919     TEST_fff_f (fma, 1.0, -1.0, 1.0, minus_zero),
8920     TEST_fff_f (fma, -1.0, 1.0, 1.0, minus_zero),
8921     TEST_fff_f (fma, -1.0, -1.0, -1.0, minus_zero),
8923     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8924     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8925     TEST_fff_f (fma, min_value, -min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8926     TEST_fff_f (fma, min_value, -min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8927     TEST_fff_f (fma, -min_value, min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8928     TEST_fff_f (fma, -min_value, min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8929     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8930     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8932 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8933     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8934     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8935     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8936     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8937     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8938     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8939     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8940     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8941 #endif
8943 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8944     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8945     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00008p-127, UNDERFLOW_EXCEPTION),
8946     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8947     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8948     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8949     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8950     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8951     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8952     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8953     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8954     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8955     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1.000002p127),
8956     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8957     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8958     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8959     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1.000002p-126),
8960     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8961     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8962     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8963     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8964     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8965     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8966     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8967     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-148, UNDERFLOW_EXCEPTION),
8968     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8969     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8970     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8971     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8972     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8973     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8974     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8975     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1.000002p127),
8976     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8977     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8978     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8979     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1.000002p103),
8980 #endif
8981 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8982     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8983     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
8984     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8985     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8986     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8987     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8988     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8989     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8990     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8991     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
8992     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
8993     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1.0000000000001p1023),
8994     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8995     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8996     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8997     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1.0000000000001p-1022),
8998     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8999     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9000     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9001     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
9002     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9003     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
9004     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9005     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1073, UNDERFLOW_EXCEPTION),
9006     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9007     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9008     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9009     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9010     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9011     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
9012     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9013     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1.0000000000001p1023),
9014     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
9015     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
9016     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
9017     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1.0000000000001p970),
9018 #endif
9019 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9020     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9021     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9022     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9023     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9024     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9025     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9026     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9027     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9028     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
9029     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
9030     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
9031     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1.0000000000000002p16383L),
9032     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
9033     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9034     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9035     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1.0000000000000002p-16382L),
9036     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9037     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9038     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9039     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9040     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9041     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
9042     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9043     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16444L, UNDERFLOW_EXCEPTION),
9044     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9045     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9046     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9047     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9048     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9049     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
9050     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9051     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1.0000000000000002p16383L),
9052     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9053     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
9054     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9055     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1.0000000000000002p16319L),
9056 #endif
9057 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9058     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9059     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9060     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9061     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9062     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9063     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9064     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9065     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9066     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
9067     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9068     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
9069     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9070     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
9071     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9072     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9073     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1.0000000000000000000000000001p-16382L),
9074     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9075     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9076     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9077     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9078     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9079     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
9080     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9081     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16493L, UNDERFLOW_EXCEPTION),
9082     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9083     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9084     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9085     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9086     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9087     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9088     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9089     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9090     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9091     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
9092     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9093     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1.0000000000000000000000000001p16319L),
9094 #endif
9095     END_DATA (fma_downward)
9096   };
9098 static void
9099 fma_test_downward (void)
9101   START (fma_downward);
9102   RUN_TEST_LOOP_fff_f (fma, fma_downward_test_data, FE_DOWNWARD);
9103   END (fma_downward);
9107 static const struct test_fff_f_data fma_upward_test_data[] =
9108   {
9109     START_DATA (fma_upward),
9110     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
9111     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
9112     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
9113     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
9114     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
9115     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
9116     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
9117     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
9118     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
9119     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
9120     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
9121     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
9122     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
9123     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
9124     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
9125     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
9126     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
9127     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
9128     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
9129     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
9130     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
9131     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
9132     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
9133     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
9135     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
9136     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
9137     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
9138     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
9140     TEST_fff_f (fma, min_value, min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9141     TEST_fff_f (fma, min_value, min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9142     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9143     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9144     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9145     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9146     TEST_fff_f (fma, -min_value, -min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9147     TEST_fff_f (fma, -min_value, -min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9149 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
9150     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9151     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9152     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9153     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9154     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9155     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9156     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9157     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9158 #endif
9160 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
9161     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00008p-127, UNDERFLOW_EXCEPTION),
9162     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
9163     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9164     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9165     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9166     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9167     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9168     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9169     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1.000002p127),
9170     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
9171     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
9172     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
9173     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1.000002p-126),
9174     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9175     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9176     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
9177     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9178     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9179     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
9180     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9181     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-148, UNDERFLOW_EXCEPTION),
9182     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
9183     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
9184     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
9185     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
9186     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
9187     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
9188     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
9189     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1.000002p127),
9190     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
9191     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
9192     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
9193     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1.000002p103),
9194     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
9195     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
9196     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
9197 #endif
9198 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
9199     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
9200     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
9201     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9202     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9203     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9204     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9205     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9206     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9207     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1.0000000000001p1023),
9208     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
9209     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
9210     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
9211     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1.0000000000001p-1022),
9212     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9213     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9214     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
9215     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9216     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9217     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9218     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9219     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1073, UNDERFLOW_EXCEPTION),
9220     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9221     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
9222     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9223     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9224     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9225     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9226     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9227     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1.0000000000001p1023),
9228     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9229     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
9230     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9231     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1.0000000000001p970),
9232     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
9233     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
9234     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
9235 #endif
9236 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9237     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9238     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9239     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9240     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9241     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9242     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9243     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9244     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9245     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1.0000000000000002p16383L),
9246     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
9247     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9248     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
9249     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1.0000000000000002p-16382L),
9250     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9251     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9252     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
9253     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9254     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9255     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9256     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9257     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16444L, UNDERFLOW_EXCEPTION),
9258     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9259     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
9260     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9261     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9262     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9263     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9264     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9265     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1.0000000000000002p16383L),
9266     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9267     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9268     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9269     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1.0000000000000002p16319L),
9270     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9271     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
9272     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9273 #endif
9274 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9275     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9276     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9277     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9278     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9279     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9280     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9281     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9282     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9283     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9284     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
9285     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9286     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
9287     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1.0000000000000000000000000001p-16382L),
9288     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9289     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9290     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
9291     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9292     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9293     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9294     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9295     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16493L, UNDERFLOW_EXCEPTION),
9296     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9297     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
9298     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9299     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9300     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9301     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9302     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9303     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9304     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9305     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9306     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9307     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1.0000000000000000000000000001p16319L),
9308     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9309     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
9310     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9311 #endif
9312     END_DATA (fma_upward)
9313   };
9315 static void
9316 fma_test_upward (void)
9318   START (fma_upward);
9319   RUN_TEST_LOOP_fff_f (fma, fma_upward_test_data, FE_UPWARD);
9320   END (fma_upward);
9324 static const struct test_ff_f_data fmax_test_data[] =
9325   {
9326     START_DATA (fmax),
9327     TEST_ff_f (fmax, 0, 0, 0),
9328     TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero),
9329     TEST_ff_f (fmax, 9, 0, 9),
9330     TEST_ff_f (fmax, 0, 9, 9),
9331     TEST_ff_f (fmax, -9, 0, 0),
9332     TEST_ff_f (fmax, 0, -9, 0),
9334     TEST_ff_f (fmax, plus_infty, 9, plus_infty),
9335     TEST_ff_f (fmax, 0, plus_infty, plus_infty),
9336     TEST_ff_f (fmax, -9, plus_infty, plus_infty),
9337     TEST_ff_f (fmax, plus_infty, -9, plus_infty),
9339     TEST_ff_f (fmax, minus_infty, 9, 9),
9340     TEST_ff_f (fmax, minus_infty, -9, -9),
9341     TEST_ff_f (fmax, 9, minus_infty, 9),
9342     TEST_ff_f (fmax, -9, minus_infty, -9),
9344     TEST_ff_f (fmax, 0, qnan_value, 0),
9345     TEST_ff_f (fmax, 9, qnan_value, 9),
9346     TEST_ff_f (fmax, -9, qnan_value, -9),
9347     TEST_ff_f (fmax, qnan_value, 0, 0),
9348     TEST_ff_f (fmax, qnan_value, 9, 9),
9349     TEST_ff_f (fmax, qnan_value, -9, -9),
9350     TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty),
9351     TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty),
9352     TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty),
9353     TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty),
9354     TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value),
9355     END_DATA (fmax)
9356   };
9358 static void
9359 fmax_test (void)
9361   START (fmax);
9362   RUN_TEST_LOOP_ff_f (fmax, fmax_test_data, );
9363   END (fmax);
9367 static const struct test_ff_f_data fmin_test_data[] =
9368   {
9369     START_DATA (fmin),
9370     TEST_ff_f (fmin, 0, 0, 0),
9371     TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero),
9372     TEST_ff_f (fmin, 9, 0, 0),
9373     TEST_ff_f (fmin, 0, 9, 0),
9374     TEST_ff_f (fmin, -9, 0, -9),
9375     TEST_ff_f (fmin, 0, -9, -9),
9377     TEST_ff_f (fmin, plus_infty, 9, 9),
9378     TEST_ff_f (fmin, 9, plus_infty, 9),
9379     TEST_ff_f (fmin, plus_infty, -9, -9),
9380     TEST_ff_f (fmin, -9, plus_infty, -9),
9381     TEST_ff_f (fmin, minus_infty, 9, minus_infty),
9382     TEST_ff_f (fmin, minus_infty, -9, minus_infty),
9383     TEST_ff_f (fmin, 9, minus_infty, minus_infty),
9384     TEST_ff_f (fmin, -9, minus_infty, minus_infty),
9386     TEST_ff_f (fmin, 0, qnan_value, 0),
9387     TEST_ff_f (fmin, 9, qnan_value, 9),
9388     TEST_ff_f (fmin, -9, qnan_value, -9),
9389     TEST_ff_f (fmin, qnan_value, 0, 0),
9390     TEST_ff_f (fmin, qnan_value, 9, 9),
9391     TEST_ff_f (fmin, qnan_value, -9, -9),
9392     TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty),
9393     TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty),
9394     TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty),
9395     TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty),
9396     TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value),
9397     END_DATA (fmin)
9398   };
9400 static void
9401 fmin_test (void)
9403   START (fmin);
9404   RUN_TEST_LOOP_ff_f (fmin, fmin_test_data, );
9405   END (fmin);
9409 static const struct test_ff_f_data fmod_test_data[] =
9410   {
9411     START_DATA (fmod),
9412     /* fmod (+0, y) == +0 for y != 0.  */
9413     TEST_ff_f (fmod, 0, 3, 0),
9415     /* fmod (-0, y) == -0 for y != 0.  */
9416     TEST_ff_f (fmod, minus_zero, 3, minus_zero),
9418     /* fmod (+inf, y) == qNaN plus invalid exception.  */
9419     TEST_ff_f (fmod, plus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9420     /* fmod (-inf, y) == qNaN plus invalid exception.  */
9421     TEST_ff_f (fmod, minus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9422     /* fmod (x, +0) == qNaN plus invalid exception.  */
9423     TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9424     /* fmod (x, -0) == qNaN plus invalid exception.  */
9425     TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION),
9427     /* fmod (x, +inf) == x for x not infinite.  */
9428     TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
9429     /* fmod (x, -inf) == x for x not infinite.  */
9430     TEST_ff_f (fmod, 3.0, minus_infty, 3.0),
9432     TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value),
9434     TEST_ff_f (fmod, 6.5, 2.25L, 2.0L),
9435     TEST_ff_f (fmod, -6.5, 2.25L, -2.0L),
9436     TEST_ff_f (fmod, 6.5, -2.25L, 2.0L),
9437     TEST_ff_f (fmod, -6.5, -2.25L, -2.0L),
9439     TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero),
9440 #ifndef TEST_FLOAT
9441     TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero),
9442 #endif
9443 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
9444     TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero),
9445 #endif
9446     END_DATA (fmod)
9447   };
9449 static void
9450 fmod_test (void)
9452   errno = 0;
9453   FUNC(fmod) (6.5, 2.3L);
9454   if (errno == ENOSYS)
9455     /* Function not implemented.  */
9456     return;
9458   START (fmod);
9459   RUN_TEST_LOOP_ff_f (fmod, fmod_test_data, );
9460   END (fmod);
9464 static void
9465 fpclassify_test (void)
9467   START (fpclassify);
9469   TEST_f_i (fpclassify, qnan_value, FP_NAN);
9470   TEST_f_i (fpclassify, plus_infty, FP_INFINITE);
9471   TEST_f_i (fpclassify, minus_infty, FP_INFINITE);
9472   TEST_f_i (fpclassify, plus_zero, FP_ZERO);
9473   TEST_f_i (fpclassify, minus_zero, FP_ZERO);
9474   TEST_f_i (fpclassify, 1000, FP_NORMAL);
9475   TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL);
9477   END (fpclassify);
9481 static void
9482 frexp_test (void)
9484   int x;
9486   START (frexp);
9488   TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE);
9489   TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE);
9490   TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE);
9492   TEST_fI_f1 (frexp, 0.0, 0.0, 0.0);
9493   TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0);
9495   TEST_fI_f1 (frexp, 12.8L, 0.8L, 4);
9496   TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5);
9498   END (frexp);
9502 static void
9503 gamma_test (void)
9505   errno = 0;
9506   FUNC(gamma) (1);
9508   if (errno == ENOSYS)
9509     /* Function not implemented.  */
9510     return;
9512   START (gamma);
9514   TEST_f_f1 (gamma, plus_infty, plus_infty, 1);
9515   TEST_f_f1 (gamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
9516   TEST_f_f1 (gamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
9517   TEST_f_f1 (gamma, minus_infty, plus_infty, IGNORE);
9518   TEST_f_f1 (gamma, qnan_value, qnan_value, IGNORE);
9520   TEST_f_f1 (gamma, 1, 0, 1);
9521   TEST_f_f1 (gamma, 3, M_LN2l, 1);
9523   TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1);
9524   TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1);
9526   END (gamma);
9529 static const struct test_ff_f_data hypot_test_data[] =
9530   {
9531     START_DATA (hypot),
9532     TEST_ff_f (hypot, plus_infty, 1, plus_infty),
9533     TEST_ff_f (hypot, minus_infty, 1, plus_infty),
9535 #ifndef TEST_INLINE
9536     TEST_ff_f (hypot, plus_infty, qnan_value, plus_infty),
9537     TEST_ff_f (hypot, minus_infty, qnan_value, plus_infty),
9538     TEST_ff_f (hypot, qnan_value, plus_infty, plus_infty),
9539     TEST_ff_f (hypot, qnan_value, minus_infty, plus_infty),
9540 #endif
9542     TEST_ff_f (hypot, qnan_value, qnan_value, qnan_value),
9544     /* hypot (x,y) == hypot (+-x, +-y)  */
9545     TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L),
9546     TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L),
9547     TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L),
9548     TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L),
9549     TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L),
9550     TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L),
9551     TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L),
9552     TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L),
9554     /*  hypot (x,0) == fabs (x)  */
9555     TEST_ff_f (hypot, 0.75L, 0, 0.75L),
9556     TEST_ff_f (hypot, -0.75L, 0, 0.75L),
9557     TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L),
9559     TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
9561     TEST_ff_f (hypot, 1.0L, 0x1p-61L, 1.0L),
9562     TEST_ff_f (hypot, 0x1p+0L, 0x1.fp-129L, 0x1p+0L),
9563 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
9564     TEST_ff_f (hypot, 0x1.23456789abcdef0123456789ab8p-500L, 0x1.23456789abcdef0123456789ab8p-500L, 4.9155782399407039128612180934736799735113e-151L),
9565 #endif
9567 #if !(defined TEST_FLOAT && defined TEST_INLINE)
9568     TEST_ff_f (hypot, 0x3p125L, 0x4p125L, 0x5p125L),
9569     TEST_ff_f (hypot, 0x1.234566p-126L, 0x1.234566p-126L, 1.891441686191081936598531534017449451173e-38L),
9570 #endif
9572 #if !defined TEST_FLOAT && !(defined TEST_DOUBLE && defined TEST_INLINE)
9573     TEST_ff_f (hypot, 0x3p1021L, 0x4p1021L, 0x5p1021L),
9574     TEST_ff_f (hypot, 0x1p+0L, 0x0.3ep-1022L, 0x1p+0L),
9575 #endif
9577 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 && !defined TEST_INLINE
9578     TEST_ff_f (hypot, 0x3p16381L, 0x4p16381L, 0x5p16381L),
9579 #endif
9580     END_DATA (hypot)
9581   };
9583 static void
9584 hypot_test (void)
9586   errno = 0;
9587   FUNC(hypot) (0.7L, 12.4L);
9588   if (errno == ENOSYS)
9589     /* Function not implemented.  */
9590     return;
9592   START (hypot);
9593   RUN_TEST_LOOP_ff_f (hypot, hypot_test_data, );
9594   END (hypot);
9598 static void
9599 ilogb_test (void)
9601   START (ilogb);
9603   TEST_f_i (ilogb, 1, 0);
9604   TEST_f_i (ilogb, M_El, 1);
9605   TEST_f_i (ilogb, 1024, 10);
9606   TEST_f_i (ilogb, -2000, 10);
9608   /* ilogb (0.0) == FP_ILOGB0 plus invalid exception  */
9609   TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION|ERRNO_EDOM);
9610   /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception  */
9611   TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION|ERRNO_EDOM);
9612   /* ilogb (inf) == INT_MAX plus invalid exception  */
9613   TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
9614   /* ilogb (-inf) == INT_MAX plus invalid exception  */
9615   TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
9617   END (ilogb);
9620 static void
9621 isfinite_test (void)
9623   START (isfinite);
9625   TEST_f_b (isfinite, 0, 1);
9626   TEST_f_b (isfinite, minus_zero, 1);
9627   TEST_f_b (isfinite, 10, 1);
9628   TEST_f_b (isfinite, min_subnorm_value, 1);
9629   TEST_f_b (isfinite, plus_infty, 0);
9630   TEST_f_b (isfinite, minus_infty, 0);
9631   TEST_f_b (isfinite, qnan_value, 0);
9633   END (isfinite);
9636 static void
9637 isgreater_test (void)
9639   START (isgreater);
9641   TEST_ff_i (isgreater, minus_zero, minus_zero, 0);
9642   TEST_ff_i (isgreater, minus_zero, plus_zero, 0);
9643   TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0);
9644   TEST_ff_i (isgreater, minus_zero, qnan_value, 0);
9645   TEST_ff_i (isgreater, plus_zero, minus_zero, 0);
9646   TEST_ff_i (isgreater, plus_zero, plus_zero, 0);
9647   TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0);
9648   TEST_ff_i (isgreater, plus_zero, qnan_value, 0);
9649   TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1);
9650   TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1);
9651   TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0);
9652   TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0);
9653   TEST_ff_i (isgreater, qnan_value, minus_zero, 0);
9654   TEST_ff_i (isgreater, qnan_value, plus_zero, 0);
9655   TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0);
9656   TEST_ff_i (isgreater, qnan_value, qnan_value, 0);
9658   END (isgreater);
9661 static void
9662 isgreaterequal_test (void)
9664   START (isgreaterequal);
9666   TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1);
9667   TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1);
9668   TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0);
9669   TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0);
9670   TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1);
9671   TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1);
9672   TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0);
9673   TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0);
9674   TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1);
9675   TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1);
9676   TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1);
9677   TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0);
9678   TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0);
9679   TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0);
9680   TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0);
9681   TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0);
9683   END (isgreaterequal);
9686 static void
9687 isinf_test (void)
9689   START (isinf);
9691   TEST_f_b (isinf, 0, 0);
9692   TEST_f_b (isinf, minus_zero, 0);
9693   TEST_f_b (isinf, 10, 0);
9694   TEST_f_b (isinf, min_subnorm_value, 0);
9695   TEST_f_b (isinf, plus_infty, 1);
9696   TEST_f_b (isinf, minus_infty, 1);
9697   TEST_f_b (isinf, qnan_value, 0);
9699   END (isinf);
9702 static void
9703 isless_test (void)
9705   START (isless);
9707   TEST_ff_i (isless, minus_zero, minus_zero, 0);
9708   TEST_ff_i (isless, minus_zero, plus_zero, 0);
9709   TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1);
9710   TEST_ff_i (isless, minus_zero, qnan_value, 0);
9711   TEST_ff_i (isless, plus_zero, minus_zero, 0);
9712   TEST_ff_i (isless, plus_zero, plus_zero, 0);
9713   TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1);
9714   TEST_ff_i (isless, plus_zero, qnan_value, 0);
9715   TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0);
9716   TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0);
9717   TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0);
9718   TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0);
9719   TEST_ff_i (isless, qnan_value, minus_zero, 0);
9720   TEST_ff_i (isless, qnan_value, plus_zero, 0);
9721   TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0);
9722   TEST_ff_i (isless, qnan_value, qnan_value, 0);
9724   END (isless);
9727 static void
9728 islessequal_test (void)
9730   START (islessequal);
9732   TEST_ff_i (islessequal, minus_zero, minus_zero, 1);
9733   TEST_ff_i (islessequal, minus_zero, plus_zero, 1);
9734   TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1);
9735   TEST_ff_i (islessequal, minus_zero, qnan_value, 0);
9736   TEST_ff_i (islessequal, plus_zero, minus_zero, 1);
9737   TEST_ff_i (islessequal, plus_zero, plus_zero, 1);
9738   TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1);
9739   TEST_ff_i (islessequal, plus_zero, qnan_value, 0);
9740   TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0);
9741   TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0);
9742   TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1);
9743   TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0);
9744   TEST_ff_i (islessequal, qnan_value, minus_zero, 0);
9745   TEST_ff_i (islessequal, qnan_value, plus_zero, 0);
9746   TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0);
9747   TEST_ff_i (islessequal, qnan_value, qnan_value, 0);
9749   END (islessequal);
9752 static void
9753 islessgreater_test (void)
9755   START (islessgreater);
9757   TEST_ff_i (islessgreater, minus_zero, minus_zero, 0);
9758   TEST_ff_i (islessgreater, minus_zero, plus_zero, 0);
9759   TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1);
9760   TEST_ff_i (islessgreater, minus_zero, qnan_value, 0);
9761   TEST_ff_i (islessgreater, plus_zero, minus_zero, 0);
9762   TEST_ff_i (islessgreater, plus_zero, plus_zero, 0);
9763   TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1);
9764   TEST_ff_i (islessgreater, plus_zero, qnan_value, 0);
9765   TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1);
9766   TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1);
9767   TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0);
9768   TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0);
9769   TEST_ff_i (islessgreater, qnan_value, minus_zero, 0);
9770   TEST_ff_i (islessgreater, qnan_value, plus_zero, 0);
9771   TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0);
9772   TEST_ff_i (islessgreater, qnan_value, qnan_value, 0);
9774   END (islessgreater);
9777 static void
9778 isnan_test (void)
9780   START (isnan);
9782   TEST_f_b (isnan, 0, 0);
9783   TEST_f_b (isnan, minus_zero, 0);
9784   TEST_f_b (isnan, 10, 0);
9785   TEST_f_b (isnan, min_subnorm_value, 0);
9786   TEST_f_b (isnan, plus_infty, 0);
9787   TEST_f_b (isnan, minus_infty, 0);
9788   TEST_f_b (isnan, qnan_value, 1);
9790   END (isnan);
9793 static void
9794 isnormal_test (void)
9796   START (isnormal);
9798   TEST_f_b (isnormal, 0, 0);
9799   TEST_f_b (isnormal, minus_zero, 0);
9800   TEST_f_b (isnormal, 10, 1);
9801   TEST_f_b (isnormal, min_subnorm_value, 0);
9802   TEST_f_b (isnormal, plus_infty, 0);
9803   TEST_f_b (isnormal, minus_infty, 0);
9804   TEST_f_b (isnormal, qnan_value, 0);
9806   END (isnormal);
9809 static void
9810 issignaling_test (void)
9812   START (issignaling);
9814   TEST_f_b (issignaling, 0, 0);
9815   TEST_f_b (issignaling, minus_zero, 0);
9816   TEST_f_b (issignaling, 10, 0);
9817   TEST_f_b (issignaling, min_subnorm_value, 0);
9818   TEST_f_b (issignaling, plus_infty, 0);
9819   TEST_f_b (issignaling, minus_infty, 0);
9820   TEST_f_b (issignaling, qnan_value, 0);
9822   END (issignaling);
9825 static void
9826 isunordered_test (void)
9828   START (isunordered);
9830   TEST_ff_i (isunordered, minus_zero, minus_zero, 0);
9831   TEST_ff_i (isunordered, minus_zero, plus_zero, 0);
9832   TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0);
9833   TEST_ff_i (isunordered, minus_zero, qnan_value, 1);
9834   TEST_ff_i (isunordered, plus_zero, minus_zero, 0);
9835   TEST_ff_i (isunordered, plus_zero, plus_zero, 0);
9836   TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0);
9837   TEST_ff_i (isunordered, plus_zero, qnan_value, 1);
9838   TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0);
9839   TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0);
9840   TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0);
9841   TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1);
9842   TEST_ff_i (isunordered, qnan_value, minus_zero, 1);
9843   TEST_ff_i (isunordered, qnan_value, plus_zero, 1);
9844   TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1);
9845   TEST_ff_i (isunordered, qnan_value, qnan_value, 1);
9847   END (isunordered);
9850 static const struct test_f_f_data j0_test_data[] =
9851   {
9852     START_DATA (j0),
9853     /* j0 is the Bessel function of the first kind of order 0 */
9854     TEST_f_f (j0, qnan_value, qnan_value),
9855     TEST_f_f (j0, plus_infty, 0),
9856     TEST_f_f (j0, -1.0, 0.765197686557966551449717526102663221L),
9857     TEST_f_f (j0, 0.0, 1.0),
9858     TEST_f_f (j0, 0.125L, 0.996097563041985204620768999453174712L),
9859     TEST_f_f (j0, 0.75L, 0.864242275166648623555731103820923211L),
9860     TEST_f_f (j0, 1.0, 0.765197686557966551449717526102663221L),
9861     TEST_f_f (j0, 1.5, 0.511827671735918128749051744283411720L),
9862     TEST_f_f (j0, 2.0, 0.223890779141235668051827454649948626L),
9863     TEST_f_f (j0, 8.0, 0.171650807137553906090869407851972001L),
9864     TEST_f_f (j0, 10.0, -0.245935764451348335197760862485328754L),
9865     TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
9866     TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
9868     TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L),
9870 #ifndef TEST_FLOAT
9871     TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L),
9872     TEST_f_f (j0, 0x1p1023L, -1.5665258060609012834424478437196679802783e-155L),
9873 #endif
9875 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9876     TEST_f_f (j0, 0x1p16382L, -1.2193782500509000574176799046642541129387e-2466L),
9877     TEST_f_f (j0, 0x1p16383L, 9.5859502826270374691362975419147645151233e-2467L),
9878 #endif
9879     END_DATA (j0)
9880   };
9882 static void
9883 j0_test (void)
9885   FLOAT s, c;
9886   errno = 0;
9887   FUNC (sincos) (0, &s, &c);
9888   if (errno == ENOSYS)
9889     /* Required function not implemented.  */
9890     return;
9891   FUNC(j0) (0);
9892   if (errno == ENOSYS)
9893     /* Function not implemented.  */
9894     return;
9896   START (j0);
9897   RUN_TEST_LOOP_f_f (j0, j0_test_data, );
9898   END (j0);
9902 static const struct test_f_f_data j1_test_data[] =
9903   {
9904     START_DATA (j1),
9905     /* j1 is the Bessel function of the first kind of order 1 */
9906     TEST_f_f (j1, qnan_value, qnan_value),
9907     TEST_f_f (j1, plus_infty, 0),
9909     TEST_f_f (j1, -1.0, -0.440050585744933515959682203718914913L),
9910     TEST_f_f (j1, 0.0, 0.0),
9911     TEST_f_f (j1, 0.125L, 0.0623780091344946810942311355879361177L),
9912     TEST_f_f (j1, 0.75L, 0.349243602174862192523281016426251335L),
9913     TEST_f_f (j1, 1.0, 0.440050585744933515959682203718914913L),
9914     TEST_f_f (j1, 1.5, 0.557936507910099641990121213156089400L),
9915     TEST_f_f (j1, 2.0, 0.576724807756873387202448242269137087L),
9916     TEST_f_f (j1, 8.0, 0.234636346853914624381276651590454612L),
9917     TEST_f_f (j1, 10.0, 0.0434727461688614366697487680258592883L),
9919     TEST_f_f (j1, 0x1.3ffp+74L, 1.818984347516051243459364437186082741567e-12L),
9921 #ifndef TEST_FLOAT
9922     TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
9923     TEST_f_f (j1, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
9924 #endif
9926 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9927     TEST_f_f (j1, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
9928     TEST_f_f (j1, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
9929 #endif
9930     END_DATA (j1)
9931   };
9933 static void
9934 j1_test (void)
9936   FLOAT s, c;
9937   errno = 0;
9938   FUNC (sincos) (0, &s, &c);
9939   if (errno == ENOSYS)
9940     /* Required function not implemented.  */
9941     return;
9942   FUNC(j1) (0);
9943   if (errno == ENOSYS)
9944     /* Function not implemented.  */
9945     return;
9947   START (j1);
9948   RUN_TEST_LOOP_f_f (j1, j1_test_data, );
9949   END (j1);
9952 static const struct test_if_f_data jn_test_data[] =
9953   {
9954     START_DATA (jn),
9955     /* jn is the Bessel function of the first kind of order n.  */
9956     /* jn (0, x) == j0 (x)  */
9957     TEST_if_f (jn, 0, qnan_value, qnan_value),
9958     TEST_if_f (jn, 0, plus_infty, 0),
9959     TEST_if_f (jn, 0, -1.0, 0.765197686557966551449717526102663221L),
9960     TEST_if_f (jn, 0, 0.0, 1.0),
9961     TEST_if_f (jn, 0, 0.125L, 0.996097563041985204620768999453174712L),
9962     TEST_if_f (jn, 0, 0.75L, 0.864242275166648623555731103820923211L),
9963     TEST_if_f (jn, 0, 1.0, 0.765197686557966551449717526102663221L),
9964     TEST_if_f (jn, 0, 1.5, 0.511827671735918128749051744283411720L),
9965     TEST_if_f (jn, 0, 2.0, 0.223890779141235668051827454649948626L),
9966     TEST_if_f (jn, 0, 8.0, 0.171650807137553906090869407851972001L),
9967     TEST_if_f (jn, 0, 10.0, -0.245935764451348335197760862485328754L),
9968     TEST_if_f (jn, 0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
9969     TEST_if_f (jn, 0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
9971     /* jn (1, x) == j1 (x)  */
9972     TEST_if_f (jn, 1, qnan_value, qnan_value),
9973     TEST_if_f (jn, 1, plus_infty, 0),
9974     TEST_if_f (jn, 1, -1.0, -0.440050585744933515959682203718914913L),
9975     TEST_if_f (jn, 1, 0.0, 0.0),
9976     TEST_if_f (jn, 1, 0.125L, 0.0623780091344946810942311355879361177L),
9977     TEST_if_f (jn, 1, 0.75L, 0.349243602174862192523281016426251335L),
9978     TEST_if_f (jn, 1, 1.0, 0.440050585744933515959682203718914913L),
9979     TEST_if_f (jn, 1, 1.5, 0.557936507910099641990121213156089400L),
9980     TEST_if_f (jn, 1, 2.0, 0.576724807756873387202448242269137087L),
9981     TEST_if_f (jn, 1, 8.0, 0.234636346853914624381276651590454612L),
9982     TEST_if_f (jn, 1, 10.0, 0.0434727461688614366697487680258592883L),
9984     /* jn (3, x)  */
9985     TEST_if_f (jn, 3, qnan_value, qnan_value),
9986     TEST_if_f (jn, 3, plus_infty, 0),
9988     TEST_if_f (jn, 3, -1.0, -0.0195633539826684059189053216217515083L),
9989     TEST_if_f (jn, 3, 0.0, 0.0),
9990     TEST_if_f (jn, 3, 0.125L, 0.406503832554912875023029337653442868e-4L),
9991     TEST_if_f (jn, 3, 0.75L, 0.848438342327410884392755236884386804e-2L),
9992     TEST_if_f (jn, 3, 1.0, 0.0195633539826684059189053216217515083L),
9993     TEST_if_f (jn, 3, 2.0, 0.128943249474402051098793332969239835L),
9994     TEST_if_f (jn, 3, 10.0, 0.0583793793051868123429354784103409563L),
9996     /*  jn (10, x)  */
9997     TEST_if_f (jn, 10, qnan_value, qnan_value),
9998     TEST_if_f (jn, 10, plus_infty, 0),
10000     TEST_if_f (jn, 10, -1.0, 0.263061512368745320699785368779050294e-9L),
10001     TEST_if_f (jn, 10, 0.0, 0.0),
10002     TEST_if_f (jn, 10, 0.125L, 0.250543369809369890173993791865771547e-18L),
10003     TEST_if_f (jn, 10, 0.75L, 0.149621713117596814698712483621682835e-10L),
10004     TEST_if_f (jn, 10, 1.0, 0.263061512368745320699785368779050294e-9L),
10005     TEST_if_f (jn, 10, 2.0, 0.251538628271673670963516093751820639e-6L),
10006     TEST_if_f (jn, 10, 10.0, 0.207486106633358857697278723518753428L),
10008     /* BZ #11589 .*/
10009     TEST_if_f (jn, 2, 2.4048255576957729L, 0.43175480701968038399746111312430703L),
10010     TEST_if_f (jn, 3, 2.4048255576957729L, 0.19899990535769083404042146764530813L),
10011     TEST_if_f (jn, 4, 2.4048255576957729L, 0.647466661641779720084932282551219891E-1L),
10012     TEST_if_f (jn, 5, 2.4048255576957729L, 0.163892432048058525099230549946147698E-1L),
10013     TEST_if_f (jn, 6, 2.4048255576957729L, 0.34048184720278336646673682895929161E-2L),
10014     TEST_if_f (jn, 7, 2.4048255576957729L, 0.60068836573295394221291569249883076E-3L),
10015     TEST_if_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L),
10016     TEST_if_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L),
10018     /* Bug 14155: spurious exception may occur.  */
10019     TEST_if_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L, UNDERFLOW_EXCEPTION_OK),
10020     END_DATA (jn)
10021   };
10023 static void
10024 jn_test (void)
10026   FLOAT s, c;
10027   errno = 0;
10028   FUNC (sincos) (0, &s, &c);
10029   if (errno == ENOSYS)
10030     /* Required function not implemented.  */
10031     return;
10032   FUNC(jn) (1, 1);
10033   if (errno == ENOSYS)
10034     /* Function not implemented.  */
10035     return;
10037   START (jn);
10038   RUN_TEST_LOOP_if_f (jn, jn_test_data, );
10039   END (jn);
10043 static void
10044 ldexp_test (void)
10046   START (ldexp);
10048   TEST_fi_f (ldexp, 0, 0, 0);
10049   TEST_fi_f (ldexp, minus_zero, 0, minus_zero);
10051   TEST_fi_f (ldexp, plus_infty, 1, plus_infty);
10052   TEST_fi_f (ldexp, minus_infty, 1, minus_infty);
10053   TEST_fi_f (ldexp, qnan_value, 1, qnan_value);
10055   TEST_fi_f (ldexp, 0.8L, 4, 12.8L);
10056   TEST_fi_f (ldexp, -0.854375L, 5, -27.34L);
10058   /* ldexp (x, 0) == x.  */
10059   TEST_fi_f (ldexp, 1.0L, 0L, 1.0L);
10061   END (ldexp);
10065 static void
10066 lgamma_test (void)
10068   errno = 0;
10069   FUNC(lgamma) (0);
10070   if (errno == ENOSYS)
10071     /* Function not implemented.  */
10072     return;
10074   START (lgamma);
10076   TEST_f_f1 (lgamma, plus_infty, plus_infty, 1);
10077   TEST_f_f1 (lgamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
10078   TEST_f_f1 (lgamma, minus_zero, plus_infty, -1, DIVIDE_BY_ZERO_EXCEPTION);
10079   TEST_f_f1 (lgamma, qnan_value, qnan_value, IGNORE);
10081   /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0.  */
10082   TEST_f_f1 (lgamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
10083   TEST_f_f1 (lgamma, minus_infty, plus_infty, IGNORE);
10084   TEST_f_f1 (lgamma, -max_value, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
10085   TEST_f_f1 (lgamma, max_value, plus_infty, 1, OVERFLOW_EXCEPTION);
10087   TEST_f_f1 (lgamma, 1, 0, 1);
10089   TEST_f_f1 (lgamma, 3, M_LN2l, 1);
10091   TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
10092   TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
10093   TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1);
10094   TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1);
10096   END (lgamma);
10100 static void
10101 lrint_test (void)
10103   /* XXX this test is incomplete.  We need to have a way to specifiy
10104      the rounding method and test the critical cases.  So far, only
10105      unproblematic numbers are tested.  */
10106   /* TODO: missing +/-Inf as well as qNaN tests.  */
10108   START (lrint);
10110   TEST_f_l (lrint, 0.0, 0);
10111   TEST_f_l (lrint, minus_zero, 0);
10112   TEST_f_l (lrint, 0.2L, 0);
10113   TEST_f_l (lrint, -0.2L, 0);
10115   TEST_f_l (lrint, 1.4L, 1);
10116   TEST_f_l (lrint, -1.4L, -1);
10118   TEST_f_l (lrint, 8388600.3L, 8388600);
10119   TEST_f_l (lrint, -8388600.3L, -8388600);
10121   TEST_f_l (lrint, 1071930.0008, 1071930);
10122 #ifndef TEST_FLOAT
10123   TEST_f_l (lrint, 1073741824.01, 1073741824);
10124 # if LONG_MAX > 281474976710656
10125   TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10126 # endif
10127 #endif
10129   END (lrint);
10133 static void
10134 lrint_test_tonearest (void)
10136   int save_round_mode;
10137   START (lrint_tonearest);
10139   save_round_mode = fegetround ();
10141   if (!fesetround (FE_TONEAREST))
10142     {
10143       TEST_f_l (lrint, 0.0, 0);
10144       TEST_f_l (lrint, minus_zero, 0);
10145       TEST_f_l (lrint, 0.2L, 0);
10146       TEST_f_l (lrint, -0.2L, 0);
10147       TEST_f_l (lrint, 0.5L, 0);
10148       TEST_f_l (lrint, -0.5L, 0);
10149       TEST_f_l (lrint, 0.8L, 1);
10150       TEST_f_l (lrint, -0.8L, -1);
10152       TEST_f_l (lrint, 1.4L, 1);
10153       TEST_f_l (lrint, -1.4L, -1);
10155       TEST_f_l (lrint, 8388600.3L, 8388600);
10156       TEST_f_l (lrint, -8388600.3L, -8388600);
10158       TEST_f_l (lrint, 1071930.0008, 1071930);
10159 #ifndef TEST_FLOAT
10160       TEST_f_l (lrint, 1073741824.01, 1073741824);
10161 # if LONG_MAX > 281474976710656
10162       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10163 # endif
10164 #endif
10165     }
10167   fesetround (save_round_mode);
10169   END (lrint_tonearest);
10173 static void
10174 lrint_test_towardzero (void)
10176   int save_round_mode;
10177   START (lrint_towardzero);
10179   save_round_mode = fegetround ();
10181   if (!fesetround (FE_TOWARDZERO))
10182     {
10183       TEST_f_l (lrint, 0.0, 0);
10184       TEST_f_l (lrint, minus_zero, 0);
10185       TEST_f_l (lrint, 0.2L, 0);
10186       TEST_f_l (lrint, -0.2L, 0);
10187       TEST_f_l (lrint, 0.5L, 0);
10188       TEST_f_l (lrint, -0.5L, 0);
10189       TEST_f_l (lrint, 0.8L, 0);
10190       TEST_f_l (lrint, -0.8L, 0);
10192       TEST_f_l (lrint, 1.4L, 1);
10193       TEST_f_l (lrint, -1.4L, -1);
10195       TEST_f_l (lrint, 8388600.3L, 8388600);
10196       TEST_f_l (lrint, -8388600.3L, -8388600);
10198       TEST_f_l (lrint, 1071930.0008, 1071930);
10199 #ifndef TEST_FLOAT
10200       TEST_f_l (lrint, 1073741824.01, 1073741824);
10201 # if LONG_MAX > 281474976710656
10202       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10203 # endif
10204 #endif
10205     }
10207   fesetround (save_round_mode);
10209   END (lrint_towardzero);
10213 static void
10214 lrint_test_downward (void)
10216   int save_round_mode;
10217   START (lrint_downward);
10219   save_round_mode = fegetround ();
10221   if (!fesetround (FE_DOWNWARD))
10222     {
10223       TEST_f_l (lrint, 0.0, 0);
10224       TEST_f_l (lrint, minus_zero, 0);
10225       TEST_f_l (lrint, 0.2L, 0);
10226       TEST_f_l (lrint, -0.2L, -1);
10227       TEST_f_l (lrint, 0.5L, 0);
10228       TEST_f_l (lrint, -0.5L, -1);
10229       TEST_f_l (lrint, 0.8L, 0);
10230       TEST_f_l (lrint, -0.8L, -1);
10232       TEST_f_l (lrint, 1.4L, 1);
10233       TEST_f_l (lrint, -1.4L, -2);
10235       TEST_f_l (lrint, 8388600.3L, 8388600);
10236       TEST_f_l (lrint, -8388600.3L, -8388601);
10238       TEST_f_l (lrint, 1071930.0008, 1071930);
10239 #ifndef TEST_FLOAT
10240       TEST_f_l (lrint, 1073741824.01, 1073741824);
10241 # if LONG_MAX > 281474976710656
10242       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10243 # endif
10244 #endif
10245     }
10247   fesetround (save_round_mode);
10249   END (lrint_downward);
10253 static void
10254 lrint_test_upward (void)
10256   int save_round_mode;
10257   START (lrint_upward);
10259   save_round_mode = fegetround ();
10261   if (!fesetround (FE_UPWARD))
10262     {
10263       TEST_f_l (lrint, 0.0, 0);
10264       TEST_f_l (lrint, minus_zero, 0);
10265       TEST_f_l (lrint, 0.2L, 1);
10266       TEST_f_l (lrint, -0.2L, 0);
10267       TEST_f_l (lrint, 0.5L, 1);
10268       TEST_f_l (lrint, -0.5L, 0);
10269       TEST_f_l (lrint, 0.8L, 1);
10270       TEST_f_l (lrint, -0.8L, 0);
10272       TEST_f_l (lrint, 1.4L, 2);
10273       TEST_f_l (lrint, -1.4L, -1);
10275       TEST_f_l (lrint, 8388600.3L, 8388601);
10276       TEST_f_l (lrint, -8388600.3L, -8388600);
10278 #ifndef TEST_FLOAT
10279       TEST_f_l (lrint, 1071930.0008, 1071931);
10280       TEST_f_l (lrint, 1073741824.01, 1073741825);
10281 # if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
10282       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10283 # endif
10284 #endif
10285     }
10287   fesetround (save_round_mode);
10289   END (lrint_upward);
10293 static void
10294 llrint_test (void)
10296   /* XXX this test is incomplete.  We need to have a way to specifiy
10297      the rounding method and test the critical cases.  So far, only
10298      unproblematic numbers are tested.  */
10299   /* TODO: missing +/-Inf as well as qNaN tests.  */
10301   START (llrint);
10303   TEST_f_L (llrint, 0.0, 0);
10304   TEST_f_L (llrint, minus_zero, 0);
10305   TEST_f_L (llrint, 0.2L, 0);
10306   TEST_f_L (llrint, -0.2L, 0);
10308   TEST_f_L (llrint, 1.4L, 1);
10309   TEST_f_L (llrint, -1.4L, -1);
10311   TEST_f_L (llrint, 8388600.3L, 8388600);
10312   TEST_f_L (llrint, -8388600.3L, -8388600);
10314   TEST_f_l (llrint, 1071930.0008, 1071930);
10316   /* Test boundary conditions.  */
10317   /* 0x1FFFFF */
10318   TEST_f_L (llrint, 2097151.0,2097151LL);
10319   /* 0x800000 */
10320   TEST_f_L (llrint, 8388608.0, 8388608LL);
10321   /* 0x1000000 */
10322   TEST_f_L (llrint, 16777216.0, 16777216LL);
10323   /* 0x20000000000 */
10324   TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10325   /* 0x40000000000 */
10326   TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10327   /* 0x1000000000000 */
10328   TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10329   /* 0x10000000000000 */
10330   TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10331   /* 0x10000080000000 */
10332   TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10333   /* 0x20000000000000 */
10334   TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10335   /* 0x80000000000000 */
10336   TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10337   /* 0x100000000000000 */
10338   TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10339 #ifdef TEST_LDOUBLE
10340   /* The input can only be represented in long double.  */
10341   TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10342   TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10343   TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10344   TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10345   TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10347   TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10348   TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10349   TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10350   TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10351   TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10353 # if LDBL_MANT_DIG > 100
10354   TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10355   TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10356   TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10357   TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10358   TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10359   TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10361   TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10362   TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10363   TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10364   TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10365   TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10366   TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10367 #endif
10369   TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10370   TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10371   TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10372   TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10373   TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10375   TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10376   TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10377   TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10378   TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10379   TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10381 # if LDBL_MANT_DIG > 100
10382   TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10383   TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10384   TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10385   TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10386   TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10387   TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10389   TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10390   TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10391   TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10392   TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10393   TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10394   TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10395 #endif
10397   TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10398   TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10399   TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10400   TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10401   TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10403   TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10404   TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10405   TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10406   TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10407   TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10409 # if LDBL_MANT_DIG > 100
10410   TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10411   TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10412   TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10413   TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10414   TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10415   TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10416   TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10417   TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10418   TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10419   TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10420   TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10421   TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10422 # endif
10423 #endif
10425   END (llrint);
10428 static void
10429 llrint_test_tonearest (void)
10431   int save_round_mode;
10432   START (llrint_tonearest);
10434   save_round_mode = fegetround ();
10436   if (!fesetround (FE_TONEAREST))
10437     {
10438       TEST_f_L (llrint, 0.0, 0);
10439       TEST_f_L (llrint, minus_zero, 0);
10440       TEST_f_L (llrint, 0.2L, 0);
10441       TEST_f_L (llrint, -0.2L, 0);
10443       TEST_f_L (llrint, 1.4L, 1);
10444       TEST_f_L (llrint, -1.4L, -1);
10446       TEST_f_L (llrint, 8388600.3L, 8388600);
10447       TEST_f_L (llrint, -8388600.3L, -8388600);
10449       TEST_f_l (llrint, 1071930.0008, 1071930);
10451       /* Test boundary conditions.  */
10452       /* 0x1FFFFF */
10453       TEST_f_L (llrint, 2097151.0,2097151LL);
10454       /* 0x800000 */
10455       TEST_f_L (llrint, 8388608.0, 8388608LL);
10456       /* 0x1000000 */
10457       TEST_f_L (llrint, 16777216.0, 16777216LL);
10458       /* 0x20000000000 */
10459       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10460       /* 0x40000000000 */
10461       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10462       /* 0x1000000000000 */
10463       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10464       /* 0x10000000000000 */
10465       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10466       /* 0x10000080000000 */
10467       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10468       /* 0x20000000000000 */
10469       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10470       /* 0x80000000000000 */
10471       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10472       /* 0x100000000000000 */
10473       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10474 #ifdef TEST_LDOUBLE
10475       /* The input can only be represented in long double.  */
10476       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10477       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10478       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10479       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10480       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10482       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10483       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10484       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10485       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10486       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10488 # if LDBL_MANT_DIG > 100
10489       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10490       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10491       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10492       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10493       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10494       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10496       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10497       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10498       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10499       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10500       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10501       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10502 #endif
10504       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10505       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10506       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10507       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10508       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10510       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10511       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10512       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10513       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10514       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10516 # if LDBL_MANT_DIG > 100
10517       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10518       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10519       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10520       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10521       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10522       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10524       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10525       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10526       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10527       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10528       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10529       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10530 #endif
10532       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10533       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10534       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10535       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10536       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10538       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10539       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10540       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10541       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10542       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10544 # if LDBL_MANT_DIG > 100
10545       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10546       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10547       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10548       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10549       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10550       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10551       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10552       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10553       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10554       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10555       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10556       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10557 # endif
10558 #endif
10559     }
10561   fesetround (save_round_mode);
10563   END (llrint_tonearest);
10566 static void
10567 llrint_test_towardzero (void)
10569   int save_round_mode;
10570   START (llrint_towardzero);
10572   save_round_mode = fegetround ();
10574   if (!fesetround (FE_TOWARDZERO))
10575     {
10576       TEST_f_L (llrint, 0.0, 0);
10577       TEST_f_L (llrint, minus_zero, 0);
10578       TEST_f_L (llrint, 0.2L, 0);
10579       TEST_f_L (llrint, -0.2L, 0);
10581       TEST_f_L (llrint, 1.4L, 1);
10582       TEST_f_L (llrint, -1.4L, -1);
10584       TEST_f_L (llrint, 8388600.3L, 8388600);
10585       TEST_f_L (llrint, -8388600.3L, -8388600);
10587       TEST_f_l (llrint, 1071930.0008, 1071930);
10589       /* Test boundary conditions.  */
10590       /* 0x1FFFFF */
10591       TEST_f_L (llrint, 2097151.0,2097151LL);
10592       /* 0x800000 */
10593       TEST_f_L (llrint, 8388608.0, 8388608LL);
10594       /* 0x1000000 */
10595       TEST_f_L (llrint, 16777216.0, 16777216LL);
10596       /* 0x20000000000 */
10597       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10598       /* 0x40000000000 */
10599       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10600       /* 0x1000000000000 */
10601       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10602       /* 0x10000000000000 */
10603       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10604       /* 0x10000080000000 */
10605       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10606       /* 0x20000000000000 */
10607       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10608       /* 0x80000000000000 */
10609       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10610       /* 0x100000000000000 */
10611       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10612 #ifdef TEST_LDOUBLE
10613       /* The input can only be represented in long double.  */
10614       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10615       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10616       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10617       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10618       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10620       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10621       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10622       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10623       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10624       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10626 # if LDBL_MANT_DIG > 100
10627       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10628       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10629       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10630       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10631       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10632       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10634       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10635       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10636       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10637       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10638       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10639       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10640 #endif
10642       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10643       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10644       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10645       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10646       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10648       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10649       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10650       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10651       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10652       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10654 # if LDBL_MANT_DIG > 100
10655       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10656       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10657       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10658       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10659       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10660       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10662       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10663       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10664       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10665       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10666       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10667       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10668 #endif
10670       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10671       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10672       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10673       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10674       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10676       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10677       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10678       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10679       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10680       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10682 # if LDBL_MANT_DIG > 100
10683       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10684       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10685       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10686       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10687       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10688       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10689       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10690       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10691       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10692       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10693       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10694       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10695 # endif
10696 #endif
10697     }
10699   fesetround (save_round_mode);
10701   END (llrint_towardzero);
10704 static void
10705 llrint_test_downward (void)
10707   int save_round_mode;
10708   START (llrint_downward);
10710   save_round_mode = fegetround ();
10712   if (!fesetround (FE_DOWNWARD))
10713     {
10714       TEST_f_L (llrint, 0.0, 0);
10715       TEST_f_L (llrint, minus_zero, 0);
10716       TEST_f_L (llrint, 0.2L, 0);
10717       TEST_f_L (llrint, -0.2L, -1);
10719       TEST_f_L (llrint, 1.4L, 1);
10720       TEST_f_L (llrint, -1.4L, -2);
10722       TEST_f_L (llrint, 8388600.3L, 8388600);
10723       TEST_f_L (llrint, -8388600.3L, -8388601);
10725       TEST_f_l (llrint, 1071930.0008, 1071930);
10727       /* Test boundary conditions.  */
10728       /* 0x1FFFFF */
10729       TEST_f_L (llrint, 2097151.0,2097151LL);
10730       /* 0x800000 */
10731       TEST_f_L (llrint, 8388608.0, 8388608LL);
10732       /* 0x1000000 */
10733       TEST_f_L (llrint, 16777216.0, 16777216LL);
10734       /* 0x20000000000 */
10735       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10736       /* 0x40000000000 */
10737       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10738       /* 0x1000000000000 */
10739       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10740       /* 0x10000000000000 */
10741       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10742       /* 0x10000080000000 */
10743       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10744       /* 0x20000000000000 */
10745       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10746       /* 0x80000000000000 */
10747       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10748       /* 0x100000000000000 */
10749       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10750 #ifdef TEST_LDOUBLE
10751       /* The input can only be represented in long double.  */
10752       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10753       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10754       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10755       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10756       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10758       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10759       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10760       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10761       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10762       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10763       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10765       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10766       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370497LL);
10767       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370497LL);
10768       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10769       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10771       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370496LL);
10772       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370497LL);
10773       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370498LL);
10774       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10775       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10776       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10778       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10779       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10780       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10781       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10782       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10784       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10785       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10786       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10787       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10788       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10789       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10791       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10792       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740993LL);
10793       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740993LL);
10794       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10795       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10797       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740992LL);
10798       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740993LL);
10799       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740994LL);
10800       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10801       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10802       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10804       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10805       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10806       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10807       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10808       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10810       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10811       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927937LL);
10812       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927937LL);
10813       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10814       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10816 # if LDBL_MANT_DIG > 100
10817       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10818       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10819       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10820       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10821       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10822       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775807LL);
10823       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10824       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775807LL);
10825       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10826       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10827       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10828       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10829 # endif
10830 #endif
10831     }
10833   fesetround (save_round_mode);
10835   END (llrint_downward);
10838 static void
10839 llrint_test_upward (void)
10841   int save_round_mode;
10842   START (llrint_upward);
10844   save_round_mode = fegetround ();
10846   if (!fesetround (FE_UPWARD))
10847     {
10848       TEST_f_L (llrint, 0.0, 0);
10849       TEST_f_L (llrint, minus_zero, 0);
10850       TEST_f_L (llrint, 0.2L, 1);
10851       TEST_f_L (llrint, -0.2L, 0);
10853       TEST_f_L (llrint, 1.4L, 2);
10854       TEST_f_L (llrint, -1.4L, -1);
10856       TEST_f_L (llrint, 8388600.3L, 8388601);
10857       TEST_f_L (llrint, -8388600.3L, -8388600);
10858 #ifndef TEST_FLOAT
10859       TEST_f_l (llrint, 1071930.0008, 1071931);
10860 #endif
10861       /* Test boundary conditions.  */
10862       /* 0x1FFFFF */
10863       TEST_f_L (llrint, 2097151.0,2097151LL);
10864       /* 0x800000 */
10865       TEST_f_L (llrint, 8388608.0, 8388608LL);
10866       /* 0x1000000 */
10867       TEST_f_L (llrint, 16777216.0, 16777216LL);
10868       /* 0x20000000000 */
10869       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10870       /* 0x40000000000 */
10871       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10872       /* 0x1000000000000 */
10873       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10874       /* 0x10000000000000 */
10875       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10876       /* 0x10000080000000 */
10877       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10878       /* 0x20000000000000 */
10879       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10880       /* 0x80000000000000 */
10881       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10882       /* 0x100000000000000 */
10883       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10884 #ifdef TEST_LDOUBLE
10885       /* The input can only be represented in long double.  */
10886       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10887       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370497LL);
10888       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370497LL);
10889       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10890       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10892       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370496LL);
10893       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370497LL);
10894       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370498LL);
10895       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10896       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10897       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10899       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10900       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10901       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10902       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10903       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10905       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10906       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10907       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10908       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10909       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10910       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10912       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10913       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740993LL);
10914       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740993LL);
10915       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10916       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10918       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740992LL);
10919       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740993LL);
10920       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740994LL);
10921       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10922       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10923       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10925       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10926       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10927       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10928       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10929       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10931       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10932       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10933       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10934       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10935       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10936       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10938       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10939       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927937LL);
10940       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927937LL);
10941       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10942       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10944       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10945       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10946       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10947       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10948       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10950 # if LDBL_MANT_DIG > 100
10951       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10952       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10953       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10954       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10955       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775807LL);
10956       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10957       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775807L);
10958       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10959       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10960       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10961       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10962       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10963 # endif
10964 #endif
10965     }
10967   fesetround (save_round_mode);
10969   END (llrint_upward);
10973 static const struct test_f_f_data log_test_data[] =
10974   {
10975     START_DATA (log),
10976     TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
10977     TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
10979     TEST_f_f (log, 1, 0),
10981     TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION),
10982     TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION),
10983     TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION),
10984     TEST_f_f (log, plus_infty, plus_infty),
10985     TEST_f_f (log, qnan_value, qnan_value),
10987     TEST_f_f (log, M_El, 1),
10988     TEST_f_f (log, M_1_DIV_El, -1),
10989     TEST_f_f (log, 2, M_LN2l),
10990     TEST_f_f (log, 10, M_LN10l),
10991     TEST_f_f (log, 0.75L, -0.287682072451780927439219005993827432L),
10992     END_DATA (log)
10993   };
10995 static void
10996 log_test (void)
10998   errno = 0;
10999   FUNC(log) (1);
11000   if (errno == ENOSYS)
11001     /* Function not implemented.  */
11002     return;
11003   START (log);
11004   RUN_TEST_LOOP_f_f (log, log_test_data, );
11005   END (log);
11009 static const struct test_f_f_data log10_test_data[] =
11010   {
11011     START_DATA (log10),
11012     TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11013     TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11015     TEST_f_f (log10, 1, 0),
11017     /* log10 (x) == qNaN plus invalid exception if x < 0.  */
11018     TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION),
11019     TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION),
11020     TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION),
11022     TEST_f_f (log10, plus_infty, plus_infty),
11023     TEST_f_f (log10, qnan_value, qnan_value),
11025     TEST_f_f (log10, 0.1L, -1),
11026     TEST_f_f (log10, 10.0, 1),
11027     TEST_f_f (log10, 100.0, 2),
11028     TEST_f_f (log10, 10000.0, 4),
11029     TEST_f_f (log10, M_El, M_LOG10El),
11030     TEST_f_f (log10, 0.75L, -0.124938736608299953132449886193870744L),
11031     END_DATA (log10)
11032   };
11034 static void
11035 log10_test (void)
11037   errno = 0;
11038   FUNC(log10) (1);
11039   if (errno == ENOSYS)
11040     /* Function not implemented.  */
11041     return;
11043   START (log10);
11044   RUN_TEST_LOOP_f_f (log10, log10_test_data, );
11045   END (log10);
11049 static const struct test_f_f_data log1p_test_data[] =
11050   {
11051     START_DATA (log1p),
11052     TEST_f_f (log1p, 0, 0),
11053     TEST_f_f (log1p, minus_zero, minus_zero),
11055     TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11056     TEST_f_f (log1p, -2, qnan_value, INVALID_EXCEPTION),
11057     TEST_f_f (log1p, -max_value, qnan_value, INVALID_EXCEPTION),
11058     TEST_f_f (log1p, minus_infty, qnan_value, INVALID_EXCEPTION),
11060     TEST_f_f (log1p, plus_infty, plus_infty),
11061     TEST_f_f (log1p, qnan_value, qnan_value),
11063     TEST_f_f (log1p, M_El - 1.0, 1),
11065     TEST_f_f (log1p, -0.25L, -0.287682072451780927439219005993827432L),
11066     TEST_f_f (log1p, -0.875, -2.07944154167983592825169636437452970L),
11067     END_DATA (log1p)
11068   };
11070 static void
11071 log1p_test (void)
11073   errno = 0;
11074   FUNC(log1p) (0);
11075   if (errno == ENOSYS)
11076     /* Function not implemented.  */
11077     return;
11079   START (log1p);
11080   RUN_TEST_LOOP_f_f (log1p, log1p_test_data, );
11081   END (log1p);
11085 static const struct test_f_f_data log2_test_data[] =
11086   {
11087     START_DATA (log2),
11088     TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11089     TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11091     TEST_f_f (log2, 1, 0),
11093     TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION),
11094     TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION),
11095     TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION),
11097     TEST_f_f (log2, plus_infty, plus_infty),
11098     TEST_f_f (log2, qnan_value, qnan_value),
11100     TEST_f_f (log2, M_El, M_LOG2El),
11101     TEST_f_f (log2, 2.0, 1),
11102     TEST_f_f (log2, 16.0, 4),
11103     TEST_f_f (log2, 256.0, 8),
11104     TEST_f_f (log2, 0.75L, -.415037499278843818546261056052183492L),
11105     END_DATA (log2)
11106   };
11108 static void
11109 log2_test (void)
11111   errno = 0;
11112   FUNC(log2) (1);
11113   if (errno == ENOSYS)
11114     /* Function not implemented.  */
11115     return;
11117   START (log2);
11118   RUN_TEST_LOOP_f_f (log2, log2_test_data, );
11119   END (log2);
11123 static const struct test_f_f_data logb_test_data[] =
11124   {
11125     START_DATA (logb),
11126     TEST_f_f (logb, plus_infty, plus_infty),
11127     TEST_f_f (logb, minus_infty, plus_infty),
11129     TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11131     TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11132     TEST_f_f (logb, qnan_value, qnan_value),
11134     TEST_f_f (logb, 1, 0),
11135     TEST_f_f (logb, M_El, 1),
11136     TEST_f_f (logb, 1024, 10),
11137     TEST_f_f (logb, -2000, 10),
11139     TEST_f_f (logb, 0x0.1p-127, -131),
11140     TEST_f_f (logb, 0x0.01p-127, -135),
11141     TEST_f_f (logb, 0x0.011p-127, -135),
11142 #ifndef TEST_FLOAT
11143     TEST_f_f (logb, 0x0.8p-1022, -1023),
11144     TEST_f_f (logb, 0x0.1p-1022, -1026),
11145     TEST_f_f (logb, 0x0.00111p-1022, -1034),
11146     TEST_f_f (logb, 0x0.00001p-1022, -1042),
11147     TEST_f_f (logb, 0x0.000011p-1022, -1042),
11148     TEST_f_f (logb, 0x0.0000000000001p-1022, -1074),
11149 #endif
11150 #if defined TEST_LDOUBLE && LDBL_MIN_EXP - LDBL_MANT_DIG <= -16400
11151     TEST_f_f (logb, 0x1p-16400L, -16400),
11152     TEST_f_f (logb, 0x.00000000001p-16382L, -16426),
11153 #endif
11154     END_DATA (logb)
11155   };
11157 static void
11158 logb_test (void)
11160   START (logb);
11161   RUN_TEST_LOOP_f_f (logb, logb_test_data, );
11162   END (logb);
11165 static const struct test_f_f_data logb_downward_test_data[] =
11166   {
11167     START_DATA (logb_downward),
11168     /* IEEE 754-2008 says (section 5.3.3) that "logB(1) is +0.".  Libm
11169        should not return -0 from logb in any rounding mode.  PowerPC32 has
11170        failed with this test for power4 logb (and logbl on all PowerPC
11171        platforms) in the past due to instruction selection.  GCC PR 52775
11172        provides the availability of the fcfid insn in 32-bit mode which
11173        eliminates the use of fsub in this instance and prevents the negative
11174        signed 0.0.  */
11176     /* BZ #887  */
11177     TEST_f_f (logb, 1.000e+0, plus_zero),
11178     END_DATA (logb_downward)
11179   };
11181 static void
11182 logb_test_downward (void)
11184   errno = 0;
11186   FUNC(logb) (0);
11187   if (errno == ENOSYS)
11188     /* Function not implemented.  */
11189     return;
11191   START (logb_downward);
11192   RUN_TEST_LOOP_f_f (logb, logb_downward_test_data, FE_DOWNWARD);
11193   END (logb_downward);
11196 static void
11197 lround_test (void)
11199   /* TODO: missing +/-Inf as well as qNaN tests.  */
11201   START (lround);
11203   TEST_f_l (lround, 0, 0);
11204   TEST_f_l (lround, minus_zero, 0);
11205   TEST_f_l (lround, 0.2L, 0.0);
11206   TEST_f_l (lround, -0.2L, 0);
11207   TEST_f_l (lround, 0.5, 1);
11208   TEST_f_l (lround, -0.5, -1);
11209   TEST_f_l (lround, 0.8L, 1);
11210   TEST_f_l (lround, -0.8L, -1);
11211   TEST_f_l (lround, 1.5, 2);
11212   TEST_f_l (lround, -1.5, -2);
11213   TEST_f_l (lround, 22514.5, 22515);
11214   TEST_f_l (lround, -22514.5, -22515);
11215   TEST_f_l (lround, 1071930.0008, 1071930);
11216 #ifndef TEST_FLOAT
11217   TEST_f_l (lround, 1073741824.01, 1073741824);
11218 # if LONG_MAX > 281474976710656
11219   TEST_f_l (lround, 281474976710656.025, 281474976710656);
11220   TEST_f_l (lround, 18014398509481974, 18014398509481974);
11221 # endif
11222   TEST_f_l (lround, 2097152.5, 2097153);
11223   TEST_f_l (lround, -2097152.5, -2097153);
11224   /* nextafter(0.5,-1)  */
11225   TEST_f_l (lround, 0x1.fffffffffffffp-2, 0);
11226   /* nextafter(-0.5,1)  */
11227   TEST_f_l (lround, -0x1.fffffffffffffp-2, 0);
11228 #else
11229   /* nextafter(0.5,-1)  */
11230   TEST_f_l (lround, 0x1.fffffp-2, 0);
11231   /* nextafter(-0.5,1)  */
11232   TEST_f_l (lround, -0x1.fffffp-2, 0);
11233   TEST_f_l (lround, 0x1.fffffep+23, 16777215);
11234   TEST_f_l (lround, -0x1.fffffep+23, -16777215);
11235 #endif
11236   END (lround);
11240 static void
11241 llround_test (void)
11243   /* TODO: missing +/-Inf as well as qNaN tests.  */
11245   START (llround);
11247   TEST_f_L (llround, 0, 0);
11248   TEST_f_L (llround, minus_zero, 0);
11249   TEST_f_L (llround, 0.2L, 0.0);
11250   TEST_f_L (llround, -0.2L, 0);
11251   TEST_f_L (llround, 0.5, 1);
11252   TEST_f_L (llround, -0.5, -1);
11253   TEST_f_L (llround, 0.8L, 1);
11254   TEST_f_L (llround, -0.8L, -1);
11255   TEST_f_L (llround, 1.5, 2);
11256   TEST_f_L (llround, -1.5, -2);
11257   TEST_f_L (llround, 22514.5, 22515);
11258   TEST_f_L (llround, -22514.5, -22515);
11259   TEST_f_l (llround, 1071930.0008, 1071930);
11260 #ifndef TEST_FLOAT
11261   TEST_f_L (llround, 2097152.5, 2097153);
11262   TEST_f_L (llround, -2097152.5, -2097153);
11263   TEST_f_L (llround, 34359738368.5, 34359738369ll);
11264   TEST_f_L (llround, -34359738368.5, -34359738369ll);
11265   TEST_f_L (llround, -3.65309740835E17, -365309740835000000LL);
11266 #endif
11268   /* Test boundary conditions.  */
11269   /* 0x1FFFFF */
11270   TEST_f_L (llround, 2097151.0, 2097151LL);
11271   /* 0x800000 */
11272   TEST_f_L (llround, 8388608.0, 8388608LL);
11273   /* 0x1000000 */
11274   TEST_f_L (llround, 16777216.0, 16777216LL);
11275   /* 0x20000000000 */
11276   TEST_f_L (llround, 2199023255552.0, 2199023255552LL);
11277   /* 0x40000000000 */
11278   TEST_f_L (llround, 4398046511104.0, 4398046511104LL);
11279   /* 0x1000000000000 */
11280   TEST_f_L (llround, 281474976710656.0, 281474976710656LL);
11281   /* 0x10000000000000 */
11282   TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL);
11283   /* 0x10000080000000 */
11284   TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL);
11285   /* 0x20000000000000 */
11286   TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL);
11287   /* 0x80000000000000 */
11288   TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL);
11289   /* 0x100000000000000 */
11290   TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL);
11292 #ifndef TEST_FLOAT
11293   /* 0x100000000 */
11294   TEST_f_L (llround, 4294967295.5, 4294967296LL);
11295   /* 0x200000000 */
11296   TEST_f_L (llround, 8589934591.5, 8589934592LL);
11298   /* nextafter(0.5,-1)  */
11299   TEST_f_L (llround, 0x1.fffffffffffffp-2, 0);
11300   /* nextafter(-0.5,1)  */
11301   TEST_f_L (llround, -0x1.fffffffffffffp-2, 0);
11302   /* On PowerPC an exponent of '52' is the largest incrementally
11303    * representable sequence of whole-numbers in the 'double' range.  We test
11304    * lround to make sure that a guard bit set during the lround operation
11305    * hasn't forced an erroneous shift giving us an incorrect result.  The odd
11306    * numbers between +-(2^52+1 and 2^53-1) are affected since they have the
11307    * rightmost bit set.  */
11308   /* +-(2^52+1)  */
11309   TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL);
11310   TEST_f_L (llround, -0x1.0000000000001p+52,-4503599627370497LL);
11311   /* +-(2^53-1): Input is the last (positive and negative) incrementally
11312    * representable whole-number in the 'double' range that might round
11313    * erroneously.  */
11314   TEST_f_L (llround, 0x1.fffffffffffffp+52, 9007199254740991LL);
11315   TEST_f_L (llround, -0x1.fffffffffffffp+52, -9007199254740991LL);
11316 #else
11317   /* nextafter(0.5,-1)  */
11318   TEST_f_L (llround, 0x1.fffffep-2, 0);
11319   /* nextafter(-0.5,1)  */
11320   TEST_f_L (llround, -0x1.fffffep-2, 0);
11321   /* As above, on PowerPC an exponent of '23' is the largest incrementally
11322    * representable sequence of whole-numbers in the 'float' range.
11323    * Likewise, numbers between +-(2^23+1 and 2^24-1) are affected.  */
11324   TEST_f_L (llround, 0x1.000002p+23,8388609);
11325   TEST_f_L (llround, -0x1.000002p+23,-8388609);
11326   TEST_f_L (llround, 0x1.fffffep+23, 16777215);
11327   TEST_f_L (llround, -0x1.fffffep+23, -16777215);
11328 #endif
11331 #ifdef TEST_LDOUBLE
11332   /* The input can only be represented in long double.  */
11333   TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL);
11334   TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL);
11335   TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL);
11336   TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL);
11337   TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL);
11339 # if LDBL_MANT_DIG > 100
11340   TEST_f_L (llround, 4503599627370495.4999999999999L, 4503599627370495LL);
11341   TEST_f_L (llround, 4503599627370496.4999999999999L, 4503599627370496LL);
11342   TEST_f_L (llround, 4503599627370497.4999999999999L, 4503599627370497LL);
11343   TEST_f_L (llround, 4503599627370494.5000000000001L, 4503599627370495LL);
11344   TEST_f_L (llround, 4503599627370495.5000000000001L, 4503599627370496LL);
11345   TEST_f_L (llround, 4503599627370496.5000000000001L, 4503599627370497LL);
11347   TEST_f_L (llround, -4503599627370495.4999999999999L, -4503599627370495LL);
11348   TEST_f_L (llround, -4503599627370496.4999999999999L, -4503599627370496LL);
11349   TEST_f_L (llround, -4503599627370497.4999999999999L, -4503599627370497LL);
11350   TEST_f_L (llround, -4503599627370494.5000000000001L, -4503599627370495LL);
11351   TEST_f_L (llround, -4503599627370495.5000000000001L, -4503599627370496LL);
11352   TEST_f_L (llround, -4503599627370496.5000000000001L, -4503599627370497LL);
11353 # endif
11355   TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL);
11356   TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL);
11357   TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL);
11358   TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL);
11359   TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL);
11361   TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL);
11362   TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL);
11363   TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL);
11364   TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL);
11365   TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL);
11367 # if LDBL_MANT_DIG > 100
11368   TEST_f_L (llround, 9007199254740991.4999999999999L, 9007199254740991LL);
11369   TEST_f_L (llround, 9007199254740992.4999999999999L, 9007199254740992LL);
11370   TEST_f_L (llround, 9007199254740993.4999999999999L, 9007199254740993LL);
11371   TEST_f_L (llround, 9007199254740991.5000000000001L, 9007199254740992LL);
11372   TEST_f_L (llround, 9007199254740992.5000000000001L, 9007199254740993LL);
11373   TEST_f_L (llround, 9007199254740993.5000000000001L, 9007199254740994LL);
11375   TEST_f_L (llround, -9007199254740991.4999999999999L, -9007199254740991LL);
11376   TEST_f_L (llround, -9007199254740992.4999999999999L, -9007199254740992LL);
11377   TEST_f_L (llround, -9007199254740993.4999999999999L, -9007199254740993LL);
11378   TEST_f_L (llround, -9007199254740991.5000000000001L, -9007199254740992LL);
11379   TEST_f_L (llround, -9007199254740992.5000000000001L, -9007199254740993LL);
11380   TEST_f_L (llround, -9007199254740993.5000000000001L, -9007199254740994LL);
11381 # endif
11383   TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL);
11384   TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL);
11385   TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL);
11386   TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL);
11387   TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL);
11389   TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL);
11390   TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL);
11391   TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL);
11392   TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL);
11393   TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL);
11395   TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL);
11396   TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL);
11397   TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL);
11398   TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL);
11399   TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL);
11401   TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL);
11402   TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL);
11403   TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL);
11404   TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL);
11405   TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL);
11406   TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL);
11407 #endif
11409   END (llround);
11412 static void
11413 modf_test (void)
11415   FLOAT x;
11417   START (modf);
11419   TEST_fF_f1 (modf, plus_infty, 0, plus_infty);
11420   TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty);
11421   TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value);
11422   TEST_fF_f1 (modf, 0, 0, 0);
11423   TEST_fF_f1 (modf, 1.5, 0.5, 1);
11424   TEST_fF_f1 (modf, 2.5, 0.5, 2);
11425   TEST_fF_f1 (modf, -2.5, -0.5, -2);
11426   TEST_fF_f1 (modf, 20, 0, 20);
11427   TEST_fF_f1 (modf, 21, 0, 21);
11428   TEST_fF_f1 (modf, 89.5, 0.5, 89);
11430   END (modf);
11434 static const struct test_f_f_data nearbyint_test_data[] =
11435   {
11436     START_DATA (nearbyint),
11438     TEST_f_f (nearbyint, 0.0, 0.0),
11439     TEST_f_f (nearbyint, minus_zero, minus_zero),
11440     TEST_f_f (nearbyint, plus_infty, plus_infty),
11441     TEST_f_f (nearbyint, minus_infty, minus_infty),
11442     TEST_f_f (nearbyint, qnan_value, qnan_value),
11444     /* Subnormal values */
11445     TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307),
11446     TEST_f_f (nearbyint, -4.45015e-308, minus_zero),
11448     /* Default rounding mode is round to nearest.  */
11449     TEST_f_f (nearbyint, 0.5, 0.0),
11450     TEST_f_f (nearbyint, 1.5, 2.0),
11451     TEST_f_f (nearbyint, -0.5, minus_zero),
11452     TEST_f_f (nearbyint, -1.5, -2.0),
11454     TEST_f_f (nearbyint, 262144.75, 262145.0),
11455     TEST_f_f (nearbyint, 262142.75, 262143.0),
11456     TEST_f_f (nearbyint, 524286.75, 524287.0),
11457     TEST_f_f (nearbyint, 524288.75, 524289.0),
11459     TEST_f_f (nearbyint, 1048576.75, 1048577.0),
11460     TEST_f_f (nearbyint, 2097152.75, 2097153.0),
11461     TEST_f_f (nearbyint, 2492472.75, 2492473.0),
11462     TEST_f_f (nearbyint, 2886220.75, 2886221.0),
11463     TEST_f_f (nearbyint, 3058792.75, 3058793.0),
11464     TEST_f_f (nearbyint, -1048576.75, -1048577.0),
11465     TEST_f_f (nearbyint, -2097152.75, -2097153.0),
11466     TEST_f_f (nearbyint, -2492472.75, -2492473.0),
11467     TEST_f_f (nearbyint, -2886220.75, -2886221.0),
11468     TEST_f_f (nearbyint, -3058792.75, -3058793.0),
11469 #ifndef TEST_FLOAT
11470     TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0),
11471     TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0),
11472     TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0),
11473     TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0),
11474     TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0),
11475     TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0),
11476     TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0),
11477     TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0),
11478     TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0),
11479     TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0),
11480 #endif
11482     END_DATA (nearbyint)
11483   };
11485 static void
11486 nearbyint_test (void)
11488   START (nearbyint);
11489   RUN_TEST_LOOP_f_f (nearbyint, nearbyint_test_data, );
11490   END (nearbyint);
11493 static const struct test_ff_f_data nextafter_test_data[] =
11494   {
11495     START_DATA (nextafter),
11497     TEST_ff_f (nextafter, 0, 0, 0),
11498     TEST_ff_f (nextafter, minus_zero, 0, 0),
11499     TEST_ff_f (nextafter, 0, minus_zero, minus_zero),
11500     TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero),
11502     TEST_ff_f (nextafter, 9, 9, 9),
11503     TEST_ff_f (nextafter, -9, -9, -9),
11504     TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty),
11505     TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty),
11507     TEST_ff_f (nextafter, qnan_value, 1.1L, qnan_value),
11508     TEST_ff_f (nextafter, 1.1L, qnan_value, qnan_value),
11509     TEST_ff_f (nextafter, qnan_value, qnan_value, qnan_value),
11511     TEST_ff_f (nextafter, max_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
11512     TEST_ff_f (nextafter, -max_value, minus_infty, minus_infty, OVERFLOW_EXCEPTION),
11514 #ifdef TEST_LDOUBLE
11515     // XXX Enable once gcc is fixed.
11516     //TEST_ff_f (nextafter, 0x0.00000040000000000000p-16385L, -0.1L, 0x0.0000003ffffffff00000p-16385L),
11517 #endif
11519     /* XXX We need the hexadecimal FP number representation here for further
11520        tests.  */
11521     END_DATA (nextafter)
11522   };
11524 static void
11525 nextafter_test (void)
11528   START (nextafter);
11529   RUN_TEST_LOOP_ff_f (nextafter, nextafter_test_data, );
11530   END (nextafter);
11534 static const struct test_ff_f_data_nexttoward nexttoward_test_data[] =
11535   {
11536     START_DATA (nexttoward),
11537     TEST_ff_f (nexttoward, 0, 0, 0),
11538     TEST_ff_f (nexttoward, minus_zero, 0, 0),
11539     TEST_ff_f (nexttoward, 0, minus_zero, minus_zero),
11540     TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero),
11542     TEST_ff_f (nexttoward, 9, 9, 9),
11543     TEST_ff_f (nexttoward, -9, -9, -9),
11544     TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty),
11545     TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty),
11547     TEST_ff_f (nexttoward, qnan_value, 1.1L, qnan_value),
11548     TEST_ff_f (nexttoward, 1.1L, qnan_value, qnan_value),
11549     TEST_ff_f (nexttoward, qnan_value, qnan_value, qnan_value),
11551 #ifdef TEST_FLOAT
11552     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.000002p0),
11553     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.000002p0),
11554     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.000002p0),
11555     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.ffffffp0),
11556     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.ffffffp0),
11557     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.ffffffp0),
11558     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.000002p0),
11559     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.000002p0),
11560     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.000002p0),
11561     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.ffffffp0),
11562     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.ffffffp0),
11563     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.ffffffp0),
11564     TEST_ff_f (nexttoward, -0x1.3p-145, -0xap-148L, -0x1.4p-145, UNDERFLOW_EXCEPTION),
11565 # if LDBL_MANT_DIG >= 64
11566     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.000002p0),
11567     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.ffffffp0),
11568     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.000002p0),
11569     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.ffffffp0),
11570 # endif
11571 # if LDBL_MANT_DIG >= 106
11572     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.000002p0),
11573     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.ffffffp0),
11574     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.000002p0),
11575     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.ffffffp0),
11576 # endif
11577 # if LDBL_MANT_DIG >= 113
11578     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.000002p0),
11579     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffp0),
11580     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.000002p0),
11581     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffp0),
11582 # endif
11583 #endif
11584 #ifdef TEST_DOUBLE
11585     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.0000000000001p0),
11586     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.0000000000001p0),
11587     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.0000000000001p0),
11588     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.fffffffffffff8p0),
11589     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.fffffffffffff8p0),
11590     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0),
11591     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.0000000000001p0),
11592     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.0000000000001p0),
11593     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.0000000000001p0),
11594     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.fffffffffffff8p0),
11595     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.fffffffffffff8p0),
11596     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0),
11597     TEST_ff_f (nexttoward, -1.0, -0x8.00346dc5d6388p-3L, -0x1.0000000000001p0),
11598     TEST_ff_f (nexttoward, 0x1p-1074, 0x1p-1073L, 0x1p-1073, UNDERFLOW_EXCEPTION),
11599 # if LDBL_MANT_DIG >= 64
11600     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.0000000000001p0),
11601     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffff8p0),
11602     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.0000000000001p0),
11603     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffff8p0),
11604 # endif
11605 # if LDBL_MANT_DIG >= 106
11606     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.0000000000001p0),
11607     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.fffffffffffff8p0),
11608     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.0000000000001p0),
11609     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.fffffffffffff8p0),
11610 # endif
11611 # if LDBL_MANT_DIG >= 113
11612     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.0000000000001p0),
11613     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.fffffffffffff8p0),
11614     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.0000000000001p0),
11615     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.fffffffffffff8p0),
11616 # endif
11617 #endif
11618     END_DATA (nexttoward)
11619   };
11621 static void
11622 nexttoward_test (void)
11624   START (nexttoward);
11625   RUN_TEST_LOOP_ff_f (nexttoward, nexttoward_test_data, );
11626   END (nexttoward);
11630 static const struct test_ff_f_data pow_test_data[] =
11631   {
11632     START_DATA (pow),
11633     TEST_ff_f (pow, 0, 0, 1),
11634     TEST_ff_f (pow, 0, minus_zero, 1),
11635     TEST_ff_f (pow, minus_zero, 0, 1),
11636     TEST_ff_f (pow, minus_zero, minus_zero, 1),
11638     TEST_ff_f (pow, 10, 0, 1),
11639     TEST_ff_f (pow, 10, minus_zero, 1),
11640     TEST_ff_f (pow, -10, 0, 1),
11641     TEST_ff_f (pow, -10, minus_zero, 1),
11643     TEST_ff_f (pow, qnan_value, 0, 1),
11644     TEST_ff_f (pow, qnan_value, minus_zero, 1),
11646 #ifndef TEST_INLINE
11647     TEST_ff_f (pow, 1.1L, plus_infty, plus_infty),
11648     TEST_ff_f (pow, plus_infty, plus_infty, plus_infty),
11649     TEST_ff_f (pow, -1.1L, plus_infty, plus_infty),
11650     TEST_ff_f (pow, minus_infty, plus_infty, plus_infty),
11652     TEST_ff_f (pow, 0.9L, plus_infty, 0),
11653     TEST_ff_f (pow, 1e-7L, plus_infty, 0),
11654     TEST_ff_f (pow, -0.9L, plus_infty, 0),
11655     TEST_ff_f (pow, -1e-7L, plus_infty, 0),
11657     TEST_ff_f (pow, 1.1L, minus_infty, 0),
11658     TEST_ff_f (pow, plus_infty, minus_infty, 0),
11659     TEST_ff_f (pow, -1.1L, minus_infty, 0),
11660     TEST_ff_f (pow, minus_infty, minus_infty, 0),
11662     TEST_ff_f (pow, 0.9L, minus_infty, plus_infty),
11663     TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty),
11664     TEST_ff_f (pow, -0.9L, minus_infty, plus_infty),
11665     TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty),
11667     TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty),
11668     TEST_ff_f (pow, plus_infty, 1, plus_infty),
11669     TEST_ff_f (pow, plus_infty, 1e7L, plus_infty),
11670     TEST_ff_f (pow, plus_infty, min_subnorm_value, plus_infty),
11672     TEST_ff_f (pow, plus_infty, -1e-7L, 0),
11673     TEST_ff_f (pow, plus_infty, -1, 0),
11674     TEST_ff_f (pow, plus_infty, -1e7L, 0),
11675     TEST_ff_f (pow, plus_infty, -min_subnorm_value, 0),
11677     TEST_ff_f (pow, minus_infty, 1, minus_infty),
11678     TEST_ff_f (pow, minus_infty, 11, minus_infty),
11679     TEST_ff_f (pow, minus_infty, 1001, minus_infty),
11681     TEST_ff_f (pow, minus_infty, 2, plus_infty),
11682     TEST_ff_f (pow, minus_infty, 12, plus_infty),
11683     TEST_ff_f (pow, minus_infty, 1002, plus_infty),
11684     TEST_ff_f (pow, minus_infty, 0.1L, plus_infty),
11685     TEST_ff_f (pow, minus_infty, 1.1L, plus_infty),
11686     TEST_ff_f (pow, minus_infty, 11.1L, plus_infty),
11687     TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty),
11688     TEST_ff_f (pow, minus_infty, min_subnorm_value, plus_infty),
11690     TEST_ff_f (pow, minus_infty, -1, minus_zero),
11691     TEST_ff_f (pow, minus_infty, -11, minus_zero),
11692     TEST_ff_f (pow, minus_infty, -1001, minus_zero),
11694     TEST_ff_f (pow, minus_infty, -2, 0),
11695     TEST_ff_f (pow, minus_infty, -12, 0),
11696     TEST_ff_f (pow, minus_infty, -1002, 0),
11697     TEST_ff_f (pow, minus_infty, -0.1L, 0),
11698     TEST_ff_f (pow, minus_infty, -1.1L, 0),
11699     TEST_ff_f (pow, minus_infty, -11.1L, 0),
11700     TEST_ff_f (pow, minus_infty, -1001.1L, 0),
11701     TEST_ff_f (pow, minus_infty, -min_subnorm_value, 0),
11702 #endif
11704     TEST_ff_f (pow, qnan_value, qnan_value, qnan_value),
11705     TEST_ff_f (pow, 0, qnan_value, qnan_value),
11706     TEST_ff_f (pow, 1, qnan_value, 1),
11707     TEST_ff_f (pow, -1, qnan_value, qnan_value),
11708     TEST_ff_f (pow, qnan_value, 1, qnan_value),
11709     TEST_ff_f (pow, qnan_value, -1, qnan_value),
11711     /* pow (x, qNaN) == qNaN.  */
11712     TEST_ff_f (pow, 3.0, qnan_value, qnan_value),
11713     TEST_ff_f (pow, minus_zero, qnan_value, qnan_value),
11714     TEST_ff_f (pow, plus_infty, qnan_value, qnan_value),
11715     TEST_ff_f (pow, -3.0, qnan_value, qnan_value),
11716     TEST_ff_f (pow, minus_infty, qnan_value, qnan_value),
11718     TEST_ff_f (pow, qnan_value, 3.0, qnan_value),
11719     TEST_ff_f (pow, qnan_value, -3.0, qnan_value),
11720     TEST_ff_f (pow, qnan_value, plus_infty, qnan_value),
11721     TEST_ff_f (pow, qnan_value, minus_infty, qnan_value),
11722     TEST_ff_f (pow, qnan_value, 2.5, qnan_value),
11723     TEST_ff_f (pow, qnan_value, -2.5, qnan_value),
11724     TEST_ff_f (pow, qnan_value, min_subnorm_value, qnan_value),
11725     TEST_ff_f (pow, qnan_value, -min_subnorm_value, qnan_value),
11727     TEST_ff_f (pow, 1, plus_infty, 1),
11728     TEST_ff_f (pow, -1, plus_infty, 1),
11729     TEST_ff_f (pow, 1, minus_infty, 1),
11730     TEST_ff_f (pow, -1, minus_infty, 1),
11731     TEST_ff_f (pow, 1, 1, 1),
11732     TEST_ff_f (pow, 1, -1, 1),
11733     TEST_ff_f (pow, 1, 1.25, 1),
11734     TEST_ff_f (pow, 1, -1.25, 1),
11735     TEST_ff_f (pow, 1, 0x1p62L, 1),
11736     TEST_ff_f (pow, 1, 0x1p63L, 1),
11737     TEST_ff_f (pow, 1, 0x1p64L, 1),
11738     TEST_ff_f (pow, 1, 0x1p72L, 1),
11739     TEST_ff_f (pow, 1, min_subnorm_value, 1),
11740     TEST_ff_f (pow, 1, -min_subnorm_value, 1),
11742     /* pow (x, +-0) == 1.  */
11743     TEST_ff_f (pow, plus_infty, 0, 1),
11744     TEST_ff_f (pow, plus_infty, minus_zero, 1),
11745     TEST_ff_f (pow, minus_infty, 0, 1),
11746     TEST_ff_f (pow, minus_infty, minus_zero, 1),
11747     TEST_ff_f (pow, 32.75L, 0, 1),
11748     TEST_ff_f (pow, 32.75L, minus_zero, 1),
11749     TEST_ff_f (pow, -32.75L, 0, 1),
11750     TEST_ff_f (pow, -32.75L, minus_zero, 1),
11751     TEST_ff_f (pow, 0x1p72L, 0, 1),
11752     TEST_ff_f (pow, 0x1p72L, minus_zero, 1),
11753     TEST_ff_f (pow, 0x1p-72L, 0, 1),
11754     TEST_ff_f (pow, 0x1p-72L, minus_zero, 1),
11756     TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11757     TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11758     TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11759     TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11760     TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11761     TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11762     TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11763     TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11765     TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11766     TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11767     TEST_ff_f (pow, 0, -0xffffff, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11768 #ifndef TEST_FLOAT
11769     TEST_ff_f (pow, 0, -0x1.fffffffffffffp+52L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11770 #endif
11771 #ifdef TEST_LDOUBLE
11772 # if LDBL_MANT_DIG >= 64
11773     TEST_ff_f (pow, 0, -0x1.fffffffffffffffep+63L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11774 # endif
11775 # if LDBL_MANT_DIG >= 106
11776     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffff8p+105L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11777 # endif
11778 # if LDBL_MANT_DIG >= 113
11779     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffffffp+112L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11780 # endif
11781 #endif
11782     TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11783     TEST_ff_f (pow, minus_zero, -11L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11784     TEST_ff_f (pow, minus_zero, -0xffffff, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11785     TEST_ff_f (pow, minus_zero, -0x1fffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11786 #ifndef TEST_FLOAT
11787     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+52L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11788     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+53L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11789 #endif
11790 #ifdef TEST_LDOUBLE
11791 # if LDBL_MANT_DIG >= 64
11792     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+63L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11793     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+64L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11794 # endif
11795 # if LDBL_MANT_DIG >= 106
11796     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11797     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11798 # endif
11799 # if LDBL_MANT_DIG >= 113
11800     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11801     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11802 # endif
11803 #endif
11805     TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11806     TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11807     TEST_ff_f (pow, 0, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11808     TEST_ff_f (pow, 0, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11809     TEST_ff_f (pow, 0, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11810     TEST_ff_f (pow, 0, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11811     TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11812     TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11813     TEST_ff_f (pow, minus_zero, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11814     TEST_ff_f (pow, minus_zero, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11815     TEST_ff_f (pow, minus_zero, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11816     TEST_ff_f (pow, minus_zero, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11818     TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty, OVERFLOW_EXCEPTION),
11819     TEST_ff_f (pow, 10, -0x1p72L, 0, UNDERFLOW_EXCEPTION),
11820     TEST_ff_f (pow, max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
11821     TEST_ff_f (pow, 10, -max_value, 0, UNDERFLOW_EXCEPTION),
11823     TEST_ff_f (pow, 0, 1, 0),
11824     TEST_ff_f (pow, 0, 11, 0),
11826     TEST_ff_f (pow, minus_zero, 1, minus_zero),
11827     TEST_ff_f (pow, minus_zero, 11, minus_zero),
11829     TEST_ff_f (pow, 0, 2, 0),
11830     TEST_ff_f (pow, 0, 11.1L, 0),
11832     TEST_ff_f (pow, minus_zero, 2, 0),
11833     TEST_ff_f (pow, minus_zero, 11.1L, 0),
11834     TEST_ff_f (pow, 0, plus_infty, 0),
11835     TEST_ff_f (pow, minus_zero, plus_infty, 0),
11836     TEST_ff_f (pow, 0, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11837     TEST_ff_f (pow, minus_zero, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11839 #ifndef TEST_INLINE
11840     /* pow (x, +inf) == +inf for |x| > 1.  */
11841     TEST_ff_f (pow, 1.5, plus_infty, plus_infty),
11843     /* pow (x, +inf) == +0 for |x| < 1.  */
11844     TEST_ff_f (pow, 0.5, plus_infty, 0.0),
11846     /* pow (x, -inf) == +0 for |x| > 1.  */
11847     TEST_ff_f (pow, 1.5, minus_infty, 0.0),
11849     /* pow (x, -inf) == +inf for |x| < 1.  */
11850     TEST_ff_f (pow, 0.5, minus_infty, plus_infty),
11851 #endif
11853     /* pow (+inf, y) == +inf for y > 0.  */
11854     TEST_ff_f (pow, plus_infty, 2, plus_infty),
11855     TEST_ff_f (pow, plus_infty, 0xffffff, plus_infty),
11856 #ifndef TEST_FLOAT
11857     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffp+52L, plus_infty),
11858 #endif
11859 #ifdef TEST_LDOUBLE
11860 # if LDBL_MANT_DIG >= 64
11861     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffffep+63L, plus_infty),
11862 # endif
11863 # if LDBL_MANT_DIG >= 106
11864     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, plus_infty),
11865 # endif
11866 # if LDBL_MANT_DIG >= 113
11867     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, plus_infty),
11868 # endif
11869 #endif
11870     TEST_ff_f (pow, plus_infty, 0x1p24, plus_infty),
11871     TEST_ff_f (pow, plus_infty, 0x1p127, plus_infty),
11872     TEST_ff_f (pow, plus_infty, max_value, plus_infty),
11874     /* pow (+inf, y) == +0 for y < 0.  */
11875     TEST_ff_f (pow, plus_infty, -1, 0.0),
11876     TEST_ff_f (pow, plus_infty, -0xffffff, 0.0),
11877 #ifndef TEST_FLOAT
11878     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffp+52L, 0.0),
11879 #endif
11880 #ifdef TEST_LDOUBLE
11881 # if LDBL_MANT_DIG >= 64
11882     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffffep+63L, 0.0),
11883 # endif
11884 # if LDBL_MANT_DIG >= 106
11885     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
11886 # endif
11887 # if LDBL_MANT_DIG >= 113
11888     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
11889 # endif
11890 #endif
11891     TEST_ff_f (pow, plus_infty, -0x1p24, 0.0),
11892     TEST_ff_f (pow, plus_infty, -0x1p127, 0.0),
11893     TEST_ff_f (pow, plus_infty, -max_value, 0.0),
11895     /* pow (-inf, y) == -inf for y an odd integer > 0.  */
11896     TEST_ff_f (pow, minus_infty, 27, minus_infty),
11897     TEST_ff_f (pow, minus_infty, 0xffffff, minus_infty),
11898     TEST_ff_f (pow, minus_infty, 0x1fffffe, plus_infty),
11899 #ifndef TEST_FLOAT
11900     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+52L, minus_infty),
11901     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+53L, plus_infty),
11902 #endif
11903 #ifdef TEST_LDOUBLE
11904 # if LDBL_MANT_DIG >= 64
11905     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+63L, minus_infty),
11906     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+64L, plus_infty),
11907 # endif
11908 # if LDBL_MANT_DIG >= 106
11909     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty),
11910     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty),
11911 # endif
11912 # if LDBL_MANT_DIG >= 113
11913     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty),
11914     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty),
11915 # endif
11916 #endif
11918     /* pow (-inf, y) == +inf for y > 0 and not an odd integer.  */
11919     TEST_ff_f (pow, minus_infty, 28, plus_infty),
11920     TEST_ff_f (pow, minus_infty, 0x1p24, plus_infty),
11921     TEST_ff_f (pow, minus_infty, 0x1p127, plus_infty),
11922     TEST_ff_f (pow, minus_infty, max_value, plus_infty),
11924     /* pow (-inf, y) == -0 for y an odd integer < 0. */
11925     TEST_ff_f (pow, minus_infty, -3, minus_zero),
11926     TEST_ff_f (pow, minus_infty, -0xffffff, minus_zero),
11927     TEST_ff_f (pow, minus_infty, -0x1fffffe, plus_zero),
11928 #ifndef TEST_FLOAT
11929     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+52L, minus_zero),
11930     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+53L, plus_zero),
11931 #endif
11932 #ifdef TEST_LDOUBLE
11933 # if LDBL_MANT_DIG >= 64
11934     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+63L, minus_zero),
11935     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+64L, plus_zero),
11936 # endif
11937 # if LDBL_MANT_DIG >= 106
11938     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
11939     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
11940 # endif
11941 # if LDBL_MANT_DIG >= 113
11942     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
11943     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
11944 # endif
11945 #endif
11946     /* pow (-inf, y) == +0 for y < 0 and not an odd integer.  */
11947     TEST_ff_f (pow, minus_infty, -2.0, 0.0),
11948     TEST_ff_f (pow, minus_infty, -0x1p24, 0.0),
11949     TEST_ff_f (pow, minus_infty, -0x1p127, 0.0),
11950     TEST_ff_f (pow, minus_infty, -max_value, 0.0),
11952     /* pow (+0, y) == +0 for y an odd integer > 0.  */
11953     TEST_ff_f (pow, 0.0, 27, 0.0),
11954     TEST_ff_f (pow, 0.0, 0xffffff, 0.0),
11955 #ifndef TEST_FLOAT
11956     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffp+52L, 0.0),
11957 #endif
11958 #ifdef TEST_LDOUBLE
11959 # if LDBL_MANT_DIG >= 64
11960     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffffep+63L, 0.0),
11961 # endif
11962 # if LDBL_MANT_DIG >= 106
11963     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
11964 # endif
11965 # if LDBL_MANT_DIG >= 113
11966     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
11967 # endif
11968 #endif
11970     /* pow (-0, y) == -0 for y an odd integer > 0.  */
11971     TEST_ff_f (pow, minus_zero, 27, minus_zero),
11972     TEST_ff_f (pow, minus_zero, 0xffffff, minus_zero),
11973     TEST_ff_f (pow, minus_zero, 0x1fffffe, plus_zero),
11974 #ifndef TEST_FLOAT
11975     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+52L, minus_zero),
11976     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+53L, plus_zero),
11977 #endif
11978 #ifdef TEST_LDOUBLE
11979 # if LDBL_MANT_DIG >= 64
11980     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+63L, minus_zero),
11981     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+64L, plus_zero),
11982 # endif
11983 # if LDBL_MANT_DIG >= 106
11984     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
11985     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
11986 # endif
11987 # if LDBL_MANT_DIG >= 113
11988     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
11989     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
11990 # endif
11991 #endif
11993     /* pow (+0, y) == +0 for y > 0 and not an odd integer.  */
11994     TEST_ff_f (pow, 0.0, 4, 0.0),
11995     TEST_ff_f (pow, 0.0, 0x1p24, 0.0),
11996     TEST_ff_f (pow, 0.0, 0x1p127, 0.0),
11997     TEST_ff_f (pow, 0.0, max_value, 0.0),
11998     TEST_ff_f (pow, 0.0, min_subnorm_value, 0.0),
12000     /* pow (-0, y) == +0 for y > 0 and not an odd integer.  */
12001     TEST_ff_f (pow, minus_zero, 4, 0.0),
12002     TEST_ff_f (pow, minus_zero, 0x1p24, 0.0),
12003     TEST_ff_f (pow, minus_zero, 0x1p127, 0.0),
12004     TEST_ff_f (pow, minus_zero, max_value, 0.0),
12005     TEST_ff_f (pow, minus_zero, min_subnorm_value, 0.0),
12007     TEST_ff_f (pow, 16, 0.25L, 2),
12008     TEST_ff_f (pow, 0x1p64L, 0.125L, 256),
12009     TEST_ff_f (pow, 2, 4, 16),
12010     TEST_ff_f (pow, 256, 8, 0x1p64L),
12012     TEST_ff_f (pow, 0.75L, 1.25L, 0.697953644326574699205914060237425566L),
12014 #if defined TEST_DOUBLE || defined TEST_LDOUBLE
12015     TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0, UNDERFLOW_EXCEPTION),
12016 #endif
12018     TEST_ff_f (pow, -1.0, -0xffffff, -1.0),
12019     TEST_ff_f (pow, -1.0, -0x1fffffe, 1.0),
12020 #ifndef TEST_FLOAT
12021     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+52L, -1.0),
12022     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+53L, 1.0),
12023 #endif
12024 #ifdef TEST_LDOUBLE
12025 # if LDBL_MANT_DIG >= 64
12026     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+63L, -1.0),
12027     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+64L, 1.0),
12028 # endif
12029 # if LDBL_MANT_DIG >= 106
12030     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
12031     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
12032 # endif
12033 # if LDBL_MANT_DIG >= 113
12034     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
12035     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
12036 # endif
12037 #endif
12038     TEST_ff_f (pow, -1.0, -max_value, 1.0),
12040     TEST_ff_f (pow, -1.0, 0xffffff, -1.0),
12041     TEST_ff_f (pow, -1.0, 0x1fffffe, 1.0),
12042 #ifndef TEST_FLOAT
12043     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+52L, -1.0),
12044     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+53L, 1.0),
12045 #endif
12046 #ifdef TEST_LDOUBLE
12047 # if LDBL_MANT_DIG >= 64
12048     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+63L, -1.0),
12049     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+64L, 1.0),
12050 # endif
12051 # if LDBL_MANT_DIG >= 106
12052     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
12053     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
12054 # endif
12055 # if LDBL_MANT_DIG >= 113
12056     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
12057     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
12058 # endif
12059 #endif
12060     TEST_ff_f (pow, -1.0, max_value, 1.0),
12062     TEST_ff_f (pow, -2.0, 126, 0x1p126),
12063     TEST_ff_f (pow, -2.0, 127, -0x1p127),
12064     /* Allow inexact results for float to be considered to underflow.  */
12065     TEST_ff_f (pow, -2.0, -126, 0x1p-126, UNDERFLOW_EXCEPTION_OK_FLOAT),
12066     TEST_ff_f (pow, -2.0, -127, -0x1p-127, UNDERFLOW_EXCEPTION_OK_FLOAT),
12068     TEST_ff_f (pow, -2.0, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12069     TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12070 #ifndef TEST_FLOAT
12071     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12072     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12073 #endif
12074 #ifdef TEST_LDOUBLE
12075 # if LDBL_MANT_DIG >= 64
12076     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12077     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12078 # endif
12079 # if LDBL_MANT_DIG >= 106
12080     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12081     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12082 # endif
12083 # if LDBL_MANT_DIG >= 113
12084     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12085     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12086 # endif
12087 #endif
12088     TEST_ff_f (pow, -2.0, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12090     TEST_ff_f (pow, -2.0, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12091     TEST_ff_f (pow, -2.0, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12092 #ifndef TEST_FLOAT
12093     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12094     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12095 #endif
12096 #ifdef TEST_LDOUBLE
12097 # if LDBL_MANT_DIG >= 64
12098     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12099     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12100 # endif
12101 # if LDBL_MANT_DIG >= 106
12102     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12103     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12104 # endif
12105 # if LDBL_MANT_DIG >= 113
12106     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12107     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12108 # endif
12109 #endif
12110     TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION),
12112     TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION),
12113     TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION),
12114     TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12115     TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION),
12116     TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION),
12117     TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION),
12118     TEST_ff_f (pow, -max_value, 3, minus_infty, OVERFLOW_EXCEPTION),
12120     TEST_ff_f (pow, -max_value, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12121     TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12122 #ifndef TEST_FLOAT
12123     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12124     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12125 #endif
12126 #ifdef TEST_LDOUBLE
12127 # if LDBL_MANT_DIG >= 64
12128     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12129     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12130 # endif
12131 # if LDBL_MANT_DIG >= 106
12132     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12133     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12134 # endif
12135 # if LDBL_MANT_DIG >= 113
12136     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12137     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12138 # endif
12139 #endif
12140     TEST_ff_f (pow, -max_value, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12142     TEST_ff_f (pow, -max_value, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12143     TEST_ff_f (pow, -max_value, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12144 #ifndef TEST_FLOAT
12145     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12146     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12147 #endif
12148 #ifdef TEST_LDOUBLE
12149 # if LDBL_MANT_DIG >= 64
12150     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12151     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12152 # endif
12153 # if LDBL_MANT_DIG >= 106
12154     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12155     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12156 # endif
12157 # if LDBL_MANT_DIG >= 113
12158     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12159     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12160 # endif
12161 #endif
12162     TEST_ff_f (pow, -max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
12164     TEST_ff_f (pow, -0.5, 126, 0x1p-126),
12165     TEST_ff_f (pow, -0.5, 127, -0x1p-127),
12166     TEST_ff_f (pow, -0.5, -126, 0x1p126),
12167     TEST_ff_f (pow, -0.5, -127, -0x1p127),
12169     TEST_ff_f (pow, -0.5, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12170     TEST_ff_f (pow, -0.5, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12171 #ifndef TEST_FLOAT
12172     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12173     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12174 #endif
12175 #ifdef TEST_LDOUBLE
12176 # if LDBL_MANT_DIG >= 64
12177     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12178     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12179 # endif
12180 # if LDBL_MANT_DIG >= 106
12181     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12182     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12183 # endif
12184 # if LDBL_MANT_DIG >= 113
12185     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12186     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12187 # endif
12188 #endif
12189     TEST_ff_f (pow, -0.5, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12191     TEST_ff_f (pow, -0.5, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12192     TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12193 #ifndef TEST_FLOAT
12194     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12195     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12196 #endif
12197 #ifdef TEST_LDOUBLE
12198 # if LDBL_MANT_DIG >= 64
12199     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12200     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12201 # endif
12202 # if LDBL_MANT_DIG >= 106
12203     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12204     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12205 # endif
12206 # if LDBL_MANT_DIG >= 113
12207     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12208     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12209 # endif
12210 #endif
12211     TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12213     TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION),
12214     TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION),
12215     TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12216     TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION),
12217     TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION),
12218     /* Allow inexact results to be considered to underflow.  */
12219     TEST_ff_f (pow, -min_value, 1, -min_value, UNDERFLOW_EXCEPTION_OK),
12220     TEST_ff_f (pow, -min_value, 2, plus_zero, UNDERFLOW_EXCEPTION),
12221     TEST_ff_f (pow, -min_value, 3, minus_zero, UNDERFLOW_EXCEPTION),
12223     TEST_ff_f (pow, -min_value, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12224     TEST_ff_f (pow, -min_value, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12225 #ifndef TEST_FLOAT
12226     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12227     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12228 #endif
12229 #ifdef TEST_LDOUBLE
12230 # if LDBL_MANT_DIG >= 64
12231     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12232     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12233 # endif
12234 # if LDBL_MANT_DIG >= 106
12235     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12236     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12237 # endif
12238 # if LDBL_MANT_DIG >= 113
12239     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12240     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12241 # endif
12242 #endif
12243     TEST_ff_f (pow, -min_value, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12245     TEST_ff_f (pow, -min_value, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12246     TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12247 #ifndef TEST_FLOAT
12248     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12249     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12250 #endif
12251 #ifdef TEST_LDOUBLE
12252 # if LDBL_MANT_DIG >= 64
12253     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12254     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12255 # endif
12256 # if LDBL_MANT_DIG >= 106
12257     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12258     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12259 # endif
12260 # if LDBL_MANT_DIG >= 113
12261     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12262     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12263 # endif
12264 #endif
12265     TEST_ff_f (pow, -min_value, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12267     TEST_ff_f (pow, 0x0.ffffffp0, 10, 0.999999403953712118183885036774764444747L),
12268     TEST_ff_f (pow, 0x0.ffffffp0, 100, 0.999994039553108359406305079606228341585L),
12269     TEST_ff_f (pow, 0x0.ffffffp0, 1000, 0.9999403971297699052276650144650733772182L),
12270     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p24, 0.3678794302077803437135155590023422899744L),
12271     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p30, 1.603807831524924233828134753069728224044e-28L),
12272     TEST_ff_f (pow, 0x0.ffffffp0, 0x1.234566p30, 2.374884712135295099971443365381007297732e-32L),
12273     TEST_ff_f (pow, 0x0.ffffffp0, -10, 1.000000596046643153205170848674671339688L),
12274     TEST_ff_f (pow, 0x0.ffffffp0, -100, 1.000005960482418779499387594989252621451L),
12275     TEST_ff_f (pow, 0x0.ffffffp0, -1000, 1.000059606422943986382898964231519867906L),
12276     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p24, 2.7182819094701610539628664526874952929416L),
12277     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p30, 6.2351609734265057988914412331288163636075e+27L),
12278     TEST_ff_f (pow, 0x0.ffffffp0, -0x1.234566p30, 4.2107307141696353498921307077142537353515e+31L),
12279     TEST_ff_f (pow, 0x1.000002p0, 0x1p24, 7.3890552180866447284268641248075832310141L),
12280     TEST_ff_f (pow, 0x1.000002p0, 0x1.234566p29, 4.2107033006507495188536371520637025716256e+31L),
12281     TEST_ff_f (pow, 0x1.000002p0, -0x1.234566p29, 2.3749001736727769098946062325205705312166e-32L),
12283 #if !defined TEST_FLOAT
12284     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, 0x1.23456789abcdfp62L, 1.0118762747827252817436395051178295138220e-253L),
12285     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, -0x1.23456789abcdfp62L, 9.8826311568054561811190162420900667121992e+252L),
12286     TEST_ff_f (pow, 0x1.0000000000001p0L, 0x1.23456789abcdfp61L, 9.8826311568044974397135026217687399395481e+252L),
12287     TEST_ff_f (pow, 0x1.0000000000001p0L, -0x1.23456789abcdfp61L, 1.0118762747828234466621210689458255908670e-253L),
12288 #endif
12290 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 && LDBL_MAX_EXP >= 16384
12291     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, 0x1.23456789abcdef0ep77L, 1.2079212226420368189981778807634890018840e-4048L),
12292     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, -0x1.23456789abcdef0ep77L, 8.2786855736563746280496724205839522148001e+4047L),
12293     TEST_ff_f (pow, 0x1.0000000000000002p0L, 0x1.23456789abcdef0ep76L, 8.2786855736563683535324500168799315131570e+4047L),
12294     TEST_ff_f (pow, 0x1.0000000000000002p0L, -0x1.23456789abcdef0ep76L, 1.2079212226420377344964713407722652880280e-4048L),
12295 #endif
12297 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
12298     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.23456789abcdef0123456789abcdp126L, 1.2079212226420440237790185999151440179953e-4048L),
12299     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.23456789abcdef0123456789abcdp126L, 8.2786855736563252489063231915535105363602e+4047L),
12300     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, 0x1.23456789abcdef0123456789abcdp125L, 8.2786855736563252489063231915423647547782e+4047L),
12301     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, -0x1.23456789abcdef0123456789abcdp125L, 1.2079212226420440237790185999167702696503e-4048L),
12302 #endif
12304 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
12305     TEST_ff_f (pow, 1e4932L, 0.75L, 1e3699L),
12306     TEST_ff_f (pow, 1e4928L, 0.75L, 1e3696L),
12307     TEST_ff_f (pow, 1e4924L, 0.75L, 1e3693L),
12308     TEST_ff_f (pow, 1e4920L, 0.75L, 1e3690L),
12309     TEST_ff_f (pow, 10.0L, 4932.0L, 1e4932L),
12310     TEST_ff_f (pow, 10.0L, 4931.0L, 1e4931L),
12311     TEST_ff_f (pow, 10.0L, 4930.0L, 1e4930L),
12312     TEST_ff_f (pow, 10.0L, 4929.0L, 1e4929L),
12313     TEST_ff_f (pow, 10.0L, -4931.0L, 1e-4931L),
12314     TEST_ff_f (pow, 10.0L, -4930.0L, 1e-4930L),
12315     TEST_ff_f (pow, 10.0L, -4929.0L, 1e-4929L),
12316     TEST_ff_f (pow, 1e27L, 182.0L, 1e4914L),
12317     TEST_ff_f (pow, 1e27L, -182.0L, 1e-4914L),
12318 #endif
12320     TEST_ff_f (pow, min_subnorm_value, min_subnorm_value, 1.0L),
12321     TEST_ff_f (pow, min_subnorm_value, -min_subnorm_value, 1.0L),
12322     TEST_ff_f (pow, max_value, min_subnorm_value, 1.0L),
12323     TEST_ff_f (pow, max_value, -min_subnorm_value, 1.0L),
12324     TEST_ff_f (pow, 0.99L, min_subnorm_value, 1.0L),
12325     TEST_ff_f (pow, 0.99L, -min_subnorm_value, 1.0L),
12326     TEST_ff_f (pow, 1.01L, min_subnorm_value, 1.0L),
12327     TEST_ff_f (pow, 1.01L, -min_subnorm_value, 1.0L),
12329     TEST_ff_f (pow, 2.0L, -100000.0L, plus_zero, UNDERFLOW_EXCEPTION),
12330     END_DATA (pow)
12331   };
12333 static void
12334 pow_test (void)
12337   errno = 0;
12338   FUNC(pow) (0, 0);
12339   if (errno == ENOSYS)
12340     /* Function not implemented.  */
12341     return;
12343   START (pow);
12344   RUN_TEST_LOOP_ff_f (pow, pow_test_data, );
12345   END (pow);
12349 static const struct test_ff_f_data pow_tonearest_test_data[] =
12350   {
12351     START_DATA (pow_tonearest),
12352     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12353     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12354     END_DATA (pow_tonearest)
12355   };
12357 static void
12358 pow_test_tonearest (void)
12360   errno = 0;
12361   FUNC(pow) (0, 0);
12362   if (errno == ENOSYS)
12363     /* Function not implemented.  */
12364     return;
12366   START (pow_tonearest);
12367   RUN_TEST_LOOP_ff_f (pow, pow_tonearest_test_data, FE_TONEAREST);
12368   END (pow_tonearest);
12372 static const struct test_ff_f_data pow_towardzero_test_data[] =
12373   {
12374     START_DATA (pow_towardzero),
12375     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12376     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12377     END_DATA (pow_towardzero)
12378   };
12380 static void
12381 pow_test_towardzero (void)
12383   errno = 0;
12384   FUNC(pow) (0, 0);
12385   if (errno == ENOSYS)
12386     /* Function not implemented.  */
12387     return;
12389   START (pow_towardzero);
12390   RUN_TEST_LOOP_ff_f (pow, pow_towardzero_test_data, FE_TOWARDZERO);
12391   END (pow_towardzero);
12395 static const struct test_ff_f_data pow_downward_test_data[] =
12396   {
12397     START_DATA (pow_downward),
12398     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12399     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12400     END_DATA (pow_downward)
12401   };
12403 static void
12404 pow_test_downward (void)
12406   errno = 0;
12407   FUNC(pow) (0, 0);
12408   if (errno == ENOSYS)
12409     /* Function not implemented.  */
12410     return;
12412   START (pow_downward);
12413   RUN_TEST_LOOP_ff_f (pow, pow_downward_test_data, FE_DOWNWARD);
12414   END (pow_downward);
12418 static const struct test_ff_f_data pow_upward_test_data[] =
12419   {
12420     START_DATA (pow_upward),
12421     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12422     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12423     END_DATA (pow_upward)
12424   };
12426 static void
12427 pow_test_upward (void)
12429   errno = 0;
12430   FUNC(pow) (0, 0);
12431   if (errno == ENOSYS)
12432     /* Function not implemented.  */
12433     return;
12435   START (pow_upward);
12436   RUN_TEST_LOOP_ff_f (pow, pow_upward_test_data, FE_UPWARD);
12437   END (pow_upward);
12441 static const struct test_ff_f_data remainder_test_data[] =
12442   {
12443     START_DATA (remainder),
12444     TEST_ff_f (remainder, 1, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12445     TEST_ff_f (remainder, 1, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12446     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12447     TEST_ff_f (remainder, plus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12448     TEST_ff_f (remainder, plus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12449     TEST_ff_f (remainder, plus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12450     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12451     TEST_ff_f (remainder, minus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12452     TEST_ff_f (remainder, minus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12453     TEST_ff_f (remainder, minus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12454     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, ERRNO_UNCHANGED),
12455     TEST_ff_f (remainder, 0, qnan_value, qnan_value, ERRNO_UNCHANGED),
12456     TEST_ff_f (remainder, qnan_value, 0, qnan_value, ERRNO_UNCHANGED),
12458     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, ERRNO_UNCHANGED),
12459     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, ERRNO_UNCHANGED),
12461     TEST_ff_f (remainder, 1.625, 1.0, -0.375),
12462     TEST_ff_f (remainder, -1.625, 1.0, 0.375),
12463     TEST_ff_f (remainder, 1.625, -1.0, -0.375),
12464     TEST_ff_f (remainder, -1.625, -1.0, 0.375),
12465     TEST_ff_f (remainder, 5.0, 2.0, 1.0),
12466     TEST_ff_f (remainder, 3.0, 2.0, -1.0),
12467     END_DATA (remainder)
12468   };
12470 static void
12471 remainder_test (void)
12473   errno = 0;
12474   FUNC(remainder) (1.625, 1.0);
12475   if (errno == ENOSYS)
12476     /* Function not implemented.  */
12477     return;
12479   START (remainder);
12480   RUN_TEST_LOOP_ff_f (remainder, remainder_test_data, );
12481   END (remainder);
12484 static void
12485 remquo_test (void)
12487   /* x is needed.  */
12488   int x;
12490   errno = 0;
12491   FUNC(remquo) (1.625, 1.0, &x);
12492   if (errno == ENOSYS)
12493     /* Function not implemented.  */
12494     return;
12496   START (remquo);
12498   TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, INVALID_EXCEPTION);
12499   TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, INVALID_EXCEPTION);
12500   TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
12501   TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
12502   TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE);
12504   TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2);
12505   TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2);
12506   TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2);
12507   TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2);
12509   TEST_ffI_f1 (remquo, 5, 2, 1, 2);
12510   TEST_ffI_f1 (remquo, 3, 2, -1, 2);
12512   END (remquo);
12515 static const struct test_f_f_data rint_test_data[] =
12516   {
12517     START_DATA (rint),
12518     /* TODO: missing qNaN tests.  */
12520     TEST_f_f (rint, 0.0, 0.0),
12521     TEST_f_f (rint, minus_zero, minus_zero),
12522     TEST_f_f (rint, plus_infty, plus_infty),
12523     TEST_f_f (rint, minus_infty, minus_infty),
12525     /* Default rounding mode is round to even.  */
12526     TEST_f_f (rint, 0.5, 0.0),
12527     TEST_f_f (rint, 1.5, 2.0),
12528     TEST_f_f (rint, 2.5, 2.0),
12529     TEST_f_f (rint, 3.5, 4.0),
12530     TEST_f_f (rint, 4.5, 4.0),
12531     TEST_f_f (rint, -0.5, -0.0),
12532     TEST_f_f (rint, -1.5, -2.0),
12533     TEST_f_f (rint, -2.5, -2.0),
12534     TEST_f_f (rint, -3.5, -4.0),
12535     TEST_f_f (rint, -4.5, -4.0),
12536     TEST_f_f (rint, 0.1, 0.0),
12537     TEST_f_f (rint, 0.25, 0.0),
12538     TEST_f_f (rint, 0.625, 1.0),
12539     TEST_f_f (rint, -0.1, -0.0),
12540     TEST_f_f (rint, -0.25, -0.0),
12541     TEST_f_f (rint, -0.625, -1.0),
12542     TEST_f_f (rint, 262144.75, 262145.0),
12543     TEST_f_f (rint, 262142.75, 262143.0),
12544     TEST_f_f (rint, 524286.75, 524287.0),
12545     TEST_f_f (rint, 524288.75, 524289.0),
12546     TEST_f_f (rint, 1048576.75, 1048577.0),
12547     TEST_f_f (rint, 2097152.75, 2097153.0),
12548     TEST_f_f (rint, -1048576.75, -1048577.0),
12549     TEST_f_f (rint, -2097152.75, -2097153.0),
12550 #ifndef TEST_FLOAT
12551     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12552     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12553     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12554     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12555     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12556     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12557     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12558     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12559     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12560     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12561 #endif
12562 #ifdef TEST_LDOUBLE
12563     /* The result can only be represented in long double.  */
12564     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12565     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12566     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12567     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12568     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12570 # if LDBL_MANT_DIG > 100
12571     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12572     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12573     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12574 # endif
12576     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12577     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12578     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12579     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12580     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12582 # if LDBL_MANT_DIG > 100
12583     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12584     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12585     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12587     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12588     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12589     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12590     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12591     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12592     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12594     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12595     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12596     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12597     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12598     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12599     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12600 # endif
12602     TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L),
12603     TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L),
12604     TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L),
12605     TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L),
12606     TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L),
12608     TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L),
12609     TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L),
12610     TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L),
12611     TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L),
12612     TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L),
12614     TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L),
12615     TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L),
12616     TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L),
12617     TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L),
12618     TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L),
12620     TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L),
12621     TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L),
12622     TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L),
12623     TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L),
12624     TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L),
12626     TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
12627     TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
12628     TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
12629     TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
12630     TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
12631 #endif
12632     END_DATA (rint)
12633   };
12635 static void
12636 rint_test (void)
12638   START (rint);
12639   RUN_TEST_LOOP_f_f (rint, rint_test_data, );
12640   END (rint);
12643 static const struct test_f_f_data rint_tonearest_test_data[] =
12644   {
12645     START_DATA (rint_tonearest),
12646     TEST_f_f (rint, 2.0, 2.0),
12647     TEST_f_f (rint, 1.5, 2.0),
12648     TEST_f_f (rint, 1.0, 1.0),
12649     TEST_f_f (rint, 0.5, 0.0),
12650     TEST_f_f (rint, 0.0, 0.0),
12651     TEST_f_f (rint, minus_zero, minus_zero),
12652     TEST_f_f (rint, -0.5, -0.0),
12653     TEST_f_f (rint, -1.0, -1.0),
12654     TEST_f_f (rint, -1.5, -2.0),
12655     TEST_f_f (rint, -2.0, -2.0),
12656     TEST_f_f (rint, 0.1, 0.0),
12657     TEST_f_f (rint, 0.25, 0.0),
12658     TEST_f_f (rint, 0.625, 1.0),
12659     TEST_f_f (rint, -0.1, -0.0),
12660     TEST_f_f (rint, -0.25, -0.0),
12661     TEST_f_f (rint, -0.625, -1.0),
12662     TEST_f_f (rint, 1048576.75, 1048577.0),
12663     TEST_f_f (rint, 2097152.75, 2097153.0),
12664     TEST_f_f (rint, -1048576.75, -1048577.0),
12665     TEST_f_f (rint, -2097152.75, -2097153.0),
12666 #ifndef TEST_FLOAT
12667     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12668     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12669     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12670     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12671     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12672     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12673     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12674     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12675     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12676     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12677 #endif
12678 #ifdef TEST_LDOUBLE
12679     /* The result can only be represented in long double.  */
12680     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12681     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12682     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12683     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12684     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12685 # if LDBL_MANT_DIG > 100
12686     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12687     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12688     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12689 # endif
12690     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12691     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12692     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12693     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12694     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12695 # if LDBL_MANT_DIG > 100
12696     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12697     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12698     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12700     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12701     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12702     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12703     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12704     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12705     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12707     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12708     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12709     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12710     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12711     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12712     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12713 # endif
12714 #endif
12715     END_DATA (rint_tonearest)
12716   };
12718 static void
12719 rint_test_tonearest (void)
12721   START (rint_tonearest);
12722   RUN_TEST_LOOP_f_f (rint, rint_tonearest_test_data, FE_TONEAREST);
12723   END (rint_tonearest);
12726 static const struct test_f_f_data rint_towardzero_test_data[] =
12727   {
12728     START_DATA (rint_towardzero),
12729     TEST_f_f (rint, 2.0, 2.0),
12730     TEST_f_f (rint, 1.5, 1.0),
12731     TEST_f_f (rint, 1.0, 1.0),
12732     TEST_f_f (rint, 0.5, 0.0),
12733     TEST_f_f (rint, 0.0, 0.0),
12734     TEST_f_f (rint, minus_zero, minus_zero),
12735     TEST_f_f (rint, -0.5, -0.0),
12736     TEST_f_f (rint, -1.0, -1.0),
12737     TEST_f_f (rint, -1.5, -1.0),
12738     TEST_f_f (rint, -2.0, -2.0),
12739     TEST_f_f (rint, 0.1, 0.0),
12740     TEST_f_f (rint, 0.25, 0.0),
12741     TEST_f_f (rint, 0.625, 0.0),
12742     TEST_f_f (rint, -0.1, -0.0),
12743     TEST_f_f (rint, -0.25, -0.0),
12744     TEST_f_f (rint, -0.625, -0.0),
12745     TEST_f_f (rint, 1048576.75, 1048576.0),
12746     TEST_f_f (rint, 2097152.75, 2097152.0),
12747     TEST_f_f (rint, -1048576.75, -1048576.0),
12748     TEST_f_f (rint, -2097152.75, -2097152.0),
12749 #ifndef TEST_FLOAT
12750     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
12751     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
12752     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
12753     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
12754     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
12755     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
12756     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
12757     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
12758     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
12759     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
12760 #endif
12761 #ifdef TEST_LDOUBLE
12762     /* The result can only be represented in long double.  */
12763     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
12764     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12765     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12766     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
12767     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
12768 # if LDBL_MANT_DIG > 100
12769     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
12770     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
12771     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
12772 # endif
12773     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
12774     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12775     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12776     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
12777     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
12778 # if LDBL_MANT_DIG > 100
12779     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
12780     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
12781     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
12783     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12784     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12785     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12786     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
12787     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
12788     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
12790     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12791     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12792     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12793     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
12794     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
12795     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
12796 # endif
12797 #endif
12798     END_DATA (rint_towardzero)
12799   };
12801 static void
12802 rint_test_towardzero (void)
12804   START (rint_towardzero);
12805   RUN_TEST_LOOP_f_f (rint, rint_towardzero_test_data, FE_TOWARDZERO);
12806   END (rint_towardzero);
12809 static const struct test_f_f_data rint_downward_test_data[] =
12810   {
12811     START_DATA (rint_downward),
12812     TEST_f_f (rint, 2.0, 2.0),
12813     TEST_f_f (rint, 1.5, 1.0),
12814     TEST_f_f (rint, 1.0, 1.0),
12815     TEST_f_f (rint, 0.5, 0.0),
12816     TEST_f_f (rint, 0.0, 0.0),
12817     TEST_f_f (rint, minus_zero, minus_zero),
12818     TEST_f_f (rint, -0.5, -1.0),
12819     TEST_f_f (rint, -1.0, -1.0),
12820     TEST_f_f (rint, -1.5, -2.0),
12821     TEST_f_f (rint, -2.0, -2.0),
12822     TEST_f_f (rint, 0.1, 0.0),
12823     TEST_f_f (rint, 0.25, 0.0),
12824     TEST_f_f (rint, 0.625, 0.0),
12825     TEST_f_f (rint, -0.1, -1.0),
12826     TEST_f_f (rint, -0.25, -1.0),
12827     TEST_f_f (rint, -0.625, -1.0),
12828     TEST_f_f (rint, 1048576.75, 1048576.0),
12829     TEST_f_f (rint, 2097152.75, 2097152.0),
12830     TEST_f_f (rint, -1048576.75, -1048577.0),
12831     TEST_f_f (rint, -2097152.75, -2097153.0),
12832 #ifndef TEST_FLOAT
12833     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
12834     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
12835     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
12836     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
12837     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
12838     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12839     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12840     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12841     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12842     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12843 #endif
12844 #ifdef TEST_LDOUBLE
12845     /* The result can only be represented in long double.  */
12846     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
12847     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12848     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12849     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
12850     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
12851 # if LDBL_MANT_DIG > 100
12852     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
12853     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
12854     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
12855 # endif
12856     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12857     TEST_f_f (rint, -4503599627370496.25L, -4503599627370497.0L),
12858     TEST_f_f (rint, -4503599627370496.5L, -4503599627370497.0L),
12859     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12860     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12861 # if LDBL_MANT_DIG > 100
12862     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12863     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12864     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12866     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12867     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12868     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12869     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
12870     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
12871     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
12873     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740992.0L),
12874     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740993.0L),
12875     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740994.0L),
12876     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12877     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12878     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12879 # endif
12880 #endif
12881     END_DATA (rint_downward)
12882   };
12884 static void
12885 rint_test_downward (void)
12887   START (rint_downward);
12888   RUN_TEST_LOOP_f_f (rint, rint_downward_test_data, FE_DOWNWARD);
12889   END (rint_downward);
12892 static const struct test_f_f_data rint_upward_test_data[] =
12893   {
12894     START_DATA (rint_upward),
12895     TEST_f_f (rint, 2.0, 2.0),
12896     TEST_f_f (rint, 1.5, 2.0),
12897     TEST_f_f (rint, 1.0, 1.0),
12898     TEST_f_f (rint, 0.5, 1.0),
12899     TEST_f_f (rint, 0.0, 0.0),
12900     TEST_f_f (rint, minus_zero, minus_zero),
12901     TEST_f_f (rint, -0.5, -0.0),
12902     TEST_f_f (rint, -1.0, -1.0),
12903     TEST_f_f (rint, -1.5, -1.0),
12904     TEST_f_f (rint, -2.0, -2.0),
12905     TEST_f_f (rint, 0.1, 1.0),
12906     TEST_f_f (rint, 0.25, 1.0),
12907     TEST_f_f (rint, 0.625, 1.0),
12908     TEST_f_f (rint, -0.1, -0.0),
12909     TEST_f_f (rint, -0.25, -0.0),
12910     TEST_f_f (rint, -0.625, -0.0),
12911     TEST_f_f (rint, 1048576.75, 1048577.0),
12912     TEST_f_f (rint, 2097152.75, 2097153.0),
12913     TEST_f_f (rint, -1048576.75, -1048576.0),
12914     TEST_f_f (rint, -2097152.75, -2097152.0),
12915 #ifndef TEST_FLOAT
12916     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12917     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12918     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12919     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12920     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12921     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
12922     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
12923     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
12924     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
12925     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
12926 #endif
12927 #ifdef TEST_LDOUBLE
12928     /* The result can only be represented in long double.  */
12929     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12930     TEST_f_f (rint, 4503599627370496.25L, 4503599627370497.0L),
12931     TEST_f_f (rint, 4503599627370496.5L, 4503599627370497.0L),
12932     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12933     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12934 # if LDBL_MANT_DIG > 100
12935     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12936     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12937     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12938 # endif
12939     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
12940     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12941     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12942     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
12943     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
12944 # if LDBL_MANT_DIG > 100
12945     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
12946     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
12947     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
12949     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740992.0L),
12950     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740993.0L),
12951     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740994.0L),
12952     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12953     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12954     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12956     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12957     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12958     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12959     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
12960     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
12961     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
12962 # endif
12963 #endif
12964     END_DATA (rint_upward)
12965   };
12967 static void
12968 rint_test_upward (void)
12970   START (rint_upward);
12971   RUN_TEST_LOOP_f_f (rint, rint_upward_test_data, FE_UPWARD);
12972   END (rint_upward);
12975 static const struct test_f_f_data round_test_data[] =
12976   {
12977     START_DATA (round),
12978     /* TODO: missing +/-Inf as well as qNaN tests.  */
12980     TEST_f_f (round, 0, 0),
12981     TEST_f_f (round, minus_zero, minus_zero),
12982     TEST_f_f (round, 0.2L, 0.0),
12983     TEST_f_f (round, -0.2L, minus_zero),
12984     TEST_f_f (round, 0.5, 1.0),
12985     TEST_f_f (round, -0.5, -1.0),
12986     TEST_f_f (round, 0.8L, 1.0),
12987     TEST_f_f (round, -0.8L, -1.0),
12988     TEST_f_f (round, 1.5, 2.0),
12989     TEST_f_f (round, -1.5, -2.0),
12990     TEST_f_f (round, 0.1, 0.0),
12991     TEST_f_f (round, 0.25, 0.0),
12992     TEST_f_f (round, 0.625, 1.0),
12993     TEST_f_f (round, -0.1, -0.0),
12994     TEST_f_f (round, -0.25, -0.0),
12995     TEST_f_f (round, -0.625, -1.0),
12996     TEST_f_f (round, 2097152.5, 2097153),
12997     TEST_f_f (round, -2097152.5, -2097153),
12999 #ifdef TEST_LDOUBLE
13000     /* The result can only be represented in long double.  */
13001     TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L),
13002     TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L),
13003     TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L),
13004     TEST_f_f (round, 4503599627370496.75L, 4503599627370497.0L),
13005     TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L),
13006 # if LDBL_MANT_DIG > 100
13007     TEST_f_f (round, 4503599627370494.5000000000001L, 4503599627370495.0L),
13008     TEST_f_f (round, 4503599627370495.5000000000001L, 4503599627370496.0L),
13009     TEST_f_f (round, 4503599627370496.5000000000001L, 4503599627370497.0L),
13010 # endif
13012     TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L),
13013     TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L),
13014     TEST_f_f (round, -4503599627370496.5L, -4503599627370497.0L),
13015     TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L),
13016     TEST_f_f (round, -4503599627370497.5L, -4503599627370498.0L),
13017 # if LDBL_MANT_DIG > 100
13018     TEST_f_f (round, -4503599627370494.5000000000001L, -4503599627370495.0L),
13019     TEST_f_f (round, -4503599627370495.5000000000001L, -4503599627370496.0L),
13020     TEST_f_f (round, -4503599627370496.5000000000001L, -4503599627370497.0L),
13021 # endif
13023     TEST_f_f (round, 9007199254740991.5L, 9007199254740992.0L),
13024     TEST_f_f (round, 9007199254740992.25L, 9007199254740992.0L),
13025     TEST_f_f (round, 9007199254740992.5L, 9007199254740993.0L),
13026     TEST_f_f (round, 9007199254740992.75L, 9007199254740993.0L),
13027     TEST_f_f (round, 9007199254740993.5L, 9007199254740994.0L),
13029     TEST_f_f (round, -9007199254740991.5L, -9007199254740992.0L),
13030     TEST_f_f (round, -9007199254740992.25L, -9007199254740992.0L),
13031     TEST_f_f (round, -9007199254740992.5L, -9007199254740993.0L),
13032     TEST_f_f (round, -9007199254740992.75L, -9007199254740993.0L),
13033     TEST_f_f (round, -9007199254740993.5L, -9007199254740994.0L),
13035 # if LDBL_MANT_DIG > 100
13036     TEST_f_f (round, 9007199254740991.0000000000001L, 9007199254740991.0L),
13037     TEST_f_f (round, 9007199254740992.0000000000001L, 9007199254740992.0L),
13038     TEST_f_f (round, 9007199254740993.0000000000001L, 9007199254740993.0L),
13039     TEST_f_f (round, 9007199254740991.5000000000001L, 9007199254740992.0L),
13040     TEST_f_f (round, 9007199254740992.5000000000001L, 9007199254740993.0L),
13041     TEST_f_f (round, 9007199254740993.5000000000001L, 9007199254740994.0L),
13043     TEST_f_f (round, -9007199254740991.0000000000001L, -9007199254740991.0L),
13044     TEST_f_f (round, -9007199254740992.0000000000001L, -9007199254740992.0L),
13045     TEST_f_f (round, -9007199254740993.0000000000001L, -9007199254740993.0L),
13046     TEST_f_f (round, -9007199254740991.5000000000001L, -9007199254740992.0L),
13047     TEST_f_f (round, -9007199254740992.5000000000001L, -9007199254740993.0L),
13048     TEST_f_f (round, -9007199254740993.5000000000001L, -9007199254740994.0L),
13049 # endif
13051     TEST_f_f (round, 72057594037927935.5L, 72057594037927936.0L),
13052     TEST_f_f (round, 72057594037927936.25L, 72057594037927936.0L),
13053     TEST_f_f (round, 72057594037927936.5L, 72057594037927937.0L),
13054     TEST_f_f (round, 72057594037927936.75L, 72057594037927937.0L),
13055     TEST_f_f (round, 72057594037927937.5L, 72057594037927938.0L),
13057     TEST_f_f (round, -72057594037927935.5L, -72057594037927936.0L),
13058     TEST_f_f (round, -72057594037927936.25L, -72057594037927936.0L),
13059     TEST_f_f (round, -72057594037927936.5L, -72057594037927937.0L),
13060     TEST_f_f (round, -72057594037927936.75L, -72057594037927937.0L),
13061     TEST_f_f (round, -72057594037927937.5L, -72057594037927938.0L),
13063     TEST_f_f (round, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
13064     TEST_f_f (round, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
13065     TEST_f_f (round, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
13066     TEST_f_f (round, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
13067     TEST_f_f (round, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
13068 #endif
13069     END_DATA (round)
13070   };
13072 static void
13073 round_test (void)
13075   START (round);
13076   RUN_TEST_LOOP_f_f (round, round_test_data, );
13077   END (round);
13081 static const struct test_ff_f_data scalb_test_data[] =
13082   {
13083     START_DATA (scalb),
13084     TEST_ff_f (scalb, 2.0, 0.5, qnan_value, INVALID_EXCEPTION),
13085     TEST_ff_f (scalb, 3.0, -2.5, qnan_value, INVALID_EXCEPTION),
13087     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13088     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13090     TEST_ff_f (scalb, 1, 0, 1),
13091     TEST_ff_f (scalb, -1, 0, -1),
13093     TEST_ff_f (scalb, 0, plus_infty, qnan_value, INVALID_EXCEPTION),
13094     TEST_ff_f (scalb, minus_zero, plus_infty, qnan_value, INVALID_EXCEPTION),
13096     TEST_ff_f (scalb, 0, 2, 0),
13097     TEST_ff_f (scalb, minus_zero, -4, minus_zero),
13098     TEST_ff_f (scalb, 0, 0, 0),
13099     TEST_ff_f (scalb, minus_zero, 0, minus_zero),
13100     TEST_ff_f (scalb, 0, -1, 0),
13101     TEST_ff_f (scalb, minus_zero, -10, minus_zero),
13102     TEST_ff_f (scalb, 0, minus_infty, 0),
13103     TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero),
13105     TEST_ff_f (scalb, plus_infty, -1, plus_infty),
13106     TEST_ff_f (scalb, minus_infty, -10, minus_infty),
13107     TEST_ff_f (scalb, plus_infty, 0, plus_infty),
13108     TEST_ff_f (scalb, minus_infty, 0, minus_infty),
13109     TEST_ff_f (scalb, plus_infty, 2, plus_infty),
13110     TEST_ff_f (scalb, minus_infty, 100, minus_infty),
13112     TEST_ff_f (scalb, 0.1L, minus_infty, 0.0),
13113     TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero),
13115     TEST_ff_f (scalb, 1, plus_infty, plus_infty),
13116     TEST_ff_f (scalb, -1, plus_infty, minus_infty),
13117     TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty),
13118     TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty),
13120     TEST_ff_f (scalb, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13121     TEST_ff_f (scalb, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13123     TEST_ff_f (scalb, qnan_value, 1, qnan_value),
13124     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13125     TEST_ff_f (scalb, qnan_value, 0, qnan_value),
13126     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13127     TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value),
13128     TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value),
13129     TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value),
13131     TEST_ff_f (scalb, 0.8L, 4, 12.8L),
13132     TEST_ff_f (scalb, -0.854375L, 5, -27.34L),
13133     END_DATA (scalb)
13134   };
13136 static void
13137 scalb_test (void)
13140   START (scalb);
13141   RUN_TEST_LOOP_ff_f (scalb, scalb_test_data, );
13142   END (scalb);
13146 static void
13147 scalbn_test (void)
13150   START (scalbn);
13152   TEST_fi_f (scalbn, 0, 0, 0);
13153   TEST_fi_f (scalbn, minus_zero, 0, minus_zero);
13155   TEST_fi_f (scalbn, plus_infty, 1, plus_infty);
13156   TEST_fi_f (scalbn, minus_infty, 1, minus_infty);
13157   TEST_fi_f (scalbn, qnan_value, 1, qnan_value);
13159   TEST_fi_f (scalbn, 0.8L, 4, 12.8L);
13160   TEST_fi_f (scalbn, -0.854375L, 5, -27.34L);
13162   TEST_fi_f (scalbn, 1, 0L, 1);
13164   TEST_fi_f (scalbn, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13165   TEST_fi_f (scalbn, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13166   TEST_fi_f (scalbn, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13167   TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13168   TEST_fi_f (scalbn, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13169   TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13170   TEST_fi_f (scalbn, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13171   TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13173   END (scalbn);
13177 static void
13178 scalbln_test (void)
13181   START (scalbln);
13183   TEST_fl_f (scalbln, 0, 0, 0);
13184   TEST_fl_f (scalbln, minus_zero, 0, minus_zero);
13186   TEST_fl_f (scalbln, plus_infty, 1, plus_infty);
13187   TEST_fl_f (scalbln, minus_infty, 1, minus_infty);
13188   TEST_fl_f (scalbln, qnan_value, 1, qnan_value);
13190   TEST_fl_f (scalbln, 0.8L, 4, 12.8L);
13191   TEST_fl_f (scalbln, -0.854375L, 5, -27.34L);
13193   TEST_fl_f (scalbln, 1, 0L, 1);
13195   TEST_fl_f (scalbln, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13196   TEST_fl_f (scalbln, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13197   TEST_fl_f (scalbln, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13198   TEST_fl_f (scalbln, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13199   TEST_fl_f (scalbln, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13200   TEST_fl_f (scalbln, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13201   TEST_fl_f (scalbln, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13202   TEST_fl_f (scalbln, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13204   TEST_fl_f (scalbln, 1, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13205   TEST_fl_f (scalbln, 1, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13206   TEST_fl_f (scalbln, max_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13207   TEST_fl_f (scalbln, max_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13208   TEST_fl_f (scalbln, min_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13209   TEST_fl_f (scalbln, min_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13210   TEST_fl_f (scalbln, min_value / 4, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13211   TEST_fl_f (scalbln, min_value / 4, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13213 #if LONG_MAX >= 0x100000000
13214   TEST_fl_f (scalbln, 1, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13215   TEST_fl_f (scalbln, 1, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13216   TEST_fl_f (scalbln, max_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13217   TEST_fl_f (scalbln, max_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13218   TEST_fl_f (scalbln, min_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13219   TEST_fl_f (scalbln, min_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13220   TEST_fl_f (scalbln, min_value / 4, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13221   TEST_fl_f (scalbln, min_value / 4, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13222 #endif
13224   END (scalbn);
13228 static void
13229 signbit_test (void)
13231   /* TODO: missing qNaN tests.  */
13233   START (signbit);
13235   TEST_f_b (signbit, 0, 0);
13236   TEST_f_b (signbit, minus_zero, 1);
13237   TEST_f_b (signbit, plus_infty, 0);
13238   TEST_f_b (signbit, minus_infty, 1);
13240   /* signbit (x) != 0 for x < 0.  */
13241   TEST_f_b (signbit, -1, 1);
13242   /* signbit (x) == 0 for x >= 0.  */
13243   TEST_f_b (signbit, 1, 0);
13245   END (signbit);
13249 static const struct test_f_f_data sin_test_data[] =
13250   {
13251     START_DATA (sin),
13252     TEST_f_f (sin, 0, 0),
13253     TEST_f_f (sin, minus_zero, minus_zero),
13254     TEST_f_f (sin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13255     TEST_f_f (sin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13256     TEST_f_f (sin, qnan_value, qnan_value, ERRNO_UNCHANGED),
13258     TEST_f_f (sin, M_PI_6l, 0.5),
13259     TEST_f_f (sin, -M_PI_6l, -0.5),
13260     TEST_f_f (sin, M_PI_2l, 1),
13261     TEST_f_f (sin, -M_PI_2l, -1),
13262     TEST_f_f (sin, 0.75L, 0.681638760023334166733241952779893935L),
13264     TEST_f_f (sin, 0x1p65, -0.047183876212354673805106149805700013943218L),
13265     TEST_f_f (sin, -0x1p65, 0.047183876212354673805106149805700013943218L),
13267     TEST_f_f (sin, 0x1.7f4134p+103, -6.6703229329788657073304190650534846045235e-08L),
13269 #ifdef TEST_DOUBLE
13270     TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868),
13271     TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1),
13272 #endif
13274 #ifndef TEST_FLOAT
13275     TEST_f_f (sin, 1e22, -0.8522008497671888017727058937530293682618L),
13276     TEST_f_f (sin, 0x1p1023, 0.5631277798508840134529434079444683477104L),
13277 #endif
13279 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13280     TEST_f_f (sin, 0x1p16383L, 0.3893629985894208126948115852610595405563L),
13281 #endif
13283     TEST_f_f (sin, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L),
13284     TEST_f_f (sin, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L),
13285     TEST_f_f (sin, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L),
13286     TEST_f_f (sin, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L),
13287     TEST_f_f (sin, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L),
13288     TEST_f_f (sin, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L),
13289     END_DATA (sin)
13290   };
13292 static void
13293 sin_test (void)
13295   errno = 0;
13296   FUNC(sin) (0);
13297   if (errno == ENOSYS)
13298     /* Function not implemented.  */
13299     return;
13301   START (sin);
13302   RUN_TEST_LOOP_f_f (sin, sin_test_data, );
13303   END (sin);
13307 static const struct test_f_f_data sin_tonearest_test_data[] =
13308   {
13309     START_DATA (sin_tonearest),
13310     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13311     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13312     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13313     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13314     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13315     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13316     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13317     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13318     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13319     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13320     END_DATA (sin_tonearest)
13321   };
13323 static void
13324 sin_test_tonearest (void)
13326   errno = 0;
13327   FUNC(sin) (0);
13328   if (errno == ENOSYS)
13329     /* Function not implemented.  */
13330     return;
13332   START (sin_tonearest);
13333   RUN_TEST_LOOP_f_f (sin, sin_tonearest_test_data, FE_TONEAREST);
13334   END (sin_tonearest);
13338 static const struct test_f_f_data sin_towardzero_test_data[] =
13339   {
13340     START_DATA (sin_towardzero),
13341     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13342     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13343     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13344     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13345     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13346     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13347     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13348     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13349     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13350     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13351     END_DATA (sin_towardzero)
13352   };
13354 static void
13355 sin_test_towardzero (void)
13357   errno = 0;
13358   FUNC(sin) (0);
13359   if (errno == ENOSYS)
13360     /* Function not implemented.  */
13361     return;
13363   START (sin_towardzero);
13364   RUN_TEST_LOOP_f_f (sin, sin_towardzero_test_data, FE_TOWARDZERO);
13365   END (sin_towardzero);
13369 static const struct test_f_f_data sin_downward_test_data[] =
13370   {
13371     START_DATA (sin_downward),
13372     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13373     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13374     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13375     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13376     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13377     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13378     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13379     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13380     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13381     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13382     END_DATA (sin_downward)
13383   };
13385 static void
13386 sin_test_downward (void)
13388   errno = 0;
13389   FUNC(sin) (0);
13390   if (errno == ENOSYS)
13391     /* Function not implemented.  */
13392     return;
13394   START (sin_downward);
13395   RUN_TEST_LOOP_f_f (sin, sin_downward_test_data, FE_DOWNWARD);
13396   END (sin_downward);
13400 static const struct test_f_f_data sin_upward_test_data[] =
13401   {
13402     START_DATA (sin_upward),
13403     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13404     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13405     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13406     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13407     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13408     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13409     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13410     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13411     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13412     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13413     END_DATA (sin_upward)
13414   };
13416 static void
13417 sin_test_upward (void)
13419   errno = 0;
13420   FUNC(sin) (0);
13421   if (errno == ENOSYS)
13422     /* Function not implemented.  */
13423     return;
13425   START (sin_upward);
13426   RUN_TEST_LOOP_f_f (sin, sin_upward_test_data, FE_UPWARD);
13427   END (sin_upward);
13431 static void
13432 sincos_test (void)
13434   FLOAT sin_res, cos_res;
13436   errno = 0;
13437   FUNC(sincos) (0, &sin_res, &cos_res);
13438   if (errno == ENOSYS)
13439     /* Function not implemented.  */
13440     return;
13442   START (sincos);
13444   /* sincos is treated differently because it returns void.  */
13445   TEST_extra (sincos, 0, 0, 1);
13447   TEST_extra (sincos, minus_zero, minus_zero, 1);
13448   TEST_extra (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13449   TEST_extra (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13450   TEST_extra (sincos, qnan_value, qnan_value, qnan_value);
13452   /* The value of M_PI_2l is never exactly PI/2, and therefore the
13453      answer is never exactly zero. The answer is equal to the error
13454      in rounding PI/2 for the type used.  Thus the answer is unique
13455      to each type.  */
13456 #ifdef TEST_FLOAT
13457   /* 32-bit float.  */
13458   TEST_extra (sincos, M_PI_2l, 1, -0x1.777a5cp-25L);
13459 #endif
13460 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
13461   /* 64-bit double or 64-bit long double.  */
13462   TEST_extra (sincos, M_PI_2l, 1, 0x1.1a62633145c07p-54L);
13463 #endif
13464 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
13465   /* 96-bit long double.  */
13466   TEST_extra (sincos, M_PI_2l, 1, -0xe.ce675d1fc8f8cbbp-69L);
13467 #endif
13468 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
13469   /* 128-bit IBM long double.  */
13470   TEST_extra (sincos, M_PI_2l, 1, 0x1.c1cd129024e088a67cc74020bcp-107L);
13471 #endif
13472 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
13473   /* 128-bit long double.  */
13474   TEST_extra (sincos, M_PI_2l, 1, 0x1.cd129024e088a67cc74020bbea64p-115L);
13475 #endif
13477   TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L);
13478   TEST_extra (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5);
13479   TEST_extra (sincos, 0.75L, 0.681638760023334166733241952779893935L, 0.731688868873820886311838753000084544L);
13481   TEST_extra (sincos, 0x1p65, -0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13482   TEST_extra (sincos, -0x1p65, 0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13484 #ifdef TEST_DOUBLE
13485   TEST_extra (sincos, 0.80190127184058835, 0.71867942238767868, 0.69534156199418473);
13486 #endif
13488 #ifndef TEST_FLOAT
13489   TEST_extra (sincos, 1e22, -0.8522008497671888017727058937530293682618L, 0.5232147853951389454975944733847094921409L);
13490   TEST_extra (sincos, 0x1p1023, 0.5631277798508840134529434079444683477104L, -0.826369834614147994500785680811743734805L);
13491 #endif
13493 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13494   TEST_extra (sincos, 0x1p16383L, 0.3893629985894208126948115852610595405563L, 0.9210843909921906206874509522505756251609L);
13495 #endif
13497   TEST_extra (sincos, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L, -9.25879022854837867303861764107414946730833e-01L);
13498   TEST_extra (sincos, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L, 7.81914638714960072263910298466369236613162e-01L);
13499   TEST_extra (sincos, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L, 9.98819362551949040703862043664101081064641e-01L);
13500   TEST_extra (sincos, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L, 8.53021039830304158051791467692161107353094e-01L);
13501   TEST_extra (sincos, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L, 8.68095904660550604334592502063501320395739e-01L);
13502   TEST_extra (sincos, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L, -1.65568979490578758865468278195361551113358e-01L);
13504   END (sincos);
13507 static const struct test_f_f_data sinh_test_data[] =
13508   {
13509     START_DATA (sinh),
13510     TEST_f_f (sinh, 0, 0),
13511     TEST_f_f (sinh, minus_zero, minus_zero),
13513 #ifndef TEST_INLINE
13514     TEST_f_f (sinh, plus_infty, plus_infty),
13515     TEST_f_f (sinh, minus_infty, minus_infty),
13516 #endif
13517     TEST_f_f (sinh, qnan_value, qnan_value),
13519     TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L),
13520     TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L),
13521     END_DATA (sinh)
13522   };
13524 static void
13525 sinh_test (void)
13527   errno = 0;
13528   FUNC(sinh) (0.7L);
13529   if (errno == ENOSYS)
13530     /* Function not implemented.  */
13531     return;
13533   START (sinh);
13534   RUN_TEST_LOOP_f_f (sinh, sinh_test_data, );
13535   END (sinh);
13539 static const struct test_f_f_data sinh_tonearest_test_data[] =
13540   {
13541     START_DATA (sinh_tonearest),
13542     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13543     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13544     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13545     END_DATA (sinh_tonearest)
13546   };
13548 static void
13549 sinh_test_tonearest (void)
13551   errno = 0;
13552   FUNC(sinh) (0);
13553   if (errno == ENOSYS)
13554     /* Function not implemented.  */
13555     return;
13557   START (sinh_tonearest);
13558   RUN_TEST_LOOP_f_f (sinh, sinh_tonearest_test_data, FE_TONEAREST);
13559   END (sinh_tonearest);
13563 static const struct test_f_f_data sinh_towardzero_test_data[] =
13564   {
13565     START_DATA (sinh_towardzero),
13566     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13567     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13568     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13569     END_DATA (sinh_towardzero)
13570   };
13572 static void
13573 sinh_test_towardzero (void)
13575   errno = 0;
13576   FUNC(sinh) (0);
13577   if (errno == ENOSYS)
13578     /* Function not implemented.  */
13579     return;
13581   START (sinh_towardzero);
13582   RUN_TEST_LOOP_f_f (sinh, sinh_towardzero_test_data, FE_TOWARDZERO);
13583   END (sinh_towardzero);
13587 static const struct test_f_f_data sinh_downward_test_data[] =
13588   {
13589     START_DATA (sinh_downward),
13590     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13591     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13592     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13593     END_DATA (sinh_downward)
13594   };
13596 static void
13597 sinh_test_downward (void)
13599   errno = 0;
13600   FUNC(sinh) (0);
13601   if (errno == ENOSYS)
13602     /* Function not implemented.  */
13603     return;
13605   START (sinh_downward);
13606   RUN_TEST_LOOP_f_f (sinh, sinh_downward_test_data, FE_DOWNWARD);
13607   END (sinh_downward);
13611 static const struct test_f_f_data sinh_upward_test_data[] =
13612   {
13613     START_DATA (sinh_upward),
13614     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13615     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13616     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13617     END_DATA (sinh_upward)
13618   };
13620 static void
13621 sinh_test_upward (void)
13623   errno = 0;
13624   FUNC(sinh) (0);
13625   if (errno == ENOSYS)
13626     /* Function not implemented.  */
13627     return;
13629   START (sinh_upward);
13630   RUN_TEST_LOOP_f_f (sinh, sinh_upward_test_data, FE_UPWARD);
13631   END (sinh_upward);
13635 static const struct test_f_f_data sqrt_test_data[] =
13636   {
13637     START_DATA (sqrt),
13638     TEST_f_f (sqrt, 0, 0),
13639     TEST_f_f (sqrt, qnan_value, qnan_value),
13640     TEST_f_f (sqrt, plus_infty, plus_infty),
13642     TEST_f_f (sqrt, minus_zero, minus_zero),
13644     /* sqrt (x) == qNaN plus invalid exception for x < 0.  */
13645     TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION),
13646     TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION),
13647     TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION),
13649     TEST_f_f (sqrt, 2209, 47),
13650     TEST_f_f (sqrt, 4, 2),
13651     TEST_f_f (sqrt, 2, M_SQRT2l),
13652     TEST_f_f (sqrt, 0.25, 0.5),
13653     TEST_f_f (sqrt, 6642.25, 81.5),
13654     TEST_f_f (sqrt, 15190.5625L, 123.25L),
13655     TEST_f_f (sqrt, 0.75L, 0.866025403784438646763723170752936183L),
13656     END_DATA (sqrt)
13657   };
13659 static void
13660 sqrt_test (void)
13662   errno = 0;
13663   FUNC(sqrt) (1);
13664   if (errno == ENOSYS)
13665     /* Function not implemented.  */
13666     return;
13668   START (sqrt);
13669   RUN_TEST_LOOP_f_f (sqrt, sqrt_test_data, );
13670   END (sqrt);
13674 static const struct test_f_f_data tan_test_data[] =
13675   {
13676     START_DATA (tan),
13677     TEST_f_f (tan, 0, 0),
13678     TEST_f_f (tan, minus_zero, minus_zero),
13679     TEST_f_f (tan, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13680     TEST_f_f (tan, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13681     TEST_f_f (tan, qnan_value, qnan_value, ERRNO_UNCHANGED),
13683     TEST_f_f (tan, M_PI_4l, 1),
13684     TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L),
13686     TEST_f_f (tan, 0x1p65, -0.0472364872359047946798414219288370688827L),
13687     TEST_f_f (tan, -0x1p65, 0.0472364872359047946798414219288370688827L),
13689     TEST_f_f (tan, 0xc.9p-4, 0.9995162902115457818029468900654150261381L),
13690     TEST_f_f (tan, 0xc.908p-4, 0.9997603425502441410973077452249560802034L),
13691     TEST_f_f (tan, 0xc.90cp-4, 0.9998823910588060302788513970802357770031L),
13692     TEST_f_f (tan, 0xc.90ep-4, 0.9999434208994808753305784795924711152508L),
13693     TEST_f_f (tan, 0xc.90fp-4, 0.9999739372166156702433266059635165160515L),
13694     TEST_f_f (tan, 0xc.90f8p-4, 0.9999891957244072765118898375645469865764L),
13695     TEST_f_f (tan, 0xc.90fcp-4, 0.9999968250656122402859679132395522927393L),
13696     TEST_f_f (tan, 0xc.90fdp-4, 0.9999987324100083358016192309006353329444L),
13697     TEST_f_f (tan, 0xc.90fd8p-4, 0.9999996860835706212861509874451585282616L),
13698     TEST_f_f (tan, 0xc.90fdap-4, 0.9999999245021033010474530133665235922808L),
13699     TEST_f_f (tan, 0xc.ap-4, 1.0073556597407272165371804539701396631519L),
13700     TEST_f_f (tan, 0xc.98p-4, 1.0034282930863044654045449407466962736255L),
13701     TEST_f_f (tan, 0xc.94p-4, 1.0014703786820082237342656561856877993328L),
13702     TEST_f_f (tan, 0xc.92p-4, 1.0004928571392300571266638743539017593717L),
13703     TEST_f_f (tan, 0xc.91p-4, 1.0000044544650244953647966900221905361131L),
13704     TEST_f_f (tan, 0xc.90fep-4, 1.0000006397580424009014454926842136804016L),
13705     TEST_f_f (tan, 0xc.90fdcp-4, 1.0000001629206928242190327320047489394217L),
13706     TEST_f_f (tan, 0xc.90fdbp-4, 1.0000000437113909572052640953950483705005L),
13708     TEST_f_f (tan, -0xc.9p-4, -0.9995162902115457818029468900654150261381L),
13709     TEST_f_f (tan, -0xc.908p-4, -0.9997603425502441410973077452249560802034L),
13710     TEST_f_f (tan, -0xc.90cp-4, -0.9998823910588060302788513970802357770031L),
13711     TEST_f_f (tan, -0xc.90ep-4, -0.9999434208994808753305784795924711152508L),
13712     TEST_f_f (tan, -0xc.90fp-4, -0.9999739372166156702433266059635165160515L),
13713     TEST_f_f (tan, -0xc.90f8p-4, -0.9999891957244072765118898375645469865764L),
13714     TEST_f_f (tan, -0xc.90fcp-4, -0.9999968250656122402859679132395522927393L),
13715     TEST_f_f (tan, -0xc.90fdp-4, -0.9999987324100083358016192309006353329444L),
13716     TEST_f_f (tan, -0xc.90fd8p-4, -0.9999996860835706212861509874451585282616L),
13717     TEST_f_f (tan, -0xc.90fdap-4, -0.9999999245021033010474530133665235922808L),
13718     TEST_f_f (tan, -0xc.ap-4, -1.0073556597407272165371804539701396631519L),
13719     TEST_f_f (tan, -0xc.98p-4, -1.0034282930863044654045449407466962736255L),
13720     TEST_f_f (tan, -0xc.94p-4, -1.0014703786820082237342656561856877993328L),
13721     TEST_f_f (tan, -0xc.92p-4, -1.0004928571392300571266638743539017593717L),
13722     TEST_f_f (tan, -0xc.91p-4, -1.0000044544650244953647966900221905361131L),
13723     TEST_f_f (tan, -0xc.90fep-4, -1.0000006397580424009014454926842136804016L),
13724     TEST_f_f (tan, -0xc.90fdcp-4, -1.0000001629206928242190327320047489394217L),
13725     TEST_f_f (tan, -0xc.90fdbp-4, -1.0000000437113909572052640953950483705005L),
13727 #ifndef TEST_FLOAT
13728     TEST_f_f (tan, 1e22, -1.628778225606898878549375936939548513545L),
13729     TEST_f_f (tan, 0x1p1023, -0.6814476476066215012854144040167365190368L),
13730 #endif
13732 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13733     TEST_f_f (tan, 0x1p16383L, 0.422722393732022337800504160054440141575L),
13734 #endif
13735     END_DATA (tan)
13736   };
13738 static void
13739 tan_test (void)
13741   errno = 0;
13742   FUNC(tan) (0);
13743   if (errno == ENOSYS)
13744     /* Function not implemented.  */
13745     return;
13747   START (tan);
13748   RUN_TEST_LOOP_f_f (tan, tan_test_data, );
13749   END (tan);
13753 static const struct test_f_f_data tan_tonearest_test_data[] =
13754   {
13755     START_DATA (tan_tonearest),
13756     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13757     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13758     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13759     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13760     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13761     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13762     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13763     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13764     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13765     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13766     END_DATA (tan_tonearest)
13767   };
13769 static void
13770 tan_test_tonearest (void)
13772   errno = 0;
13773   FUNC(tan) (0);
13774   if (errno == ENOSYS)
13775     /* Function not implemented.  */
13776     return;
13778   START (tan_tonearest);
13779   RUN_TEST_LOOP_f_f (tan, tan_tonearest_test_data, FE_TONEAREST);
13780   END (tan_tonearest);
13784 static const struct test_f_f_data tan_towardzero_test_data[] =
13785   {
13786     START_DATA (tan_towardzero),
13787     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13788     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13789     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13790     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13791     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13792     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13793     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13794     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13795     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13796     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13797     END_DATA (tan_towardzero)
13798   };
13800 static void
13801 tan_test_towardzero (void)
13803   errno = 0;
13804   FUNC(tan) (0);
13805   if (errno == ENOSYS)
13806     /* Function not implemented.  */
13807     return;
13809   START (tan_towardzero);
13810   RUN_TEST_LOOP_f_f (tan, tan_towardzero_test_data, FE_TOWARDZERO);
13811   END (tan_towardzero);
13815 static const struct test_f_f_data tan_downward_test_data[] =
13816   {
13817     START_DATA (tan_downward),
13818     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13819     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13820     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13821     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13822     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13823     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13824     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13825     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13826     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13827     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13828     END_DATA (tan_downward)
13829   };
13831 static void
13832 tan_test_downward (void)
13834   errno = 0;
13835   FUNC(tan) (0);
13836   if (errno == ENOSYS)
13837     /* Function not implemented.  */
13838     return;
13840   START (tan_downward);
13841   RUN_TEST_LOOP_f_f (tan, tan_downward_test_data, FE_DOWNWARD);
13842   END (tan_downward);
13846 static const struct test_f_f_data tan_upward_test_data[] =
13847   {
13848     START_DATA (tan_upward),
13849     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13850     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13851     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13852     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13853     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13854     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13855     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13856     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13857     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13858     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13859     END_DATA (tan_upward)
13860   };
13862 static void
13863 tan_test_upward (void)
13865   errno = 0;
13866   FUNC(tan) (0);
13867   if (errno == ENOSYS)
13868     /* Function not implemented.  */
13869     return;
13871   START (tan_upward);
13872   RUN_TEST_LOOP_f_f (tan, tan_upward_test_data, FE_UPWARD);
13873   END (tan_upward);
13877 static const struct test_f_f_data tanh_test_data[] =
13878   {
13879     START_DATA (tanh),
13880     TEST_f_f (tanh, 0, 0),
13881     TEST_f_f (tanh, minus_zero, minus_zero),
13883 #ifndef TEST_INLINE
13884     TEST_f_f (tanh, plus_infty, 1),
13885     TEST_f_f (tanh, minus_infty, -1),
13886 #endif
13887     TEST_f_f (tanh, qnan_value, qnan_value),
13889     TEST_f_f (tanh, 0.75L, 0.635148952387287319214434357312496495L),
13890     TEST_f_f (tanh, -0.75L, -0.635148952387287319214434357312496495L),
13892     TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L),
13893     TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L),
13895     /* 2^-57  */
13896     TEST_f_f (tanh, 0x1p-57L, 6.938893903907228377647697925567626953125e-18L),
13897     END_DATA (tanh)
13898   };
13900 static void
13901 tanh_test (void)
13903   errno = 0;
13904   FUNC(tanh) (0.7L);
13905   if (errno == ENOSYS)
13906     /* Function not implemented.  */
13907     return;
13909   START (tanh);
13910   RUN_TEST_LOOP_f_f (tanh, tanh_test_data, );
13911   END (tanh);
13914 static const struct test_f_f_data tgamma_test_data[] =
13915   {
13916     START_DATA (tgamma),
13917     TEST_f_f (tgamma, plus_infty, plus_infty),
13918     TEST_f_f (tgamma, max_value, plus_infty, OVERFLOW_EXCEPTION),
13919     TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
13920     TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
13921     /* tgamma (x) == qNaN plus invalid exception for integer x <= 0.  */
13922     TEST_f_f (tgamma, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13923     TEST_f_f (tgamma, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13924     TEST_f_f (tgamma, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13925     TEST_f_f (tgamma, qnan_value, qnan_value),
13927     TEST_f_f (tgamma, 0.5, M_SQRT_PIl),
13928     TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl),
13930     TEST_f_f (tgamma, 1, 1),
13931     TEST_f_f (tgamma, 2, 1),
13932     TEST_f_f (tgamma, 3, 2),
13933     TEST_f_f (tgamma, 4, 6),
13934     TEST_f_f (tgamma, 5, 24),
13935     TEST_f_f (tgamma, 6, 120),
13936     TEST_f_f (tgamma, 7, 720),
13937     TEST_f_f (tgamma, 8, 5040),
13938     TEST_f_f (tgamma, 9,  40320),
13939     TEST_f_f (tgamma, 10, 362880),
13941     TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L),
13942     TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L),
13944     TEST_f_f (tgamma, 1.5L, 8.8622692545275801364908374167057259139877e-01L),
13945     TEST_f_f (tgamma, 2.5L, 1.3293403881791370204736256125058588870982e+00L),
13946     TEST_f_f (tgamma, 3.5L, 3.3233509704478425511840640312646472177454e+00L),
13947     TEST_f_f (tgamma, 4.5L, 1.1631728396567448929144224109426265262109e+01L),
13948     TEST_f_f (tgamma, 5.5L, 5.2342777784553520181149008492418193679490e+01L),
13949     TEST_f_f (tgamma, 6.5L, 2.8788527781504436099631954670830006523720e+02L),
13950     TEST_f_f (tgamma, 7.5L, 1.8712543057977883464760770536039504240418e+03L),
13951     TEST_f_f (tgamma, 8.5L, 1.4034407293483412598570577902029628180313e+04L),
13952     TEST_f_f (tgamma, 9.5L, 1.1929246199460900708784991216725183953266e+05L),
13953     TEST_f_f (tgamma, -1.5L, 2.3632718012073547030642233111215269103967e+00L),
13954     TEST_f_f (tgamma, -2.5L, -9.4530872048294188122568932444861076415869e-01L),
13955     TEST_f_f (tgamma, -3.5L, 2.7008820585226910892162552127103164690248e-01L),
13956     TEST_f_f (tgamma, -4.5L, -6.0019601300504246427027893615784810422774e-02L),
13957     TEST_f_f (tgamma, -5.5L, 1.0912654781909862986732344293779056440504e-02L),
13958     TEST_f_f (tgamma, -6.5L, -1.6788699664476712287280529682737009908468e-03L),
13959     TEST_f_f (tgamma, -7.5L, 2.2384932885968949716374039576982679877958e-04L),
13960     TEST_f_f (tgamma, -8.5L, -2.6335215159963470254557693619979623385833e-05L),
13961     TEST_f_f (tgamma, -9.5L, 2.7721279115751021320587045915768024616666e-06L),
13962     TEST_f_f (tgamma, 0x1p-24L, 1.6777215422784394050795179874582764575261e+07L),
13963     TEST_f_f (tgamma, -0x1p-24L, -1.6777216577215723853867349114260580375249e+07L),
13964     TEST_f_f (tgamma, 0x1p-53L, 9.0071992547409914227843350984672492007618e+15L),
13965     TEST_f_f (tgamma, -0x1p-53L, -9.0071992547409925772156649015329704137860e+15L),
13966     TEST_f_f (tgamma, 0x1p-64L, 1.8446744073709551615422784335098467139447e+19L),
13967     TEST_f_f (tgamma, -0x1p-64L, -1.8446744073709551616577215664901532860660e+19L),
13968     TEST_f_f (tgamma, 0x1p-106L, 8.1129638414606681695789005144063422784335e+31L),
13969     TEST_f_f (tgamma, -0x1p-106L, -8.1129638414606681695789005144064577215665e+31L),
13970     TEST_f_f (tgamma, 0x1p-113L, 1.0384593717069655257060992658440191422784e+34L),
13971     TEST_f_f (tgamma, -0x1p-113L, -1.0384593717069655257060992658440192577216e+34L),
13972     TEST_f_f (tgamma, 0x1p-127L, 1.7014118346046923173168730371588410572742e+38L),
13973     TEST_f_f (tgamma, -0x1p-127L, -1.7014118346046923173168730371588410572858e+38L),
13974 #ifdef TEST_FLOAT
13975     TEST_f_f (tgamma, 0x1p-128L, plus_infty, OVERFLOW_EXCEPTION),
13976     TEST_f_f (tgamma, -0x1p-128L, minus_infty, OVERFLOW_EXCEPTION),
13977     TEST_f_f (tgamma, 0x1p-149L, plus_infty, OVERFLOW_EXCEPTION),
13978     TEST_f_f (tgamma, -0x1p-149L, minus_infty, OVERFLOW_EXCEPTION),
13979 #else
13980     TEST_f_f (tgamma, 0x1p-128L, 3.4028236692093846346337460743176821145542e+38L),
13981     TEST_f_f (tgamma, -0x1p-128L, -3.4028236692093846346337460743176821145658e+38L),
13982     TEST_f_f (tgamma, 0x1p-149L, 7.1362384635297994052914298472474756819137e+44L),
13983     TEST_f_f (tgamma, -0x1p-149L, -7.1362384635297994052914298472474756819137e+44L),
13984 #endif
13985 #ifndef TEST_FLOAT
13986     TEST_f_f (tgamma, 0x1p-1023L, 8.9884656743115795386465259539451236680899e+307L),
13987     TEST_f_f (tgamma, -0x1p-1023L, -8.9884656743115795386465259539451236680899e+307L),
13988 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
13989     TEST_f_f (tgamma, 0x1p-1024L, plus_infty, OVERFLOW_EXCEPTION),
13990     TEST_f_f (tgamma, -0x1p-1024L, minus_infty, OVERFLOW_EXCEPTION),
13991     TEST_f_f (tgamma, 0x1p-1074L, plus_infty, OVERFLOW_EXCEPTION),
13992     TEST_f_f (tgamma, -0x1p-1074L, minus_infty, OVERFLOW_EXCEPTION),
13993 # else
13994     TEST_f_f (tgamma, 0x1p-1024L, 1.7976931348623159077293051907890247336180e+308L),
13995     TEST_f_f (tgamma, -0x1p-1024L, -1.7976931348623159077293051907890247336180e+308L),
13996     TEST_f_f (tgamma, 0x1p-1074L, 2.0240225330731061835249534671891730704956e+323L),
13997     TEST_f_f (tgamma, -0x1p-1074L, -2.0240225330731061835249534671891730704956e+323L),
13998 # endif
13999 #endif
14000 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
14001     TEST_f_f (tgamma, 0x1p-16383L, 5.9486574767861588254287966331400356538172e+4931L),
14002     TEST_f_f (tgamma, -0x1p-16383L, -5.9486574767861588254287966331400356538172e+4931L),
14003     TEST_f_f (tgamma, 0x1p-16384L, plus_infty, OVERFLOW_EXCEPTION),
14004     TEST_f_f (tgamma, -0x1p-16384L, minus_infty, OVERFLOW_EXCEPTION),
14005     TEST_f_f (tgamma, 0x1p-16445L, plus_infty, OVERFLOW_EXCEPTION),
14006     TEST_f_f (tgamma, -0x1p-16445L, minus_infty, OVERFLOW_EXCEPTION),
14007 # if LDBL_MANT_DIG >= 113
14008     TEST_f_f (tgamma, 0x1p-16494L, plus_infty, OVERFLOW_EXCEPTION),
14009     TEST_f_f (tgamma, -0x1p-16494L, minus_infty, OVERFLOW_EXCEPTION),
14010 # endif
14011 #endif
14012     TEST_f_f (tgamma, 0x8.00001p0L, 5.0400096882277802019946778420223050233915e+03L),
14013     TEST_f_f (tgamma, 0x7.fffff8p0L, 5.0399951558933225045148935487583089307135e+03L),
14014     TEST_f_f (tgamma, 0x7.000008p0L, 7.2000064296977505705636258629805621178587e+02L),
14015     TEST_f_f (tgamma, 0x6.fffff8p0L, 7.1999935703082425988147448928288557689866e+02L),
14016     TEST_f_f (tgamma, 0x6.000008p0L, 1.2000009762487825358530770343720418162783e+02L),
14017     TEST_f_f (tgamma, 0x5.fffff8p0L, 1.1999990237520611552119807476573441975106e+02L),
14018     TEST_f_f (tgamma, 0x5.000008p0L, 2.4000017236155647574166073485628713443799e+01L),
14019     TEST_f_f (tgamma, 0x4.fffff8p0L, 2.3999982763857938712639837029547357501709e+01L),
14020     TEST_f_f (tgamma, 0x4.000008p0L, 6.0000035937827461765660468073471093546129e+00L),
14021     TEST_f_f (tgamma, 0x3.fffffcp0L, 5.9999982031095793171233994481968816873643e+00L),
14022     TEST_f_f (tgamma, 0x3.000004p0L, 2.0000004400179308360529417942462250547999e+00L),
14023     TEST_f_f (tgamma, 0x2.fffffcp0L, 1.9999995599822108706107786027549565954046e+00L),
14024     TEST_f_f (tgamma, 0x2.000004p0L, 1.0000001007996638509889062631687945799175e+00L),
14025     TEST_f_f (tgamma, 0x1.fffffep0L, 9.9999994960018563231526611134590489120697e-01L),
14026     TEST_f_f (tgamma, 0x1.000002p0L, 9.9999993119054472483596471908942669644327e-01L),
14027     TEST_f_f (tgamma, 0x0.ffffffp0L, 1.0000000344047381790797322460568297132998e+00L),
14028     TEST_f_f (tgamma, -0x0.ffffffp0L, -1.6777216422784419250710305882992376932423e+07L),
14029     TEST_f_f (tgamma, -0x1.000002p0L, 8.3886075772158332060084424806449513922858e+06L),
14030     TEST_f_f (tgamma, -0x1.fffffep0L, 4.1943044613922792026014320172298377770578e+06L),
14031     TEST_f_f (tgamma, -0x2.000004p0L, -2.0971515386080557574407223895988378776747e+06L),
14032     TEST_f_f (tgamma, -0x2.fffffcp0L, -6.9905087601970247876992248591045142913324e+05L),
14033     TEST_f_f (tgamma, -0x3.000004p0L, 6.9905045731381300146131914617735687322025e+05L),
14034     TEST_f_f (tgamma, -0x3.fffffcp0L, 1.7476272942159602684441970627092458855771e+05L),
14035     TEST_f_f (tgamma, -0x4.000008p0L, -8.7381270578483499672965708923121931082305e+04L),
14036     TEST_f_f (tgamma, -0x4.fffff8p0L, -1.7476280884325863043793087474680780379554e+04L),
14037     TEST_f_f (tgamma, -0x5.000008p0L, 1.7476252449031389167286893378510439443844e+04L),
14038     TEST_f_f (tgamma, -0x5.fffff8p0L, 2.9127137122026653716311560165769071985443e+03L),
14039     TEST_f_f (tgamma, -0x6.000008p0L, -2.9127085100239567622341538102130981196910e+03L),
14040     TEST_f_f (tgamma, -0x6.fffff8p0L, -4.1610198723079349791939054365613377035519e+02L),
14041     TEST_f_f (tgamma, -0x7.000008p0L, 4.1610118737306415004517215226199741948733e+02L),
14042     TEST_f_f (tgamma, -0x7.fffff8p0L, 5.2012751504050764429534086402871289946986e+01L),
14043     TEST_f_f (tgamma, -0x8.00001p0L, -2.6006296115134418896533598545925084576702e+01L),
14044     TEST_f_f (tgamma, -0x9.fffffp0L, 2.8896008370721717567612135720915723136310e-01L),
14045     TEST_f_f (tgamma, -0xa.00001p0L, -2.8895878754728051776830454190076999107021e-01L),
14046     TEST_f_f (tgamma, -0x13.ffffep0L, 2.1550026214525536756224040483579183652119e-13L),
14047     TEST_f_f (tgamma, -0x14.00002p0L, -2.1549777908265594916405421768142757507179e-13L),
14048     TEST_f_f (tgamma, -0x1d.ffffep0L, 1.9765721589464867957912772592816027583176e-27L),
14049     TEST_f_f (tgamma, -0x1e.00002p0L, -1.9765463890341964384070157599286498212650e-27L),
14050     TEST_f_f (tgamma, -0x27.ffffcp0L, 3.2129279441390812141195076945616975790225e-43L, UNDERFLOW_EXCEPTION_FLOAT),
14051     TEST_f_f (tgamma, -0x28.00004p0L, -3.2128372159115252365699015758097981155793e-43L, UNDERFLOW_EXCEPTION_FLOAT),
14052     TEST_f_f (tgamma, -0x28.ffffcp0L, -7.8364103489619817539676737414096652170685e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14053     TEST_f_f (tgamma, -0x29.00004p0L, 7.8361876024016854597745353972619195760515e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14054 #ifdef TEST_FLOAT
14055     TEST_f_f (tgamma, -0x29.ffffcp0L, plus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14056     TEST_f_f (tgamma, -0x2a.00004p0L, minus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14057 #else
14058     TEST_f_f (tgamma, -0x29.ffffcp0L, 1.8658121573125798145204120066590953505132e-46L),
14059     TEST_f_f (tgamma, -0x2a.00004p0L, -1.8657587834931410688246126853566488626385e-46L),
14060 #endif
14061 #ifndef TEST_FLOAT
14062     TEST_f_f (tgamma, 0x8.0000000000008p0L, 5.0400000000000180457125667322294144477136e+03L),
14063     TEST_f_f (tgamma, 0x7.ffffffffffffcp0L, 5.0399999999999909771437166339103165198442e+03L),
14064     TEST_f_f (tgamma, 0x7.0000000000004p0L, 7.2000000000000119762397445457359071259652e+02L),
14065     TEST_f_f (tgamma, 0x6.ffffffffffffcp0L, 7.1999999999999880237602554542848858572672e+02L),
14066     TEST_f_f (tgamma, 0x6.0000000000004p0L, 1.2000000000000018184042734842640022086408e+02L),
14067     TEST_f_f (tgamma, 0x5.ffffffffffffcp0L, 1.1999999999999981815957265157389249327533e+02L),
14068     TEST_f_f (tgamma, 0x5.0000000000004p0L, 2.4000000000000032104829055124673225982803e+01L),
14069     TEST_f_f (tgamma, 0x4.ffffffffffffcp0L, 2.3999999999999967895170944875373910918544e+01L),
14070     TEST_f_f (tgamma, 0x4.0000000000004p0L, 6.0000000000000066939396342309789716341613e+00L),
14071     TEST_f_f (tgamma, 0x3.ffffffffffffep0L, 5.9999999999999966530301828845138185025345e+00L),
14072     TEST_f_f (tgamma, 0x3.0000000000002p0L, 2.0000000000000008195971324717875960213536e+00L),
14073     TEST_f_f (tgamma, 0x2.ffffffffffffep0L, 1.9999999999999991804028675282128956223990e+00L),
14074     TEST_f_f (tgamma, 0x2.0000000000002p0L, 1.0000000000000001877539613108624482361963e+00L),
14075     TEST_f_f (tgamma, 0x1.fffffffffffffp0L, 9.9999999999999990612301934456883679778984e-01L),
14076     TEST_f_f (tgamma, 0x1.0000000000001p0L, 9.9999999999999987183237573039992418700531e-01L),
14077     TEST_f_f (tgamma, 0x0.fffffffffffff8p0L, 1.0000000000000000640838121348000744796665e+00L),
14078     TEST_f_f (tgamma, -0x0.fffffffffffff8p0L, -9.0071992547409924227843350984672961392521e+15L),
14079     TEST_f_f (tgamma, -0x1.0000000000001p0L, 4.5035996273704955772156649015331740980405e+15L),
14080     TEST_f_f (tgamma, -0x1.fffffffffffffp0L, 2.2517998136852484613921675492337776673289e+15L),
14081     TEST_f_f (tgamma, -0x2.0000000000002p0L, -1.1258999068426235386078324507668462444260e+15L),
14082     TEST_f_f (tgamma, -0x2.ffffffffffffep0L, -3.7529996894754154268627807196691509198813e+14L),
14083     TEST_f_f (tgamma, -0x3.0000000000002p0L, 3.7529996894754112398038859470009084971438e+14L),
14084     TEST_f_f (tgamma, -0x3.ffffffffffffep0L, 9.3824992236885396088236184658402406857503e+13L),
14085     TEST_f_f (tgamma, -0x4.0000000000004p0L, -4.6912496118442603911763815341745722862351e+13L),
14086     TEST_f_f (tgamma, -0x4.ffffffffffffcp0L, -9.3824992236885475509805702650262155809819e+12L),
14087     TEST_f_f (tgamma, -0x5.0000000000004p0L, 9.3824992236885191156860964016850034672946e+12L),
14088     TEST_f_f (tgamma, -0x5.ffffffffffffcp0L, 1.5637498706147581566449098589862357835505e+12L),
14089     TEST_f_f (tgamma, -0x6.0000000000004p0L, -1.5637498706147529544662012521330708016396e+12L),
14090     TEST_f_f (tgamma, -0x6.ffffffffffffcp0L, -2.2339283865925119357965832452642909859289e+11L),
14091     TEST_f_f (tgamma, -0x7.0000000000004p0L, 2.2339283865925039372192897706214475877342e+11L),
14092     TEST_f_f (tgamma, -0x7.ffffffffffffcp0L, 2.7924104832406402297655703264222230055898e+10L),
14093     TEST_f_f (tgamma, -0x8.0000000000008p0L, -1.3962052416203121511868106259843527348026e+10L),
14094     TEST_f_f (tgamma, -0x9.ffffffffffff8p0L, 1.5513391573559147700413058496716749249803e+08L),
14095     TEST_f_f (tgamma, -0xa.0000000000008p0L, -1.5513391573559018084419393002828541166901e+08L),
14096     TEST_f_f (tgamma, -0x13.ffffffffffffp0L, 1.1569515572952029402736625857313236848570e-04L),
14097     TEST_f_f (tgamma, -0x14.000000000001p0L, -1.1569515572951781096476686854873801225397e-04L),
14098     TEST_f_f (tgamma, -0x1d.ffffffffffffp0L, 1.0611571800204311628217068863959963842891e-18L),
14099     TEST_f_f (tgamma, -0x1e.000000000001p0L, -1.0611571800204053929094168642022073530425e-18L),
14100     TEST_f_f (tgamma, -0x27.fffffffffffep0L, 1.7249032006742266376460389310340465554361e-34L),
14101     TEST_f_f (tgamma, -0x28.000000000002p0L, -1.7249032006741359094184881234822934593822e-34L),
14102     TEST_f_f (tgamma, -0x28.fffffffffffep0L, -4.2070809772542120404320040128839297118648e-36L),
14103     TEST_f_f (tgamma, -0x29.000000000002p0L, 4.2070809772539892938717205103652583609422e-36L),
14104     TEST_f_f (tgamma, -0x29.fffffffffffep0L, 1.0016859469652887505173040814397197718981e-37L),
14105     TEST_f_f (tgamma, -0x2a.000000000002p0L, -1.0016859469652353766978684241048308120274e-37L),
14106     TEST_f_f (tgamma, -0x31.fffffffffffep0L, 4.6273774273632946947805289899230181990085e-51L),
14107     TEST_f_f (tgamma, -0x32.000000000002p0L, -4.6273774273630367887073532197576655720178e-51L),
14108     TEST_f_f (tgamma, -0x63.fffffffffffcp0L, 7.5400833348840965463348754984345825364294e-145L),
14109     TEST_f_f (tgamma, -0x64.000000000004p0L, -7.5400833348831085791638490135462230991587e-145L),
14110     TEST_f_f (tgamma, -0x95.fffffffffff8p0L, 6.1582369322723207086020016423767264008839e-250L),
14111     TEST_f_f (tgamma, -0x96.000000000008p0L, -6.1582369322705655439003240743176243138734e-250L),
14112     TEST_f_f (tgamma, -0xb4.fffffffffff8p0L, -9.6760879059917574597728750098636253931457e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14113     TEST_f_f (tgamma, -0xb5.000000000008p0L, 9.6760879059888966544677044221698800670218e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14114     TEST_f_f (tgamma, -0xb5.fffffffffff8p0L, 5.3165318164789884455066481673086605454904e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14115     TEST_f_f (tgamma, -0xb6.000000000008p0L, -5.3165318164774149139661976747137185876909e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14116     TEST_f_f (tgamma, -0xb6.fffffffffff8p0L, -2.9052086428846935908287469917922960610289e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14117     TEST_f_f (tgamma, -0xb7.000000000008p0L, 2.9052086428838328351126988236541632950925e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14118 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14119     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14120     TEST_f_f (tgamma, -0xb8.000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14121 # else
14122     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, 1.5789177406982032823826953250736039527543e-325L),
14123     TEST_f_f (tgamma, -0xb8.000000000008p0L, -1.5789177406977349925854817486109369828857e-325L),
14124 # endif
14125 #endif
14126 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14127     TEST_f_f (tgamma, 0x8.00000000000000000000000004p0L, 5.0400000000000000000000000000020034765587e+03L),
14128     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffep0L, 5.0399999999999999999999999999989982617206e+03L),
14129     TEST_f_f (tgamma, 0x7.00000000000000000000000002p0L, 7.2000000000000000000000000000013296297113e+02L),
14130     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffep0L, 7.1999999999999999999999999999986703702887e+02L),
14131     TEST_f_f (tgamma, 0x6.00000000000000000000000002p0L, 1.2000000000000000000000000000002018834292e+02L),
14132     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffep0L, 1.1999999999999999999999999999997981165708e+02L),
14133     TEST_f_f (tgamma, 0x5.00000000000000000000000002p0L, 2.4000000000000000000000000000003564352042e+01L),
14134     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffep0L, 2.3999999999999999999999999999996435647958e+01L),
14135     TEST_f_f (tgamma, 0x4.00000000000000000000000002p0L, 6.0000000000000000000000000000007431765907e+00L),
14136     TEST_f_f (tgamma, 0x3.ffffffffffffffffffffffffffp0L, 5.9999999999999999999999999999996284117046e+00L),
14137     TEST_f_f (tgamma, 0x3.00000000000000000000000001p0L, 2.0000000000000000000000000000000909935607e+00L),
14138     TEST_f_f (tgamma, 0x2.ffffffffffffffffffffffffffp0L, 1.9999999999999999999999999999999090064393e+00L),
14139     TEST_f_f (tgamma, 0x2.00000000000000000000000001p0L, 1.0000000000000000000000000000000208448771e+00L),
14140     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffff8p0L, 9.9999999999999999999999999999998957756146e-01L),
14141     TEST_f_f (tgamma, 0x1.000000000000000000000000008p0L, 9.9999999999999999999999999999998577053525e-01L),
14142     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffcp0L, 1.0000000000000000000000000000000071147324e+00L),
14143     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffcp0L, -8.1129638414606681695789005144064422784335e+31L),
14144     TEST_f_f (tgamma, -0x1.000000000000000000000000008p0L, 4.0564819207303340847894502572031577215665e+31L),
14145     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffff8p0L, 2.0282409603651670423947251286016461392168e+31L),
14146     TEST_f_f (tgamma, -0x2.00000000000000000000000001p0L, -1.0141204801825835211973625643007538607832e+31L),
14147     TEST_f_f (tgamma, -0x2.ffffffffffffffffffffffffffp0L, -3.3804016006086117373245418810028760196114e+30L),
14148     TEST_f_f (tgamma, -0x3.00000000000000000000000001p0L, 3.3804016006086117373245418810024573137219e+30L),
14149     TEST_f_f (tgamma, -0x3.ffffffffffffffffffffffffffp0L, 8.4510040015215293433113547025072942156952e+29L),
14150     TEST_f_f (tgamma, -0x4.00000000000000000000000002p0L, -4.2255020007607646716556773512527057843048e+29L),
14151     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffep0L, -8.4510040015215293433113547025080884313904e+28L),
14152     TEST_f_f (tgamma, -0x5.00000000000000000000000002p0L, 8.4510040015215293433113547025052449019430e+28L),
14153     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffep0L, 1.4085006669202548905518924504180378867132e+28L),
14154     TEST_f_f (tgamma, -0x6.00000000000000000000000002p0L, -1.4085006669202548905518924504175176688423e+28L),
14155     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffep0L, -2.0121438098860784150741320720257967542615e+27L),
14156     TEST_f_f (tgamma, -0x7.00000000000000000000000002p0L, 2.0121438098860784150741320720249968965322e+27L),
14157     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffep0L, 2.5151797623575980188426650900322769448110e+26L),
14158     TEST_f_f (tgamma, -0x8.00000000000000000000000004p0L, -1.2575898811787990094213325450153421028080e+26L),
14159     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffcp0L, 1.3973220901986655660237028277960625420495e+24L),
14160     TEST_f_f (tgamma, -0xa.00000000000000000000000004p0L, -1.3973220901986655660237028277947663821128e+24L),
14161     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffff8p0L, 1.0420893204640670202556853709074896123293e+12L),
14162     TEST_f_f (tgamma, -0x14.00000000000000000000000008p0L, -1.0420893204640670202556853709050065497299e+12L),
14163     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffff8p0L, 9.5580541610429641982963434151488827190079e-03L),
14164     TEST_f_f (tgamma, -0x1e.00000000000000000000000008p0L, -9.5580541610429641982963434151231128067179e-03L),
14165     TEST_f_f (tgamma, -0x27.fffffffffffffffffffffffffp0L, 1.5536546823612837336494536911280147806523e-18L),
14166     TEST_f_f (tgamma, -0x28.0000000000000000000000001p0L, -1.5536546823612837336494536911189419578973e-18L),
14167     TEST_f_f (tgamma, -0x28.fffffffffffffffffffffffffp0L, -3.7894016642958139845108626612879138384405e-20L),
14168     TEST_f_f (tgamma, -0x29.0000000000000000000000001p0L, 3.7894016642958139845108626612656391824122e-20L),
14169     TEST_f_f (tgamma, -0x29.fffffffffffffffffffffffffp0L, 9.0223849149900332964544349078285357440663e-22L),
14170     TEST_f_f (tgamma, -0x2a.0000000000000000000000001p0L, -9.0223849149900332964544349077751619246306e-22L),
14171     TEST_f_f (tgamma, -0x31.fffffffffffffffffffffffffp0L, 4.1679710515150795310771069868348482819424e-35L),
14172     TEST_f_f (tgamma, -0x32.0000000000000000000000001p0L, -4.1679710515150795310771069868090576746248e-35L),
14173     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffep0L, 6.7915032994648558610510614163560656864280e-129L),
14174     TEST_f_f (tgamma, -0x64.0000000000000000000000002p0L, -6.7915032994648558610510614162572689693253e-129L),
14175     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffcp0L, 5.5468467106873795353190582463444660395353e-234L),
14176     TEST_f_f (tgamma, -0x96.0000000000000000000000004p0L, -5.5468467106873795353190582461689495693675e-234L),
14177     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffcp0L, -8.7154451775644399729745472278589884205029e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14178     TEST_f_f (tgamma, -0xb5.0000000000000000000000004p0L, 8.7154451775644399729745472275729078899858e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14179     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffcp0L, 4.7887061415189230620739270482742524864974e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14180     TEST_f_f (tgamma, -0xb6.0000000000000000000000004p0L, -4.7887061415189230620739270481168993324524e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14181     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffcp0L, -2.6167793123054224382917634143575601407067e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14182     TEST_f_f (tgamma, -0xb7.0000000000000000000000004p0L, 2.6167793123054224382917634142714845691019e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14183     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffcp0L, 1.4221626697312078468976975078030462044826e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14184     TEST_f_f (tgamma, -0xb8.0000000000000000000000004p0L, -1.4221626697312078468976975077562172247612e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14185     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffcp0L, 1.1756150745511026776007338998283058108448e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14186     TEST_f_f (tgamma, -0xbc.0000000000000000000000004p0L, -1.1756150745511026776007338997894360215107e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14187     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffcp0L, -6.2201855796354639026493857133773832713743e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14188     TEST_f_f (tgamma, -0xbd.0000000000000000000000004p0L, 6.2201855796354639026493857131715153125175e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14189     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffcp0L, 3.2737818840186652119207293228302560914295e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14190     TEST_f_f (tgamma, -0xbe.0000000000000000000000004p0L, -3.2737818840186652119207293227217957948294e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14191 # if LDBL_MAX_EXP <= 1024
14192     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14193     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14194 # else
14195     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, -1.7140219288055838805867692789687487834686e-325L),
14196     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, 1.7140219288055838805867692789119066543632e-325L),
14197 # endif
14198 #endif
14199 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14200     TEST_f_f (tgamma, 0x8.000000000000001p0L, 5.0400000000000000088113830892247051102283e+03L),
14201     TEST_f_f (tgamma, 0x7.fffffffffffffff8p0L, 5.0399999999999999955943084553876474508520e+03L),
14202     TEST_f_f (tgamma, 0x7.0000000000000008p0L, 7.2000000000000000058477733127664675369681e+02L),
14203     TEST_f_f (tgamma, 0x6.fffffffffffffff8p0L, 7.1999999999999999941522266872335324679893e+02L),
14204     TEST_f_f (tgamma, 0x6.0000000000000008p0L, 1.2000000000000000008878927116622375680433e+02L),
14205     TEST_f_f (tgamma, 0x5.fffffffffffffff8p0L, 1.1999999999999999991121072883377624326546e+02L),
14206     TEST_f_f (tgamma, 0x5.0000000000000008p0L, 2.4000000000000000015676186062072582846211e+01L),
14207     TEST_f_f (tgamma, 0x4.fffffffffffffff8p0L, 2.3999999999999999984323813937927417165027e+01L),
14208     TEST_f_f (tgamma, 0x4.0000000000000008p0L, 6.0000000000000000032685252120268430507939e+00L),
14209     TEST_f_f (tgamma, 0x3.fffffffffffffffcp0L, 5.9999999999999999983657373939865784753909e+00L),
14210     TEST_f_f (tgamma, 0x3.0000000000000004p0L, 2.0000000000000000004001939123397399171482e+00L),
14211     TEST_f_f (tgamma, 0x2.fffffffffffffffcp0L, 1.9999999999999999995998060876602600829690e+00L),
14212     TEST_f_f (tgamma, 0x2.0000000000000004p0L, 1.0000000000000000000916767389213195151634e+00L),
14213     TEST_f_f (tgamma, 0x1.fffffffffffffffep0L, 9.9999999999999999995416163053934024243282e-01L),
14214     TEST_f_f (tgamma, 0x1.0000000000000002p0L, 9.9999999999999999993741815221210931418291e-01L),
14215     TEST_f_f (tgamma, 0x0.ffffffffffffffffp0L, 1.0000000000000000000312909238939453429173e+00L),
14216     TEST_f_f (tgamma, -0x0.ffffffffffffffffp0L, -1.8446744073709551616422784335098467139470e+19L),
14217     TEST_f_f (tgamma, -0x1.0000000000000002p0L, 9.2233720368547758075772156649015328607596e+18L),
14218     TEST_f_f (tgamma, -0x1.fffffffffffffffep0L, 4.6116860184273879044613921675492335697983e+18L),
14219     TEST_f_f (tgamma, -0x2.0000000000000004p0L, -2.3058430092136939515386078324507664305064e+18L),
14220     TEST_f_f (tgamma, -0x2.fffffffffffffffcp0L, -7.6861433640456465087601961140530007887063e+17L),
14221     TEST_f_f (tgamma, -0x3.0000000000000004p0L, 7.6861433640456465045731372192803325462836e+17L),
14222     TEST_f_f (tgamma, -0x3.fffffffffffffffcp0L, 1.9215358410114116272942156951799168638773e+17L),
14223     TEST_f_f (tgamma, -0x4.0000000000000008p0L, -9.6076792050570581270578430482008313684602e+16L),
14224     TEST_f_f (tgamma, -0x4.fffffffffffffff8p0L, -1.9215358410114116280884313903598337283601e+16L),
14225     TEST_f_f (tgamma, -0x5.0000000000000008p0L, 1.9215358410114116252449019429734996071487e+16L),
14226     TEST_f_f (tgamma, -0x5.fffffffffffffff8p0L, 3.2025597350190193803788671320812043622696e+15L),
14227     TEST_f_f (tgamma, -0x6.0000000000000008p0L, -3.2025597350190193751766884234743511972877e+15L),
14228     TEST_f_f (tgamma, -0x6.fffffffffffffff8p0L, -4.5750853357414562579675426149912896787735e+14L),
14229     TEST_f_f (tgamma, -0x7.0000000000000008p0L, 4.5750853357414562499689653215166468353753e+14L),
14230     TEST_f_f (tgamma, -0x7.fffffffffffffff8p0L, 5.7188566696768203227694481100089533685959e+13L),
14231     TEST_f_f (tgamma, -0x8.000000000000001p0L, -2.8594283348384101534210280804672371201060e+13L),
14232     TEST_f_f (tgamma, -0x9.fffffffffffffffp0L, 3.1771425942649001828476427167843945971988e+11L),
14233     TEST_f_f (tgamma, -0xa.000000000000001p0L, -3.1771425942649001698860433502350057763905e+11L),
14234     TEST_f_f (tgamma, -0x13.ffffffffffffffep0L, 2.3694367893405502075347562184931828448654e-01L),
14235     TEST_f_f (tgamma, -0x14.000000000000002p0L, -2.3694367893405501827041302245929389013031e-01L),
14236     TEST_f_f (tgamma, -0x1d.ffffffffffffffep0L, 2.1732499046818166459536268654187775086902e-15L),
14237     TEST_f_f (tgamma, -0x1e.000000000000002p0L, -2.1732499046818166201837145753965837196590e-15L),
14238     TEST_f_f (tgamma, -0x27.ffffffffffffffcp0L, 3.5326017549807232935581894777156474496719e-31L),
14239     TEST_f_f (tgamma, -0x28.000000000000004p0L, -3.5326017549807232028299619269080956965758e-31L),
14240     TEST_f_f (tgamma, -0x28.ffffffffffffffcp0L, -8.6161018414163982777002940498289948893044e-33L),
14241     TEST_f_f (tgamma, -0x29.000000000000004p0L, 8.6161018414163980549537337663264762179535e-33L),
14242     TEST_f_f (tgamma, -0x29.ffffffffffffffcp0L, 2.0514528193848567329552463626090806737389e-34L),
14243     TEST_f_f (tgamma, -0x2a.000000000000004p0L, -2.0514528193848566795814269269517457847791e-34L),
14244     TEST_f_f (tgamma, -0x31.ffffffffffffffcp0L, 9.4768689712397635680446279661359728835046e-48L),
14245     TEST_f_f (tgamma, -0x32.000000000000004p0L, -9.4768689712397633101385547903658075308777e-48L),
14246     TEST_f_f (tgamma, -0x63.ffffffffffffff8p0L, 1.5442090669841618542494279375256856430049e-141L),
14247     TEST_f_f (tgamma, -0x64.000000000000008p0L, -1.5442090669841617554527108348771968070612e-141L),
14248     TEST_f_f (tgamma, -0x95.ffffffffffffffp0L, 1.2612069237291916400144732227892704713839e-246L),
14249     TEST_f_f (tgamma, -0x96.00000000000001p0L, -1.2612069237291914644980030550324645611752e-246L),
14250     TEST_f_f (tgamma, -0xb4.ffffffffffffffp0L, -1.9816628031468191243385005680879281767694e-315L),
14251     TEST_f_f (tgamma, -0xb5.00000000000001p0L, 1.9816628031468188382579700510291588022368e-315L),
14252     TEST_f_f (tgamma, -0xb5.ffffffffffffffp0L, 1.0888257160147357826865964233809723297472e-317L),
14253     TEST_f_f (tgamma, -0xb6.00000000000001p0L, -1.0888257160147356253334423783317128355514e-317L),
14254     TEST_f_f (tgamma, -0xb6.ffffffffffffffp0L, -5.9498673006269714905418984659220067091260e-320L),
14255     TEST_f_f (tgamma, -0xb7.00000000000001p0L, 5.9498673006269706297861824177538685763601e-320L),
14256     TEST_f_f (tgamma, -0xb7.ffffffffffffffp0L, 3.2336235329494410277123118903958061569834e-322L),
14257     TEST_f_f (tgamma, -0xb8.00000000000001p0L, -3.2336235329494405594225146768193434900135e-322L),
14258     TEST_f_f (tgamma, -0xbb.ffffffffffffffp0L, 2.6730392040715350119087465463119939092815e-331L),
14259     TEST_f_f (tgamma, -0xbc.00000000000001p0L, -2.6730392040715346232108532050343031951651e-331L),
14260     TEST_f_f (tgamma, -0xbc.ffffffffffffffp0L, -1.4143064571807063556111222197839950086445e-333L),
14261     TEST_f_f (tgamma, -0xbd.00000000000001p0L, 1.4143064571807061497431633629389135273431e-333L),
14262     TEST_f_f (tgamma, -0xbd.ffffffffffffffp0L, 7.4437181956879281879706555863416819210399e-336L),
14263     TEST_f_f (tgamma, -0xbe.00000000000001p0L, -7.4437181956879271033676895858841525581153e-336L),
14264     TEST_f_f (tgamma, -0xbe.ffffffffffffffp0L, -3.8972346574282346536709453101948570578636e-338L),
14265     TEST_f_f (tgamma, -0xbf.00000000000001p0L, 3.8972346574282340852496542564155275274974e-338L),
14266     TEST_f_f (tgamma, -0xf9.ffffffffffffffp0L, 2.2289142548411573883553287678043297937797e-476L),
14267     TEST_f_f (tgamma, -0xfa.00000000000001p0L, -2.2289142548411570466476165308364665814265e-476L),
14268     TEST_f_f (tgamma, -0x1f3.fffffffffffffep0L, 2.9528489142763141594943668922610562530068e-1118L),
14269     TEST_f_f (tgamma, -0x1f4.00000000000002p0L, -2.9528489142763131406565394149878256133744e-1118L),
14270     TEST_f_f (tgamma, -0x2ed.fffffffffffffcp0L, 6.9801511765871818502006905472380418430269e-1817L),
14271     TEST_f_f (tgamma, -0x2ee.00000000000004p0L, -6.9801511765871767194421856376592926002995e-1817L),
14272     TEST_f_f (tgamma, -0x3e7.fffffffffffffcp0L, 4.4768809295877296071892611539415773519036e-2552L),
14273     TEST_f_f (tgamma, -0x3e8.00000000000004p0L, -4.4768809295877261735541135972060089530309e-2552L),
14274     TEST_f_f (tgamma, -0x4e1.fffffffffffff8p0L, 5.4651488569236507565341414077911790252381e-3315L),
14275     TEST_f_f (tgamma, -0x4e2.00000000000008p0L, -5.4651488569236421026544487194247355967789e-3315L),
14276     TEST_f_f (tgamma, -0x5db.fffffffffffff8p0L, 1.8718211510339187689122114747834510481993e-4099L),
14277     TEST_f_f (tgamma, -0x5dc.00000000000008p0L, -1.8718211510339157291960718369454861898499e-4099L),
14278     TEST_f_f (tgamma, -0x6d5.fffffffffffff8p0L, 4.2925786447266492555651378780094011518063e-4902L),
14279     TEST_f_f (tgamma, -0x6d6.00000000000008p0L, -4.2925786447266421378134368786479937285900e-4902L),
14280     TEST_f_f (tgamma, -0x6e2.fffffffffffff8p0L, -2.8229173528168668283609231628661510187536e-4944L, UNDERFLOW_EXCEPTION),
14281     TEST_f_f (tgamma, -0x6e3.00000000000008p0L, 2.8229173528168621428945467532322397890424e-4944L, UNDERFLOW_EXCEPTION),
14282     TEST_f_f (tgamma, -0x6e3.fffffffffffff8p0L, 1.6002932839097884515524894602387278842659e-4947L, UNDERFLOW_EXCEPTION),
14283     TEST_f_f (tgamma, -0x6e4.00000000000008p0L, -1.6002932839097857951909742110188634438017e-4947L, UNDERFLOW_EXCEPTION),
14284     TEST_f_f (tgamma, -0x6e4.fffffffffffff8p0L, -9.0668174725767051085164382743343408095146e-4951L, UNDERFLOW_EXCEPTION),
14285     TEST_f_f (tgamma, -0x6e5.00000000000008p0L, 9.0668174725766900571689083050287838090189e-4951L, UNDERFLOW_EXCEPTION),
14286 # if LDBL_MANT_DIG <= 64
14287     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION),
14288     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION),
14289 # else
14290     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, 5.1340982290921319983501912122292601780326e-4954L, UNDERFLOW_EXCEPTION),
14291     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, -5.1340982290921234748578193083614111497314e-4954L, UNDERFLOW_EXCEPTION),
14292 # endif
14293 # if LDBL_MANT_DIG >= 113
14294     TEST_f_f (tgamma, 0x8.0000000000000000000000000008p0L, 5.0400000000000000000000000000000156521606e+03L),
14295     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffffcp0L, 5.0399999999999999999999999999999921739197e+03L),
14296     TEST_f_f (tgamma, 0x7.0000000000000000000000000004p0L, 7.2000000000000000000000000000000103877321e+02L),
14297     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffffcp0L, 7.1999999999999999999999999999999896122679e+02L),
14298     TEST_f_f (tgamma, 0x6.0000000000000000000000000004p0L, 1.2000000000000000000000000000000015772143e+02L),
14299     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffffcp0L, 1.1999999999999999999999999999999984227857e+02L),
14300     TEST_f_f (tgamma, 0x5.0000000000000000000000000004p0L, 2.4000000000000000000000000000000027846500e+01L),
14301     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffffcp0L, 2.3999999999999999999999999999999972153500e+01L),
14302     TEST_f_f (tgamma, 0x4.0000000000000000000000000004p0L, 6.0000000000000000000000000000000058060671e+00L),
14303     TEST_f_f (tgamma, 0x3.fffffffffffffffffffffffffffep0L, 5.9999999999999999999999999999999970969664e+00L),
14304     TEST_f_f (tgamma, 0x3.0000000000000000000000000002p0L, 2.0000000000000000000000000000000007108872e+00L),
14305     TEST_f_f (tgamma, 0x2.fffffffffffffffffffffffffffep0L, 1.9999999999999999999999999999999992891128e+00L),
14306     TEST_f_f (tgamma, 0x2.0000000000000000000000000002p0L, 1.0000000000000000000000000000000001628506e+00L),
14307     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffffffp0L, 9.9999999999999999999999999999999991857470e-01L),
14308     TEST_f_f (tgamma, 0x1.0000000000000000000000000001p0L, 9.9999999999999999999999999999999988883231e-01L),
14309     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffff8p0L, 1.0000000000000000000000000000000000555838e+00L),
14310     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffff8p0L, -1.0384593717069655257060992658440192422784e+34L),
14311     TEST_f_f (tgamma, -0x1.0000000000000000000000000001p0L, 5.1922968585348276285304963292200955772157e+33L),
14312     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffffffp0L, 2.5961484292674138142652481646100484613922e+33L),
14313     TEST_f_f (tgamma, -0x2.0000000000000000000000000002p0L, -1.2980742146337069071326240823050235386078e+33L),
14314     TEST_f_f (tgamma, -0x2.fffffffffffffffffffffffffffep0L, -4.3269140487790230237754136076834154268628e+32L),
14315     TEST_f_f (tgamma, -0x3.0000000000000000000000000002p0L, 4.3269140487790230237754136076834112398039e+32L),
14316     TEST_f_f (tgamma, -0x3.fffffffffffffffffffffffffffep0L, 1.0817285121947557559438534019208539608824e+32L),
14317     TEST_f_f (tgamma, -0x4.0000000000000000000000000004p0L, -5.4086425609737787797192670096042603911764e+31L),
14318     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffffcp0L, -1.0817285121947557559438534019208547550981e+31L),
14319     TEST_f_f (tgamma, -0x5.0000000000000000000000000004p0L, 1.0817285121947557559438534019208519115686e+31L),
14320     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffffcp0L, 1.8028808536579262599064223365347581566449e+30L),
14321     TEST_f_f (tgamma, -0x6.0000000000000000000000000004p0L, -1.8028808536579262599064223365347529544662e+30L),
14322     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffffcp0L, -2.5755440766541803712948890521925119357966e+29L),
14323     TEST_f_f (tgamma, -0x7.0000000000000000000000000004p0L, 2.5755440766541803712948890521925039372193e+29L),
14324     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffffcp0L, 3.2194300958177254641186113152406402297656e+28L),
14325     TEST_f_f (tgamma, -0x8.0000000000000000000000000008p0L, -1.6097150479088627320593056576203121511868e+28L),
14326     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffff8p0L, 1.7885722754542919245103396195781369922635e+26L),
14327     TEST_f_f (tgamma, -0xa.0000000000000000000000000008p0L, -1.7885722754542919245103396195781240306642e+26L),
14328     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffffffp0L, 1.3338743301940057859272772747600099590309e+14L),
14329     TEST_f_f (tgamma, -0x14.000000000000000000000000001p0L, -1.3338743301940057859272772747599851284049e+14L),
14330     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffffffp0L, 1.2234309326134994173819319571374205986026e+00L),
14331     TEST_f_f (tgamma, -0x1e.000000000000000000000000001p0L, -1.2234309326134994173819319571373948286903e+00L),
14332     TEST_f_f (tgamma, -0x27.ffffffffffffffffffffffffffep0L, 1.9886779934224431790713007246380976767855e-16L),
14333     TEST_f_f (tgamma, -0x28.000000000000000000000000002p0L, -1.9886779934224431790713007246380069485580e-16L),
14334     TEST_f_f (tgamma, -0x28.ffffffffffffffffffffffffffep0L, -4.8504341302986419001739042064343853066259e-18L),
14335     TEST_f_f (tgamma, -0x29.000000000000000000000000002p0L, 4.8504341302986419001739042064341625600656e-18L),
14336     TEST_f_f (tgamma, -0x29.ffffffffffffffffffffffffffep0L, 1.1548652691187242619461676681986633377063e-19L),
14337     TEST_f_f (tgamma, -0x2a.000000000000000000000000002p0L, -1.1548652691187242619461676681986099638869e-19L),
14338     TEST_f_f (tgamma, -0x31.ffffffffffffffffffffffffffep0L, 5.3350029459393017997786969431322287652396e-33L),
14339     TEST_f_f (tgamma, -0x32.000000000000000000000000002p0L, -5.3350029459393017997786969431319708591664e-33L),
14340     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffffcp0L, 8.6931242233150155021453586128730281632676e-127L),
14341     TEST_f_f (tgamma, -0x64.000000000000000000000000004p0L, -8.6931242233150155021453586128720401960966e-127L),
14342     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffff8p0L, 7.0999637896798458052083945552094635720486e-232L),
14343     TEST_f_f (tgamma, -0x96.000000000000000000000000008p0L, -7.0999637896798458052083945552077084073470e-232L),
14344     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffff8p0L, -1.1155769827282483165407420451477844041365e-300L),
14345     TEST_f_f (tgamma, -0xb5.000000000000000000000000008p0L, 1.1155769827282483165407420451474983236060e-300L),
14346     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffff8p0L, 6.1295438611442215194546266216911239298981e-303L),
14347     TEST_f_f (tgamma, -0xb6.000000000000000000000000008p0L, -6.1295438611442215194546266216895503983577e-303L),
14348     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffff8p0L, -3.3494775197509407210134571703230189921356e-305L),
14349     TEST_f_f (tgamma, -0xb7.000000000000000000000000008p0L, 3.3494775197509407210134571703221582364195e-305L),
14350     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffff8p0L, 1.8203682172559460440290528099581627396147e-307L),
14351     TEST_f_f (tgamma, -0xb8.000000000000000000000000008p0L, -1.8203682172559460440290528099576944498174e-307L),
14352     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffff8p0L, 1.5047872954254114273289393917555491216542e-316L),
14353     TEST_f_f (tgamma, -0xbc.000000000000000000000000008p0L, -1.5047872954254114273289393917551604237609e-316L),
14354     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffff8p0L, -7.9618375419333937953912137129923244334851e-319L),
14355     TEST_f_f (tgamma, -0xbd.000000000000000000000000008p0L, 7.9618375419333937953912137129902657538965e-319L),
14356     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffff8p0L, 4.1904408115438914712585335331538555086887e-321L),
14357     TEST_f_f (tgamma, -0xbe.000000000000000000000000008p0L, -4.1904408115438914712585335331527709057227e-321L),
14358     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffff8p0L, -2.1939480688711473671510646770439036908579e-323L),
14359     TEST_f_f (tgamma, -0xbf.000000000000000000000000008p0L, 2.1939480688711473671510646770433352695669e-323L),
14360     TEST_f_f (tgamma, -0xf9.ffffffffffffffffffffffffff8p0L, 1.2547671759429278005937024349858508569625e-461L),
14361     TEST_f_f (tgamma, -0xfa.000000000000000000000000008p0L, -1.2547671759429278005937024349855091492502e-461L),
14362     TEST_f_f (tgamma, -0x1f3.ffffffffffffffffffffffffffp0L, 1.6623061587520224800948170558276526986560e-1103L),
14363     TEST_f_f (tgamma, -0x1f4.00000000000000000000000001p0L, -1.6623061587520224800948170558266338608285e-1103L),
14364     TEST_f_f (tgamma, -0x2ed.fffffffffffffffffffffffffep0L, 3.9294757797334687313030998663853566763041e-1802L),
14365     TEST_f_f (tgamma, -0x2ee.00000000000000000000000002p0L, -3.9294757797334687313030998663802259177992e-1802L),
14366     TEST_f_f (tgamma, -0x3e7.fffffffffffffffffffffffffep0L, 2.5202599107841713834679953735597552855978e-2537L),
14367     TEST_f_f (tgamma, -0x3e8.00000000000000000000000002p0L, -2.5202599107841713834679953735563216504503e-2537L),
14368     TEST_f_f (tgamma, -0x4e1.fffffffffffffffffffffffffcp0L, 3.0766052944457032773369415396747635242705e-3300L),
14369     TEST_f_f (tgamma, -0x4e2.00000000000000000000000004p0L, -3.0766052944457032773369415396661096445778e-3300L),
14370     TEST_f_f (tgamma, -0x5db.fffffffffffffffffffffffffcp0L, 1.0537416297875703295453200836588944487917e-4084L),
14371     TEST_f_f (tgamma, -0x5dc.00000000000000000000000004p0L, -1.0537416297875703295453200836558547326520e-4084L),
14372     TEST_f_f (tgamma, -0x6d5.fffffffffffffffffffffffffcp0L, 2.4165069481061837867659591369998698607387e-4887L),
14373     TEST_f_f (tgamma, -0x6d6.00000000000000000000000004p0L, -2.4165069481061837867659591369927521090377e-4887L),
14374     TEST_f_f (tgamma, -0x6e2.fffffffffffffffffffffffffcp0L, -1.5891611922804672355414813803008070609431e-4929L),
14375     TEST_f_f (tgamma, -0x6e3.00000000000000000000000004p0L, 1.5891611922804672355414813802961215945667e-4929L),
14376     TEST_f_f (tgamma, -0x6e3.fffffffffffffffffffffffffcp0L, 9.0088502963745308137272187091882496519917e-4933L, UNDERFLOW_EXCEPTION),
14377     TEST_f_f (tgamma, -0x6e4.00000000000000000000000004p0L, -9.0088502963745308137272187091616860368392e-4933L, UNDERFLOW_EXCEPTION),
14378     TEST_f_f (tgamma, -0x6e4.fffffffffffffffffffffffffcp0L, -5.1041644738665896961627301468488672286746e-4936L, UNDERFLOW_EXCEPTION),
14379     TEST_f_f (tgamma, -0x6e5.00000000000000000000000004p0L, 5.1041644738665896961627301468338158811446e-4936L, UNDERFLOW_EXCEPTION),
14380     TEST_f_f (tgamma, -0x6e5.fffffffffffffffffffffffffcp0L, 2.8902403589278537350864836618623260468143e-4939L, UNDERFLOW_EXCEPTION),
14381     TEST_f_f (tgamma, -0x6e6.00000000000000000000000004p0L, -2.8902403589278537350864836618538025544424e-4939L, UNDERFLOW_EXCEPTION),
14382     TEST_f_f (tgamma, -0x6eb.fffffffffffffffffffffffffcp0L, 9.4152481960798287090819640211017219042636e-4959L, UNDERFLOW_EXCEPTION),
14383     TEST_f_f (tgamma, -0x6ec.00000000000000000000000004p0L, -9.4152481960798287090819640210739431797168e-4959L, UNDERFLOW_EXCEPTION),
14384     TEST_f_f (tgamma, -0x6ec.fffffffffffffffffffffffffcp0L, -5.3103486723518492437010513373388172315540e-4962L, UNDERFLOW_EXCEPTION),
14385     TEST_f_f (tgamma, -0x6ed.00000000000000000000000004p0L, 5.3103486723518492437010513373231484108489e-4962L, UNDERFLOW_EXCEPTION),
14386     TEST_f_f (tgamma, -0x6ed.fffffffffffffffffffffffffcp0L, 2.9934321715624854812294539669328172615019e-4965L, UNDERFLOW_EXCEPTION),
14387     TEST_f_f (tgamma, -0x6ee.00000000000000000000000004p0L, -2.9934321715624854812294539669239841152754e-4965L, UNDERFLOW_EXCEPTION),
14388     TEST_f_f (tgamma, -0x6ee.fffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION),
14389     TEST_f_f (tgamma, -0x6ef.00000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION),
14390 # endif
14391 #endif
14392     TEST_f_f (tgamma, -0x1.0a32a2p+5L, 1.8125267978155035272941154746083439329912e-37L),
14393 #ifndef TEST_FLOAT
14394     TEST_f_f (tgamma, -0x1.5800000080001p+7L, -3.1439271448823567326093363350637118195240e-304L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14395 #endif
14396     TEST_f_f (tgamma, 18.5L, 1.4986120533153361177371791123515513270334e+15L),
14397     TEST_f_f (tgamma, 19.5L, 2.7724322986333718178137813578503699550119e+16L),
14398     TEST_f_f (tgamma, 23.5L, 5.3613035875444147334274983856108155717836e+21L),
14399     TEST_f_f (tgamma, 29.5L, 1.6348125198274266444378807806868221866931e+30L),
14400     TEST_f_f (tgamma, 30.5L, 4.8226969334909086010917483030261254507447e+31L),
14401     TEST_f_f (tgamma, 31.5L, 1.4709225647147271233329832324229682624771e+33L),
14402     TEST_f_f (tgamma, 32.5L, 4.6334060788513904384988971821323500268029e+34L),
14403     TEST_f_f (tgamma, 33.5L, 1.5058569756267018925121415841930137587110e+36L),
14404     TEST_f_f (tgamma, 34.5L, 5.0446208683494513399156743070465960916817e+37L),
14405     TEST_f_f (tgamma, 0x2.30a43cp+4L, 3.4027979115654976101247558405326779640190e+38L),
14406 #ifdef TEST_FLOAT
14407     TEST_f_f (tgamma, 0x2.30a44p+4L, plus_infty, OVERFLOW_EXCEPTION),
14408 #else
14409     TEST_f_f (tgamma, 0x2.30a44p+4L, 3.4028438913396451054667218138127983367181e+38L),
14410 #endif
14411 #ifndef TEST_FLOAT
14412     TEST_f_f (tgamma, 0xa.b9fd72b0fb238p+4L, 1.7976931348622298700886249281842651388250e+308L),
14413 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14414     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, plus_infty, OVERFLOW_EXCEPTION),
14415 # else
14416     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, 1.7976931348624926129589466917917870782484e+308L),
14417 # endif
14418 #endif
14419 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14420     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f4p+4L, 1.7976931348623158079372897140307719334857e+308L),
14421 # if LDBL_MAX_EXP <= 1024
14422     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, plus_infty, OVERFLOW_EXCEPTION),
14423 # else
14424     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, 1.7976931348623158079372897140599422519044e+308L),
14425 # endif
14426 #endif
14427 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14428     TEST_f_f (tgamma, 0x6.db8c603359a97108p+8L, 1.1897314953572317517071551278058233700012e+4932L),
14429     TEST_f_f (tgamma, 0x6.db8c603359a9711p+8L, plus_infty, OVERFLOW_EXCEPTION),
14430 # if LDBL_MANT_DIG >= 113
14431     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfdp+8L, 1.1897314953572317650857593266265995494998e+4932L),
14432     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfd4p+8L, plus_infty, OVERFLOW_EXCEPTION),
14433 # endif
14434 #endif
14435     END_DATA (tgamma)
14436   };
14438 static void
14439 tgamma_test (void)
14441   errno = 0;
14442   FUNC(tgamma) (1);
14443   if (errno == ENOSYS)
14444     /* Function not implemented.  */
14445     return;
14447   START (tgamma);
14448   RUN_TEST_LOOP_f_f (tgamma, tgamma_test_data, );
14449   END (tgamma);
14453 static const struct test_f_f_data trunc_test_data[] =
14454   {
14455     START_DATA (trunc),
14456     TEST_f_f (trunc, plus_infty, plus_infty),
14457     TEST_f_f (trunc, minus_infty, minus_infty),
14458     TEST_f_f (trunc, qnan_value, qnan_value),
14460     TEST_f_f (trunc, 0, 0),
14461     TEST_f_f (trunc, minus_zero, minus_zero),
14462     TEST_f_f (trunc, 0.1, 0),
14463     TEST_f_f (trunc, 0.25, 0),
14464     TEST_f_f (trunc, 0.625, 0),
14465     TEST_f_f (trunc, -0.1, minus_zero),
14466     TEST_f_f (trunc, -0.25, minus_zero),
14467     TEST_f_f (trunc, -0.625, minus_zero),
14468     TEST_f_f (trunc, 1, 1),
14469     TEST_f_f (trunc, -1, -1),
14470     TEST_f_f (trunc, 1.625, 1),
14471     TEST_f_f (trunc, -1.625, -1),
14473     TEST_f_f (trunc, 1048580.625L, 1048580L),
14474     TEST_f_f (trunc, -1048580.625L, -1048580L),
14476     TEST_f_f (trunc, 8388610.125L, 8388610.0L),
14477     TEST_f_f (trunc, -8388610.125L, -8388610.0L),
14479     TEST_f_f (trunc, 4294967296.625L, 4294967296.0L),
14480     TEST_f_f (trunc, -4294967296.625L, -4294967296.0L),
14482 #ifdef TEST_LDOUBLE
14483     /* The result can only be represented in long double.  */
14484     TEST_f_f (trunc, 4503599627370495.5L, 4503599627370495.0L),
14485     TEST_f_f (trunc, 4503599627370496.25L, 4503599627370496.0L),
14486     TEST_f_f (trunc, 4503599627370496.5L, 4503599627370496.0L),
14487     TEST_f_f (trunc, 4503599627370496.75L, 4503599627370496.0L),
14488     TEST_f_f (trunc, 4503599627370497.5L, 4503599627370497.0L),
14490 # if LDBL_MANT_DIG > 100
14491     TEST_f_f (trunc, 4503599627370494.5000000000001L, 4503599627370494.0L),
14492     TEST_f_f (trunc, 4503599627370495.5000000000001L, 4503599627370495.0L),
14493     TEST_f_f (trunc, 4503599627370496.5000000000001L, 4503599627370496.0L),
14494 # endif
14496     TEST_f_f (trunc, -4503599627370495.5L, -4503599627370495.0L),
14497     TEST_f_f (trunc, -4503599627370496.25L, -4503599627370496.0L),
14498     TEST_f_f (trunc, -4503599627370496.5L, -4503599627370496.0L),
14499     TEST_f_f (trunc, -4503599627370496.75L, -4503599627370496.0L),
14500     TEST_f_f (trunc, -4503599627370497.5L, -4503599627370497.0L),
14502 # if LDBL_MANT_DIG > 100
14503     TEST_f_f (trunc, -4503599627370494.5000000000001L, -4503599627370494.0L),
14504     TEST_f_f (trunc, -4503599627370495.5000000000001L, -4503599627370495.0L),
14505     TEST_f_f (trunc, -4503599627370496.5000000000001L, -4503599627370496.0L),
14506 # endif
14508     TEST_f_f (trunc, 9007199254740991.5L, 9007199254740991.0L),
14509     TEST_f_f (trunc, 9007199254740992.25L, 9007199254740992.0L),
14510     TEST_f_f (trunc, 9007199254740992.5L, 9007199254740992.0L),
14511     TEST_f_f (trunc, 9007199254740992.75L, 9007199254740992.0L),
14512     TEST_f_f (trunc, 9007199254740993.5L, 9007199254740993.0L),
14514 # if LDBL_MANT_DIG > 100
14515     TEST_f_f (trunc, 9007199254740991.0000000000001L, 9007199254740991.0L),
14516     TEST_f_f (trunc, 9007199254740992.0000000000001L, 9007199254740992.0L),
14517     TEST_f_f (trunc, 9007199254740993.0000000000001L, 9007199254740993.0L),
14518     TEST_f_f (trunc, 9007199254740991.5000000000001L, 9007199254740991.0L),
14519     TEST_f_f (trunc, 9007199254740992.5000000000001L, 9007199254740992.0L),
14520     TEST_f_f (trunc, 9007199254740993.5000000000001L, 9007199254740993.0L),
14521 # endif
14523     TEST_f_f (trunc, -9007199254740991.5L, -9007199254740991.0L),
14524     TEST_f_f (trunc, -9007199254740992.25L, -9007199254740992.0L),
14525     TEST_f_f (trunc, -9007199254740992.5L, -9007199254740992.0L),
14526     TEST_f_f (trunc, -9007199254740992.75L, -9007199254740992.0L),
14527     TEST_f_f (trunc, -9007199254740993.5L, -9007199254740993.0L),
14529 # if LDBL_MANT_DIG > 100
14530     TEST_f_f (trunc, -9007199254740991.0000000000001L, -9007199254740991.0L),
14531     TEST_f_f (trunc, -9007199254740992.0000000000001L, -9007199254740992.0L),
14532     TEST_f_f (trunc, -9007199254740993.0000000000001L, -9007199254740993.0L),
14533     TEST_f_f (trunc, -9007199254740991.5000000000001L, -9007199254740991.0L),
14534     TEST_f_f (trunc, -9007199254740992.5000000000001L, -9007199254740992.0L),
14535     TEST_f_f (trunc, -9007199254740993.5000000000001L, -9007199254740993.0L),
14536 # endif
14538     TEST_f_f (trunc, 72057594037927935.5L, 72057594037927935.0L),
14539     TEST_f_f (trunc, 72057594037927936.25L, 72057594037927936.0L),
14540     TEST_f_f (trunc, 72057594037927936.5L, 72057594037927936.0L),
14541     TEST_f_f (trunc, 72057594037927936.75L, 72057594037927936.0L),
14542     TEST_f_f (trunc, 72057594037927937.5L, 72057594037927937.0L),
14544     TEST_f_f (trunc, -72057594037927935.5L, -72057594037927935.0L),
14545     TEST_f_f (trunc, -72057594037927936.25L, -72057594037927936.0L),
14546     TEST_f_f (trunc, -72057594037927936.5L, -72057594037927936.0L),
14547     TEST_f_f (trunc, -72057594037927936.75L, -72057594037927936.0L),
14548     TEST_f_f (trunc, -72057594037927937.5L, -72057594037927937.0L),
14550     TEST_f_f (trunc, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
14551     TEST_f_f (trunc, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
14552     TEST_f_f (trunc, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
14553     TEST_f_f (trunc, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
14554     TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
14555 #endif
14556     END_DATA (trunc)
14557   };
14559 static void
14560 trunc_test (void)
14562   START (trunc);
14563   RUN_TEST_LOOP_f_f (trunc, trunc_test_data, );
14564   END (trunc);
14567 static const struct test_f_f_data y0_test_data[] =
14568   {
14569     START_DATA (y0),
14570     /* y0 is the Bessel function of the second kind of order 0 */
14571     TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION),
14572     TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION),
14573     TEST_f_f (y0, 0.0, minus_infty),
14574     TEST_f_f (y0, qnan_value, qnan_value),
14575     TEST_f_f (y0, plus_infty, 0),
14577     TEST_f_f (y0, 0.125L, -1.38968062514384052915582277745018693L),
14578     TEST_f_f (y0, 0.75L, -0.137172769385772397522814379396581855L),
14579     TEST_f_f (y0, 1.0, 0.0882569642156769579829267660235151628L),
14580     TEST_f_f (y0, 1.5, 0.382448923797758843955068554978089862L),
14581     TEST_f_f (y0, 2.0, 0.510375672649745119596606592727157873L),
14582     TEST_f_f (y0, 8.0, 0.223521489387566220527323400498620359L),
14583     TEST_f_f (y0, 10.0, 0.0556711672835993914244598774101900481L),
14585     TEST_f_f (y0, 0x1.3ffp+74L, 1.818984347516051243459467456433028748678e-12L),
14587 #ifndef TEST_FLOAT
14588     TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
14589     TEST_f_f (y0, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
14590 #endif
14592 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14593     TEST_f_f (y0, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
14594     TEST_f_f (y0, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
14595 #endif
14597     TEST_f_f (y0, 0x1p-10L, -4.4865150767109739412411806297168793661098L),
14598     TEST_f_f (y0, 0x1p-20L, -8.8992283012125827603076426611387876938160L),
14599     TEST_f_f (y0, 0x1p-30L, -1.3311940304267782826037118027401817264906e+1L),
14600     TEST_f_f (y0, 0x1p-40L, -1.7724652307320814696990854700366226762563e+1L),
14601     TEST_f_f (y0, 0x1p-50L, -2.2137364310373846564919987139743760738155e+1L),
14602     TEST_f_f (y0, 0x1p-60L, -2.6550076313426878432849115782108205929120e+1L),
14603     TEST_f_f (y0, 0x1p-70L, -3.0962788316479910300778244424468159753887e+1L),
14604     TEST_f_f (y0, 0x1p-80L, -3.5375500319532942168707373066828113573541e+1L),
14605     TEST_f_f (y0, 0x1p-90L, -3.9788212322585974036636501709188067393195e+1L),
14606     TEST_f_f (y0, 0x1p-100L, -4.420092432563900590456563035154802121284e+1L),
14607     TEST_f_f (y0, 0x1p-110L, -4.861363632869203777249475899390797503250e+1L),
14608     END_DATA (y0)
14609   };
14611 static void
14612 y0_test (void)
14614   FLOAT s, c;
14615   errno = 0;
14616   FUNC (sincos) (0, &s, &c);
14617   if (errno == ENOSYS)
14618     /* Required function not implemented.  */
14619     return;
14620   FUNC(y0) (1);
14621   if (errno == ENOSYS)
14622     /* Function not implemented.  */
14623     return;
14625   START (y0);
14626   RUN_TEST_LOOP_f_f (y0, y0_test_data, );
14627   END (y0);
14631 static const struct test_f_f_data y1_test_data[] =
14632   {
14633     START_DATA (y1),
14634     /* y1 is the Bessel function of the second kind of order 1 */
14635     TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION),
14636     TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION),
14637     TEST_f_f (y1, 0.0, minus_infty),
14638     TEST_f_f (y1, plus_infty, 0),
14639     TEST_f_f (y1, qnan_value, qnan_value),
14641     TEST_f_f (y1, 0.125L, -5.19993611253477499595928744876579921L),
14642     TEST_f_f (y1, 0.75L, -1.03759455076928541973767132140642198L),
14643     TEST_f_f (y1, 1.0, -0.781212821300288716547150000047964821L),
14644     TEST_f_f (y1, 1.5, -0.412308626973911295952829820633445323L),
14645     TEST_f_f (y1, 2.0, -0.107032431540937546888370772277476637L),
14646     TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L),
14647     TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L),
14649     TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L),
14651 #ifndef TEST_FLOAT
14652     TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L),
14653     TEST_f_f (y1, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L),
14654 #endif
14656 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14657     TEST_f_f (y1, 0x1p16382L, 1.2193782500509000574176799046642541129387e-2466L),
14658     TEST_f_f (y1, 0x1p16383L, -9.5859502826270374691362975419147645151233e-2467L),
14659 #endif
14661     TEST_f_f (y1, 0x1p-10L, -6.5190099301063115047395187618929589514382e+02L),
14662     TEST_f_f (y1, 0x1p-20L, -6.6754421443450423911167962313100637952285e+05L),
14663     TEST_f_f (y1, 0x1p-30L, -6.8356527557643159612937462812258975438856e+08L),
14664     TEST_f_f (y1, 0x1p-40L, -6.9997084219026594793707805777425993547887e+11L),
14665     TEST_f_f (y1, 0x1p-50L, -7.1677014240283233068755952926181262431559e+14L),
14666     TEST_f_f (y1, 0x1p-60L, -7.3397262582050030662406095795388448059822e+17L),
14667     TEST_f_f (y1, 0x1p-70L, -7.5158796884019231398303842094477769620063e+20L),
14668     TEST_f_f (y1, 0x1p-80L, -7.6962608009235692951863134304745236090943e+23L),
14669     TEST_f_f (y1, 0x1p-90L, -7.8809710601457349582707849528059121757126e+26L),
14670     TEST_f_f (y1, 0x1p-100L, -8.0701143655892325972692837916732540679297e+29L),
14671     TEST_f_f (y1, 0x1p-110L, -8.2637971103633741796037466026734121655600e+32L),
14672     END_DATA (y1)
14673   };
14675 static void
14676 y1_test (void)
14678   FLOAT s, c;
14679   errno = 0;
14680   FUNC (sincos) (0, &s, &c);
14681   if (errno == ENOSYS)
14682     /* Required function not implemented.  */
14683     return;
14684   FUNC(y1) (1);
14685   if (errno == ENOSYS)
14686     /* Function not implemented.  */
14687     return;
14689   START (y1);
14690   RUN_TEST_LOOP_f_f (y1, y1_test_data, );
14691   END (y1);
14695 static const struct test_if_f_data yn_test_data[] =
14696   {
14697     START_DATA (yn),
14698     /* yn is the Bessel function of the second kind of order n */
14699     /* yn (0, x) == y0 (x)  */
14700     TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION),
14701     TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION),
14702     TEST_if_f (yn, 0, 0.0, minus_infty),
14703     TEST_if_f (yn, 0, qnan_value, qnan_value),
14704     TEST_if_f (yn, 0, plus_infty, 0),
14706     TEST_if_f (yn, 0, 0.125L, -1.38968062514384052915582277745018693L),
14707     TEST_if_f (yn, 0, 0.75L, -0.137172769385772397522814379396581855L),
14708     TEST_if_f (yn, 0, 1.0, 0.0882569642156769579829267660235151628L),
14709     TEST_if_f (yn, 0, 1.5, 0.382448923797758843955068554978089862L),
14710     TEST_if_f (yn, 0, 2.0, 0.510375672649745119596606592727157873L),
14711     TEST_if_f (yn, 0, 8.0, 0.223521489387566220527323400498620359L),
14712     TEST_if_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L),
14714     /* yn (1, x) == y1 (x)  */
14715     TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION),
14716     TEST_if_f (yn, 1, 0.0, minus_infty),
14717     TEST_if_f (yn, 1, plus_infty, 0),
14718     TEST_if_f (yn, 1, qnan_value, qnan_value),
14720     TEST_if_f (yn, 1, 0.125L, -5.19993611253477499595928744876579921L),
14721     TEST_if_f (yn, 1, 0.75L, -1.03759455076928541973767132140642198L),
14722     TEST_if_f (yn, 1, 1.0, -0.781212821300288716547150000047964821L),
14723     TEST_if_f (yn, 1, 1.5, -0.412308626973911295952829820633445323L),
14724     TEST_if_f (yn, 1, 2.0, -0.107032431540937546888370772277476637L),
14725     TEST_if_f (yn, 1, 8.0, -0.158060461731247494255555266187483550L),
14726     TEST_if_f (yn, 1, 10.0, 0.249015424206953883923283474663222803L),
14728     /* yn (3, x)  */
14729     TEST_if_f (yn, 3, plus_infty, 0),
14730     TEST_if_f (yn, 3, qnan_value, qnan_value),
14732     TEST_if_f (yn, 3, 0.125L, -2612.69757350066712600220955744091741L),
14733     TEST_if_f (yn, 3, 0.75L, -12.9877176234475433186319774484809207L),
14734     TEST_if_f (yn, 3, 1.0, -5.82151760596472884776175706442981440L),
14735     TEST_if_f (yn, 3, 2.0, -1.12778377684042778608158395773179238L),
14736     TEST_if_f (yn, 3, 10.0, -0.251362657183837329779204747654240998L),
14738     /* yn (10, x)  */
14739     TEST_if_f (yn, 10, plus_infty, 0),
14740     TEST_if_f (yn, 10, qnan_value, qnan_value),
14742     TEST_if_f (yn, 10, 0.125L, -127057845771019398.252538486899753195L),
14743     TEST_if_f (yn, 10, 0.75L, -2133501638.90573424452445412893839236L),
14744     TEST_if_f (yn, 10, 1.0, -121618014.278689189288130426667971145L),
14745     TEST_if_f (yn, 10, 2.0, -129184.542208039282635913145923304214L),
14746     TEST_if_f (yn, 10, 10.0, -0.359814152183402722051986577343560609L),
14748     /* Check whether yn returns correct value for LDBL_MIN, DBL_MIN,
14749        and FLT_MIN.  See Bug 14173.  */
14750     TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION),
14752     TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14753     END_DATA (yn)
14754   };
14756 static void
14757 yn_test (void)
14759   FLOAT s, c;
14760   errno = 0;
14761   FUNC (sincos) (0, &s, &c);
14762   if (errno == ENOSYS)
14763     /* Required function not implemented.  */
14764     return;
14765   FUNC(yn) (1, 1);
14766   if (errno == ENOSYS)
14767     /* Function not implemented.  */
14768     return;
14770   START (yn);
14771   RUN_TEST_LOOP_if_f (yn, yn_test_data, );
14772   END (yn);
14776 static const struct test_f_f_data significand_test_data[] =
14777   {
14778     START_DATA (significand),
14779     /* significand returns the mantissa of the exponential representation.  */
14780     /* TODO: missing +/-Inf as well as qNaN tests.  */
14781     TEST_f_f (significand, 4.0, 1.0),
14782     TEST_f_f (significand, 6.0, 1.5),
14783     TEST_f_f (significand, 8.0, 1.0),
14784     END_DATA (significand)
14785   };
14787 static void
14788 significand_test (void)
14790   START (significand);
14791   RUN_TEST_LOOP_f_f (significand, significand_test_data, );
14792   END (significand);
14796 static void
14797 initialize (void)
14799   fpstack_test ("start *init*");
14801   /* Clear all exceptions.  From now on we must not get random exceptions.  */
14802   feclearexcept (FE_ALL_EXCEPT);
14803   errno = 0;
14805   /* Test to make sure we start correctly.  */
14806   fpstack_test ("end *init*");
14809 /* Definitions of arguments for argp functions.  */
14810 static const struct argp_option options[] =
14812   { "verbose", 'v', "NUMBER", 0, "Level of verbosity (0..3)"},
14813   { "ulps-file", 'u', NULL, 0, "Output ulps to file ULPs"},
14814   { "no-max-error", 'f', NULL, 0,
14815     "Don't output maximal errors of functions"},
14816   { "no-points", 'p', NULL, 0,
14817     "Don't output results of functions invocations"},
14818   { "ignore-max-ulp", 'i', "yes/no", 0,
14819     "Ignore given maximal errors"},
14820   { "output-dir", 'o', "DIR", 0,
14821     "Directory where generated files will be placed"},
14822   { NULL, 0, NULL, 0, NULL }
14825 /* Short description of program.  */
14826 static const char doc[] = "Math test suite: " TEST_MSG ;
14828 /* Prototype for option handler.  */
14829 static error_t parse_opt (int key, char *arg, struct argp_state *state);
14831 /* Data structure to communicate with argp functions.  */
14832 static struct argp argp =
14834   options, parse_opt, NULL, doc,
14838 /* Handle program arguments.  */
14839 static error_t
14840 parse_opt (int key, char *arg, struct argp_state *state)
14842   switch (key)
14843     {
14844     case 'f':
14845       output_max_error = 0;
14846       break;
14847     case 'i':
14848       if (strcmp (arg, "yes") == 0)
14849         ignore_max_ulp = 1;
14850       else if (strcmp (arg, "no") == 0)
14851         ignore_max_ulp = 0;
14852       break;
14853     case 'o':
14854       output_dir = (char *) malloc (strlen (arg) + 1);
14855       if (output_dir != NULL)
14856         strcpy (output_dir, arg);
14857       else
14858         return errno;
14859       break;
14860     case 'p':
14861       output_points = 0;
14862       break;
14863     case 'u':
14864       output_ulps = 1;
14865       break;
14866     case 'v':
14867       if (optarg)
14868         verbose = (unsigned int) strtoul (optarg, NULL, 0);
14869       else
14870         verbose = 3;
14871       break;
14872     default:
14873       return ARGP_ERR_UNKNOWN;
14874     }
14875   return 0;
14878 #if 0
14879 /* function to check our ulp calculation.  */
14880 void
14881 check_ulp (void)
14883   int i;
14885   FLOAT u, diff, ulp;
14886   /* This gives one ulp.  */
14887   u = FUNC(nextafter) (10, 20);
14888   check_equal (10.0, u, 1, &diff, &ulp);
14889   printf ("One ulp: % .4" PRINTF_NEXPR "\n", ulp);
14891   /* This gives one more ulp.  */
14892   u = FUNC(nextafter) (u, 20);
14893   check_equal (10.0, u, 2, &diff, &ulp);
14894   printf ("two ulp: % .4" PRINTF_NEXPR "\n", ulp);
14896   /* And now calculate 100 ulp.  */
14897   for (i = 2; i < 100; i++)
14898     u = FUNC(nextafter) (u, 20);
14899   check_equal (10.0, u, 100, &diff, &ulp);
14900   printf ("100 ulp: % .4" PRINTF_NEXPR "\n", ulp);
14902 #endif
14905 main (int argc, char **argv)
14908   int remaining;
14909   char *ulps_file_path;
14910   size_t dir_len = 0;
14912   verbose = 1;
14913   output_ulps = 0;
14914   output_max_error = 1;
14915   output_points = 1;
14916   output_dir = NULL;
14917   /* XXX set to 0 for releases.  */
14918   ignore_max_ulp = 0;
14920   /* Parse and process arguments.  */
14921   argp_parse (&argp, argc, argv, 0, &remaining, NULL);
14923   if (remaining != argc)
14924     {
14925       fprintf (stderr, "wrong number of arguments");
14926       argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
14927       exit (EXIT_FAILURE);
14928     }
14930   if (output_ulps)
14931     {
14932       if (output_dir != NULL)
14933         dir_len = strlen (output_dir);
14934       ulps_file_path = (char *) malloc (dir_len + strlen (ulps_file_name) + 1);
14935       if (ulps_file_path == NULL)
14936         {
14937           perror ("can't allocate path for `ULPs' file: ");
14938           exit (1);
14939         }
14940       sprintf (ulps_file_path, "%s%s", output_dir == NULL ? "" : output_dir, ulps_file_name);
14941       ulps_file = fopen (ulps_file_path, "a");
14942       if (ulps_file == NULL)
14943         {
14944           perror ("can't open file `ULPs' for writing: ");
14945           exit (1);
14946         }
14947     }
14950   initialize ();
14951   printf (TEST_MSG);
14953 #if 0
14954   check_ulp ();
14955 #endif
14957   /* Keep the tests a wee bit ordered (according to ISO C99).  */
14958   /* Classification macros:  */
14959   finite_test ();
14960   fpclassify_test ();
14961   isfinite_test ();
14962   isinf_test ();
14963   isnan_test ();
14964   isnormal_test ();
14965   issignaling_test ();
14966   signbit_test ();
14968   /* Trigonometric functions:  */
14969   acos_test ();
14970   acos_test_tonearest ();
14971   acos_test_towardzero ();
14972   acos_test_downward ();
14973   acos_test_upward ();
14974   asin_test ();
14975   asin_test_tonearest ();
14976   asin_test_towardzero ();
14977   asin_test_downward ();
14978   asin_test_upward ();
14979   atan_test ();
14980   atan2_test ();
14981   cos_test ();
14982   cos_test_tonearest ();
14983   cos_test_towardzero ();
14984   cos_test_downward ();
14985   cos_test_upward ();
14986   sin_test ();
14987   sin_test_tonearest ();
14988   sin_test_towardzero ();
14989   sin_test_downward ();
14990   sin_test_upward ();
14991   sincos_test ();
14992   tan_test ();
14993   tan_test_tonearest ();
14994   tan_test_towardzero ();
14995   tan_test_downward ();
14996   tan_test_upward ();
14998   /* Hyperbolic functions:  */
14999   acosh_test ();
15000   asinh_test ();
15001   atanh_test ();
15002   cosh_test ();
15003   cosh_test_tonearest ();
15004   cosh_test_towardzero ();
15005   cosh_test_downward ();
15006   cosh_test_upward ();
15007   sinh_test ();
15008   sinh_test_tonearest ();
15009   sinh_test_towardzero ();
15010   sinh_test_downward ();
15011   sinh_test_upward ();
15012   tanh_test ();
15014   /* Exponential and logarithmic functions:  */
15015   exp_test ();
15016   exp_test_tonearest ();
15017   exp_test_towardzero ();
15018   exp_test_downward ();
15019   exp_test_upward ();
15020   exp10_test ();
15021   exp2_test ();
15022   expm1_test ();
15023   frexp_test ();
15024   ldexp_test ();
15025   log_test ();
15026   log10_test ();
15027   log1p_test ();
15028   log2_test ();
15029   logb_test ();
15030   logb_test_downward ();
15031   modf_test ();
15032   ilogb_test ();
15033   scalb_test ();
15034   scalbn_test ();
15035   scalbln_test ();
15036   significand_test ();
15038   /* Power and absolute value functions:  */
15039   cbrt_test ();
15040   fabs_test ();
15041   hypot_test ();
15042   pow_test ();
15043   pow_test_tonearest ();
15044   pow_test_towardzero ();
15045   pow_test_downward ();
15046   pow_test_upward ();
15047   sqrt_test ();
15049   /* Error and gamma functions:  */
15050   erf_test ();
15051   erfc_test ();
15052   gamma_test ();
15053   lgamma_test ();
15054   tgamma_test ();
15056   /* Nearest integer functions:  */
15057   ceil_test ();
15058   floor_test ();
15059   nearbyint_test ();
15060   rint_test ();
15061   rint_test_tonearest ();
15062   rint_test_towardzero ();
15063   rint_test_downward ();
15064   rint_test_upward ();
15065   lrint_test ();
15066   lrint_test_tonearest ();
15067   lrint_test_towardzero ();
15068   lrint_test_downward ();
15069   lrint_test_upward ();
15070   llrint_test ();
15071   llrint_test_tonearest ();
15072   llrint_test_towardzero ();
15073   llrint_test_downward ();
15074   llrint_test_upward ();
15075   round_test ();
15076   lround_test ();
15077   llround_test ();
15078   trunc_test ();
15080   /* Remainder functions:  */
15081   fmod_test ();
15082   remainder_test ();
15083   remquo_test ();
15085   /* Manipulation functions:  */
15086   copysign_test ();
15087   nextafter_test ();
15088   nexttoward_test ();
15090   /* maximum, minimum and positive difference functions */
15091   fdim_test ();
15092   fmax_test ();
15093   fmin_test ();
15095   /* Multiply and add:  */
15096   fma_test ();
15097   fma_test_towardzero ();
15098   fma_test_downward ();
15099   fma_test_upward ();
15101   /* Comparison macros:  */
15102   isgreater_test ();
15103   isgreaterequal_test ();
15104   isless_test ();
15105   islessequal_test ();
15106   islessgreater_test ();
15107   isunordered_test ();
15109   /* Complex functions:  */
15110   cabs_test ();
15111   cacos_test ();
15112   cacosh_test ();
15113   carg_test ();
15114   casin_test ();
15115   casinh_test ();
15116   catan_test ();
15117   catanh_test ();
15118   ccos_test ();
15119   ccosh_test ();
15120   cexp_test ();
15121   cimag_test ();
15122   clog10_test ();
15123   clog_test ();
15124   conj_test ();
15125   cpow_test ();
15126   cproj_test ();
15127   creal_test ();
15128   csin_test ();
15129   csinh_test ();
15130   csqrt_test ();
15131   ctan_test ();
15132   ctan_test_tonearest ();
15133   ctan_test_towardzero ();
15134   ctan_test_downward ();
15135   ctan_test_upward ();
15136   ctanh_test ();
15137   ctanh_test_tonearest ();
15138   ctanh_test_towardzero ();
15139   ctanh_test_downward ();
15140   ctanh_test_upward ();
15142   /* Bessel functions:  */
15143   j0_test ();
15144   j1_test ();
15145   jn_test ();
15146   y0_test ();
15147   y1_test ();
15148   yn_test ();
15150   if (output_ulps)
15151     fclose (ulps_file);
15153   printf ("\nTest suite completed:\n");
15154   printf ("  %d test cases plus %d tests for exception flags and\n"
15155           "    %d tests for errno executed.\n",
15156           noTests, noExcTests, noErrnoTests);
15157   if (noErrors)
15158     {
15159       printf ("  %d errors occurred.\n", noErrors);
15160       return 1;
15161     }
15162   printf ("  All tests passed successfully.\n");
15164   return 0;
15168  * Local Variables:
15169  * mode:c
15170  * End:
15171  */