Convert TEST_ffI_f1 tests from code to data.
[jlayton/glibc.git] / math / libm-test.inc
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.
4
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.
9
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.
14
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/>.  */
18
19 /* Part of testsuite for libm.
20
21    This file is processed by a perl script.  The resulting file has to
22    be included by a master file that defines:
23
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.  */
39
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
54
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.
59
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).
65
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  */
74
75 /* "Philosophy":
76
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.
84
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.
88
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.
92
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.
102
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
108
109    With e.g. gcc 2.7.2.2 the test for cexp fails because of a compiler error.
110
111
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.  */
117
118 #ifndef _GNU_SOURCE
119 # define _GNU_SOURCE
120 #endif
121
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>
128
129 #include <errno.h>
130 #include <stdlib.h>
131 #include <stdio.h>
132 #include <string.h>
133 #include <argp.h>
134 #include <tininess.h>
135
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
151
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
170
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)
201
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  */
216
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.  */
221
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 */
226
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?  */
231
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__)
251
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;
260
261 static FLOAT max_error, real_max_error, imag_max_error;
262
263
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))
270
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))
273
274 static void
275 init_max_error (void)
276 {
277   max_error = 0;
278   real_max_error = 0;
279   imag_max_error = 0;
280   feclearexcept (FE_ALL_EXCEPT);
281   errno = 0;
282 }
283
284 static void
285 set_max_error (FLOAT current, FLOAT *curr_max_error)
286 {
287   if (current > *curr_max_error)
288     *curr_max_error = current;
289 }
290
291
292 /* Print a FLOAT.  */
293 static void
294 print_float (FLOAT f)
295 {
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);
303 }
304
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)
309 {
310   if (output_points
311       && (verbose > 1
312           || (verbose == 1 && ok == 0)))
313     return 1;
314   return 0;
315 }
316
317
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)
322 {
323   if (output_max_error
324       && (verbose > 1
325           || ((verbose == 1) && (ok == 0))))
326     return 1;
327   return 0;
328 }
329
330 /* Update statistic counters.  */
331 static void
332 update_stats (int ok)
333 {
334   ++noTests;
335   if (!ok)
336     ++noErrors;
337 }
338
339 static void
340 print_ulps (const char *test_name, FLOAT ulp)
341 {
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     }
350 }
351
352 static void
353 print_function_ulps (const char *function_name, FLOAT ulp)
354 {
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     }
363 }
364
365
366 static void
367 print_complex_function_ulps (const char *function_name, FLOAT real_ulp,
368                              FLOAT imag_ulp)
369 {
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         }
388
389
390     }
391 }
392
393
394
395 /* Test if Floating-Point stack hasn't changed */
396 static void
397 fpstack_test (const char *test_name)
398 {
399 #if defined (__i386__) || defined (__x86_64__)
400   static int old_stack;
401   int sw;
402
403   asm ("fnstsw" : "=a" (sw));
404   sw >>= 11;
405   sw &= 7;
406
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
415 }
416
417
418 static void
419 print_max_error (const char *func_name, FLOAT allowed)
420 {
421   int ok = 0;
422
423   if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp))
424     {
425       ok = 1;
426     }
427
428   if (!ok)
429     print_function_ulps (func_name, max_error);
430
431
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     }
438
439   update_stats (ok);
440 }
441
442
443 static void
444 print_complex_max_error (const char *func_name, __complex__ FLOAT allowed)
445 {
446   int ok = 0;
447
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     }
455
456   if (!ok)
457     print_complex_function_ulps (func_name, real_max_error, imag_max_error);
458
459
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     }
473
474   update_stats (ok);
475 }
476
477
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)
485 {
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;
521
522 #endif
523 }
524
525
526 /* Test whether exceptions given by EXCEPTION are raised.  Ignore thereby
527    allowed but not required exceptions.
528 */
529 static void
530 test_exceptions (const char *test_name, int exception)
531 {
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);
555 }
556
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)
562 {
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     }
576 }
577
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)
582 {
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");
590 }
591
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)
596 {
597   int ok = 0;
598   int print_diff = 0;
599   FLOAT diff = 0;
600   FLOAT ulp = 0;
601   int errno_value = errno;
602
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         }
662
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);
683
684   fpstack_test (test_name);
685   errno = 0;
686 }
687
688
689 static void
690 check_float (const char *test_name, FLOAT computed, FLOAT expected,
691              FLOAT max_ulp, int exceptions)
692 {
693   check_float_internal (test_name, computed, expected, max_ulp,
694                         exceptions, &max_error);
695 }
696
697
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)
703 {
704   FLOAT part_comp, part_exp, part_max_ulp;
705   char *str;
706
707   if (asprintf (&str, "Real part of: %s", test_name) == -1)
708     abort ();
709
710   part_comp = __real__ computed;
711   part_exp = __real__ expected;
712   part_max_ulp = __real__ max_ulp;
713
714   check_float_internal (str, part_comp, part_exp, part_max_ulp,
715                         exception, &real_max_error);
716   free (str);
717
718   if (asprintf (&str, "Imaginary part of: %s", test_name) == -1)
719     abort ();
720
721   part_comp = __imag__ computed;
722   part_exp = __imag__ expected;
723   part_max_ulp = __imag__ max_ulp;
724
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);
731 }
732
733
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)
738 {
739   int diff = computed - expected;
740   int ok = 0;
741   int errno_value = errno;
742
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;
748
749   if (!ok)
750     print_ulps (test_name, diff);
751
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     }
761
762   update_stats (ok);
763   fpstack_test (test_name);
764   errno = 0;
765 }
766
767
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)
772 {
773   long int diff = computed - expected;
774   int ok = 0;
775   int errno_value = errno;
776
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;
782
783   if (!ok)
784     print_ulps (test_name, diff);
785
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     }
795
796   update_stats (ok);
797   fpstack_test (test_name);
798   errno = 0;
799 }
800
801
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)
806 {
807   int ok = 0;
808   int errno_value = errno;
809
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;
815
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     }
825
826   update_stats (ok);
827   fpstack_test (test_name);
828   errno = 0;
829 }
830
831
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)
838 {
839   long long int diff = computed - expected;
840   int ok = 0;
841   int errno_value = errno;
842
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;
848
849   if (!ok)
850     print_ulps (test_name, diff);
851
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     }
861
862   update_stats (ok);
863   fpstack_test (test_name);
864   errno = 0;
865 }
866
867 /* Structures for each kind of test.  */
868 struct test_f_f_data
869 {
870   const char *test_name;
871   FLOAT arg;
872   FLOAT expected;
873   FLOAT max_ulp;
874   int exceptions;
875 };
876 struct test_ff_f_data
877 {
878   const char *test_name;
879   FLOAT arg1, arg2;
880   FLOAT expected;
881   FLOAT max_ulp;
882   int exceptions;
883 };
884 struct test_ff_f_data_nexttoward
885 {
886   const char *test_name;
887   FLOAT arg1;
888   long double arg2;
889   FLOAT expected;
890   FLOAT max_ulp;
891   int exceptions;
892 };
893 struct test_fi_f_data
894 {
895   const char *test_name;
896   FLOAT arg1;
897   int arg2;
898   FLOAT expected;
899   FLOAT max_ulp;
900   int exceptions;
901 };
902 struct test_fl_f_data
903 {
904   const char *test_name;
905   FLOAT arg1;
906   long int arg2;
907   FLOAT expected;
908   FLOAT max_ulp;
909   int exceptions;
910 };
911 struct test_if_f_data
912 {
913   const char *test_name;
914   int arg1;
915   FLOAT arg2;
916   FLOAT expected;
917   FLOAT max_ulp;
918   int exceptions;
919 };
920 struct test_fff_f_data
921 {
922   const char *test_name;
923   FLOAT arg1, arg2, arg3;
924   FLOAT expected;
925   FLOAT max_ulp;
926   int exceptions;
927 };
928 struct test_c_f_data
929 {
930   const char *test_name;
931   FLOAT argr, argc;
932   FLOAT expected;
933   FLOAT max_ulp;
934   int exceptions;
935 };
936 /* Used for both RUN_TEST_LOOP_f_f1 and RUN_TEST_LOOP_fI_f1.  */
937 struct test_f_f1_data
938 {
939   const char *test_name;
940   FLOAT arg;
941   FLOAT expected;
942   FLOAT max_ulp;
943   int exceptions;
944   const char *extra_name;
945   int extra_init;
946   int extra_test;
947   int extra_expected;
948   int extra_ulp;
949 };
950 struct test_fF_f1_data
951 {
952   const char *test_name;
953   FLOAT arg;
954   FLOAT expected;
955   FLOAT max_ulp;
956   int exceptions;
957   const char *extra_name;
958   FLOAT extra_init;
959   FLOAT extra_test;
960   FLOAT extra_expected;
961   FLOAT extra_ulp;
962 };
963 struct test_ffI_f1_data
964 {
965   const char *test_name;
966   FLOAT arg1, arg2;
967   FLOAT expected;
968   FLOAT max_ulp;
969   int exceptions;
970   const char *extra_name;
971   int extra_init;
972   int extra_test;
973   int extra_expected;
974   int extra_ulp;
975 };
976 struct test_c_c_data
977 {
978   const char *test_name;
979   FLOAT argr, argc;
980   FLOAT expr, expc;
981   __complex__ FLOAT max_ulp;
982   int exceptions;
983 };
984 struct test_f_i_data
985 {
986   const char *test_name;
987   FLOAT arg;
988   int expected;
989   FLOAT max_ulp;
990   int exceptions;
991 };
992
993 /* Set the rounding mode, or restore the saved value.  */
994 #define IF_ROUND_INIT_  /* Empty.  */
995 #define IF_ROUND_INIT_FE_DOWNWARD               \
996   int save_round_mode = fegetround ();          \
997   if (fesetround (FE_DOWNWARD) == 0)
998 #define IF_ROUND_INIT_FE_TONEAREST              \
999   int save_round_mode = fegetround ();          \
1000   if (fesetround (FE_TONEAREST) == 0)
1001 #define IF_ROUND_INIT_FE_TOWARDZERO             \
1002   int save_round_mode = fegetround ();          \
1003   if (fesetround (FE_TOWARDZERO) == 0)
1004 #define IF_ROUND_INIT_FE_UPWARD                 \
1005   int save_round_mode = fegetround ();          \
1006   if (fesetround (FE_UPWARD) == 0)
1007 #define ROUND_RESTORE_  /* Empty.  */
1008 #define ROUND_RESTORE_FE_DOWNWARD               \
1009   fesetround (save_round_mode)
1010 #define ROUND_RESTORE_FE_TONEAREST              \
1011   fesetround (save_round_mode)
1012 #define ROUND_RESTORE_FE_TOWARDZERO             \
1013   fesetround (save_round_mode)
1014 #define ROUND_RESTORE_FE_UPWARD                 \
1015   fesetround (save_round_mode)
1016
1017 /* Run an individual test, including any required setup and checking
1018    of results, or loop over all tests in an array.  */
1019 #define RUN_TEST_f_f(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1020                      MAX_ULP, EXCEPTIONS)                       \
1021   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,     \
1022                MAX_ULP, EXCEPTIONS)
1023 #define RUN_TEST_LOOP_f_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1024   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1025     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1026       RUN_TEST_f_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,    \
1027                     (ARRAY)[i].expected, (ARRAY)[i].max_ulp,            \
1028                     (ARRAY)[i].exceptions);                             \
1029   ROUND_RESTORE_ ## ROUNDING_MODE
1030 #define RUN_TEST_2_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
1031                      MAX_ULP, EXCEPTIONS)                               \
1032   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2), EXPECTED,      \
1033                MAX_ULP, EXCEPTIONS)
1034 #define RUN_TEST_LOOP_2_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1035   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1036     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1037       RUN_TEST_2_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1,   \
1038                     (ARRAY)[i].arg2, (ARRAY)[i].expected,               \
1039                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1040   ROUND_RESTORE_ ## ROUNDING_MODE
1041 #define RUN_TEST_ff_f RUN_TEST_2_f
1042 #define RUN_TEST_LOOP_ff_f RUN_TEST_LOOP_2_f
1043 #define RUN_TEST_fi_f RUN_TEST_2_f
1044 #define RUN_TEST_LOOP_fi_f RUN_TEST_LOOP_2_f
1045 #define RUN_TEST_fl_f RUN_TEST_2_f
1046 #define RUN_TEST_LOOP_fl_f RUN_TEST_LOOP_2_f
1047 #define RUN_TEST_if_f RUN_TEST_2_f
1048 #define RUN_TEST_LOOP_if_f RUN_TEST_LOOP_2_f
1049 #define RUN_TEST_fff_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, ARG3,  \
1050                        EXPECTED, MAX_ULP, EXCEPTIONS)           \
1051   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2, ARG3),  \
1052                EXPECTED, MAX_ULP, EXCEPTIONS)
1053 #define RUN_TEST_LOOP_fff_f(FUNC_NAME, ARRAY, ROUNDING_MODE)            \
1054   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1055     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1056       RUN_TEST_fff_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1, \
1057                       (ARRAY)[i].arg2, (ARRAY)[i].arg3,                 \
1058                       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,          \
1059                       (ARRAY)[i].exceptions);                           \
1060   ROUND_RESTORE_ ## ROUNDING_MODE
1061 #define RUN_TEST_c_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
1062                      MAX_ULP, EXCEPTIONS)                               \
1063   check_float (TEST_NAME,                                               \
1064                FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1, ARG2)),           \
1065                EXPECTED, MAX_ULP, EXCEPTIONS)
1066 #define RUN_TEST_LOOP_c_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1067   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1068     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1069       RUN_TEST_c_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].argr,   \
1070                     (ARRAY)[i].argc, (ARRAY)[i].expected,               \
1071                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1072   ROUND_RESTORE_ ## ROUNDING_MODE
1073 #define RUN_TEST_f_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,              \
1074                       MAX_ULP, EXCEPTIONS,                              \
1075                       EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,    \
1076                       EXTRA_EXPECTED, EXTRA_ULP)                        \
1077   do                                                                    \
1078     {                                                                   \
1079       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1080       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,         \
1081                    MAX_ULP, EXCEPTIONS);                                \
1082       if (EXTRA_TEST)                                                   \
1083         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1084                    EXTRA_ULP, 0);                                       \
1085     }                                                                   \
1086   while (0)
1087 #define RUN_TEST_LOOP_f_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR)  \
1088   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1089     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1090       RUN_TEST_f_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,   \
1091                      (ARRAY)[i].expected, (ARRAY)[i].max_ulp,           \
1092                      (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,      \
1093                      EXTRA_VAR, (ARRAY)[i].extra_init,                  \
1094                      (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected,  \
1095                      (ARRAY)[i].extra_ulp);                             \
1096   ROUND_RESTORE_ ## ROUNDING_MODE
1097 #define RUN_TEST_fF_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
1098                        MAX_ULP, EXCEPTIONS,                             \
1099                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
1100                        EXTRA_EXPECTED, EXTRA_ULP)                       \
1101   do                                                                    \
1102     {                                                                   \
1103       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1104       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1105                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1106       if (EXTRA_TEST)                                                   \
1107         check_float (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,             \
1108                      EXTRA_ULP, 0);                                     \
1109     }                                                                   \
1110   while (0)
1111 #define RUN_TEST_LOOP_fF_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR) \
1112   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1113     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1114       RUN_TEST_fF_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,  \
1115                       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,          \
1116                       (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,     \
1117                       EXTRA_VAR, (ARRAY)[i].extra_init,                 \
1118                       (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected, \
1119                       (ARRAY)[i].extra_ulp);                            \
1120   ROUND_RESTORE_ ## ROUNDING_MODE
1121 #define RUN_TEST_fI_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
1122                        MAX_ULP, EXCEPTIONS,                             \
1123                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
1124                        EXTRA_EXPECTED, EXTRA_ULP)                       \
1125   do                                                                    \
1126     {                                                                   \
1127       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1128       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1129                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1130       if (EXTRA_TEST)                                                   \
1131         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1132                    EXTRA_ULP, 0);                                       \
1133     }                                                                   \
1134   while (0)
1135 #define RUN_TEST_LOOP_fI_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR) \
1136   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1137     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1138       RUN_TEST_fI_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,  \
1139                       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,          \
1140                       (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,     \
1141                       EXTRA_VAR, (ARRAY)[i].extra_init,                 \
1142                       (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected, \
1143                       (ARRAY)[i].extra_ulp);                            \
1144   ROUND_RESTORE_ ## ROUNDING_MODE
1145 #define RUN_TEST_ffI_f1(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,     \
1146                         MAX_ULP, EXCEPTIONS,                            \
1147                         EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,  \
1148                         EXTRA_EXPECTED, EXTRA_ULP)                      \
1149   do                                                                    \
1150     {                                                                   \
1151       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1152       check_float (TEST_NAME,                                           \
1153                    FUNC (FUNC_NAME) (ARG1, ARG2, &(EXTRA_VAR)),         \
1154                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1155       if (EXTRA_TEST)                                                   \
1156         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1157                    EXTRA_ULP, 0);                                       \
1158     }                                                                   \
1159   while (0)
1160 #define RUN_TEST_LOOP_ffI_f1(FUNC_NAME, ARRAY, ROUNDING_MODE,           \
1161                              EXTRA_VAR)                                 \
1162   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1163     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1164       RUN_TEST_ffI_f1 ((ARRAY)[i].test_name, FUNC_NAME,                 \
1165                        (ARRAY)[i].arg1, (ARRAY)[i].arg2,                \
1166                        (ARRAY)[i].expected, (ARRAY)[i].max_ulp,         \
1167                        (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,    \
1168                        EXTRA_VAR, (ARRAY)[i].extra_init,                \
1169                        (ARRAY)[i].extra_test,                           \
1170                        (ARRAY)[i].extra_expected,                       \
1171                        (ARRAY)[i].extra_ulp);                           \
1172   ROUND_RESTORE_ ## ROUNDING_MODE
1173 #define RUN_TEST_c_c(TEST_NAME, FUNC_NAME, ARGR, ARGC, EXPR, EXPC,      \
1174                      MAX_ULP, EXCEPTIONS)                               \
1175   check_complex (TEST_NAME,                                             \
1176                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARGR, ARGC)),         \
1177                  BUILD_COMPLEX (EXPR, EXPC),                            \
1178                  MAX_ULP, EXCEPTIONS)
1179 #define RUN_TEST_LOOP_c_c(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1180   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1181     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1182       RUN_TEST_c_c ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].argr,   \
1183                     (ARRAY)[i].argc, (ARRAY)[i].expr, (ARRAY)[i].expc,  \
1184                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1185   ROUND_RESTORE_ ## ROUNDING_MODE
1186 #define RUN_TEST_cc_c(TEST_NAME, FUNC_NAME, ARG1R, ARG1C, ARG2R, ARG2C, \
1187                       EXPR, EXPC, MAX_ULP, EXCEPTIONS)                  \
1188   check_complex (TEST_NAME,                                             \
1189                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1R, ARG1C),        \
1190                                    BUILD_COMPLEX (ARG2R, ARG2C)),       \
1191                  BUILD_COMPLEX (EXPR, EXPC),                            \
1192                  MAX_ULP, EXCEPTIONS)
1193 #define RUN_TEST_f_i(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1194                      MAX_ULP, EXCEPTIONS)                       \
1195   check_int (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,       \
1196              MAX_ULP, EXCEPTIONS)
1197 #define RUN_TEST_LOOP_f_i(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1198   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1199     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1200       RUN_TEST_f_i ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,    \
1201                     (ARRAY)[i].expected, (ARRAY)[i].max_ulp,            \
1202                     (ARRAY)[i].exceptions);                             \
1203   ROUND_RESTORE_ ## ROUNDING_MODE
1204 #define RUN_TEST_f_i_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1205                         MAX_ULP, EXCEPTIONS)                    \
1206   check_int (TEST_NAME, FUNC_NAME (ARG), EXPECTED,              \
1207              MAX_ULP, EXCEPTIONS)
1208 #define RUN_TEST_LOOP_f_i_tg(FUNC_NAME, ARRAY, ROUNDING_MODE)           \
1209   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1210     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1211       RUN_TEST_f_i_tg ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg, \
1212                        (ARRAY)[i].expected, (ARRAY)[i].max_ulp,         \
1213                        (ARRAY)[i].exceptions);                          \
1214   ROUND_RESTORE_ ## ROUNDING_MODE
1215 #define RUN_TEST_ff_i_tg(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,    \
1216                          MAX_ULP, EXCEPTIONS)                           \
1217   check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED,               \
1218              MAX_ULP, EXCEPTIONS)
1219 #define RUN_TEST_f_b(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1220                      MAX_ULP, EXCEPTIONS)                       \
1221   check_bool (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1222               MAX_ULP, EXCEPTIONS)
1223 #define RUN_TEST_f_b_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1224                         MAX_ULP, EXCEPTIONS)                    \
1225   check_bool (TEST_NAME, FUNC_NAME (ARG), EXPECTED,             \
1226               MAX_ULP, EXCEPTIONS)
1227 #define RUN_TEST_f_l(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1228                      MAX_ULP, EXCEPTIONS)                       \
1229   check_long (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1230               MAX_ULP, EXCEPTIONS)
1231 #define RUN_TEST_f_L(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1232                      MAX_ULP, EXCEPTIONS)                       \
1233   check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,  \
1234                   MAX_ULP, EXCEPTIONS)
1235 #define RUN_TEST_sincos(ARG, TEST_NAME_SIN, SIN_RES_VAR, EXPECTED_SIN,  \
1236                         MAX_ULP_SIN, TEST_NAME_COS, COS_RES_VAR,        \
1237                         EXPECTED_COS, MAX_ULP_COS, EXCEPTIONS)          \
1238   do                                                                    \
1239     {                                                                   \
1240       FUNC (sincos) (ARG, &(SIN_RES_VAR), &(COS_RES_VAR));              \
1241       check_float (TEST_NAME_SIN, SIN_RES_VAR,                          \
1242                    EXPECTED_SIN, MAX_ULP_SIN, EXCEPTIONS);              \
1243       check_float (TEST_NAME_COS, COS_RES_VAR,                          \
1244                    EXPECTED_COS, MAX_ULP_COS, 0);                       \
1245     }                                                                   \
1246   while (0)
1247
1248
1249
1250 /* This is to prevent messages from the SVID libm emulation.  */
1251 int
1252 matherr (struct exception *x __attribute__ ((unused)))
1253 {
1254   return 1;
1255 }
1256
1257
1258 /****************************************************************************
1259   Tests for single functions of libm.
1260   Please keep them alphabetically sorted!
1261 ****************************************************************************/
1262
1263 static const struct test_f_f_data acos_test_data[] =
1264   {
1265     START_DATA (acos),
1266     TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION),
1267     TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION),
1268     TEST_f_f (acos, qnan_value, qnan_value),
1269
1270     /* |x| > 1: */
1271     TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION),
1272     TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION),
1273     TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION),
1274     TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION),
1275
1276     TEST_f_f (acos, 0, M_PI_2l),
1277     TEST_f_f (acos, minus_zero, M_PI_2l),
1278     TEST_f_f (acos, 1, 0),
1279     TEST_f_f (acos, -1, M_PIl),
1280     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1281     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1282     TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L),
1283     TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L),
1284     TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L),
1285     TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L),
1286     TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L),
1287 #ifndef TEST_FLOAT
1288     TEST_f_f (acos, 0x0.ffffffff8p0L, 1.5258789062648029736620564947844627548516e-5L),
1289     TEST_f_f (acos, -0x0.ffffffff8p0L, 3.1415773948007305904329067627145550395696L),
1290     TEST_f_f (acos, 0x0.ffffffffffffp0L, 8.4293697021788088529885473244391795127130e-8L),
1291     TEST_f_f (acos, -0x0.ffffffffffffp0L, 3.1415925692960962166745548533940296398054L),
1292 #endif
1293 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1294     TEST_f_f (acos, 0x0.ffffffffffffffffp0L, 3.2927225399135962333718255320079907245059e-10L),
1295     TEST_f_f (acos, -0x0.ffffffffffffffffp0L, 3.1415926532605209844712837599423203309964L),
1296 #endif
1297     END_DATA (acos)
1298   };
1299
1300 static void
1301 acos_test (void)
1302 {
1303   errno = 0;
1304   FUNC(acos) (0);
1305   if (errno == ENOSYS)
1306     /* Function not implemented.  */
1307     return;
1308
1309   START (acos);
1310   RUN_TEST_LOOP_f_f (acos, acos_test_data, );
1311   END (acos);
1312 }
1313
1314
1315 static const struct test_f_f_data acos_tonearest_test_data[] =
1316   {
1317     START_DATA (acos_tonearest),
1318     TEST_f_f (acos, 0, M_PI_2l),
1319     TEST_f_f (acos, minus_zero, M_PI_2l),
1320     TEST_f_f (acos, 1, 0),
1321     TEST_f_f (acos, -1, M_PIl),
1322     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1323     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1324     END_DATA (acos_tonearest)
1325   };
1326
1327 static void
1328 acos_test_tonearest (void)
1329 {
1330   errno = 0;
1331   FUNC(acos) (0);
1332   if (errno == ENOSYS)
1333     /* Function not implemented.  */
1334     return;
1335
1336   START (acos_tonearest);
1337   RUN_TEST_LOOP_f_f (acos, acos_tonearest_test_data, FE_TONEAREST);
1338   END (acos_tonearest);
1339 }
1340
1341
1342 static const struct test_f_f_data acos_towardzero_test_data[] =
1343   {
1344     START_DATA (acos_towardzero),
1345     TEST_f_f (acos, 0, M_PI_2l),
1346     TEST_f_f (acos, minus_zero, M_PI_2l),
1347     TEST_f_f (acos, 1, 0),
1348     TEST_f_f (acos, -1, M_PIl),
1349     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1350     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1351     END_DATA (acos_towardzero)
1352   };
1353
1354 static void
1355 acos_test_towardzero (void)
1356 {
1357   errno = 0;
1358   FUNC(acos) (0);
1359   if (errno == ENOSYS)
1360     /* Function not implemented.  */
1361     return;
1362
1363   START (acos_towardzero);
1364   RUN_TEST_LOOP_f_f (acos, acos_towardzero_test_data, FE_TOWARDZERO);
1365   END (acos_towardzero);
1366 }
1367
1368
1369 static const struct test_f_f_data acos_downward_test_data[] =
1370   {
1371     START_DATA (acos_downward),
1372     TEST_f_f (acos, 0, M_PI_2l),
1373     TEST_f_f (acos, minus_zero, M_PI_2l),
1374     TEST_f_f (acos, 1, 0),
1375     TEST_f_f (acos, -1, M_PIl),
1376     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1377     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1378     END_DATA (acos_downward)
1379   };
1380
1381 static void
1382 acos_test_downward (void)
1383 {
1384   errno = 0;
1385   FUNC(acos) (0);
1386   if (errno == ENOSYS)
1387     /* Function not implemented.  */
1388     return;
1389
1390   START (acos_downward);
1391   RUN_TEST_LOOP_f_f (acos, acos_downward_test_data, FE_DOWNWARD);
1392   END (acos_downward);
1393 }
1394
1395
1396 static const struct test_f_f_data acos_upward_test_data[] =
1397   {
1398     START_DATA (acos_upward),
1399     TEST_f_f (acos, 0, M_PI_2l),
1400     TEST_f_f (acos, minus_zero, M_PI_2l),
1401     TEST_f_f (acos, 1, 0),
1402     TEST_f_f (acos, -1, M_PIl),
1403     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1404     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1405     END_DATA (acos_upward)
1406   };
1407
1408 static void
1409 acos_test_upward (void)
1410 {
1411   errno = 0;
1412   FUNC(acos) (0);
1413   if (errno == ENOSYS)
1414     /* Function not implemented.  */
1415     return;
1416
1417   START (acos_upward);
1418   RUN_TEST_LOOP_f_f (acos, acos_upward_test_data, FE_UPWARD);
1419   END (acos_upward);
1420 }
1421
1422 static const struct test_f_f_data acosh_test_data[] =
1423   {
1424     START_DATA (acosh),
1425     TEST_f_f (acosh, plus_infty, plus_infty),
1426     TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION),
1427     TEST_f_f (acosh, qnan_value, qnan_value),
1428
1429     /* x < 1:  */
1430     TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION),
1431     TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION),
1432
1433     TEST_f_f (acosh, 1, 0),
1434     TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L),
1435     END_DATA (acosh)
1436   };
1437
1438 static void
1439 acosh_test (void)
1440 {
1441   errno = 0;
1442   FUNC(acosh) (7);
1443   if (errno == ENOSYS)
1444     /* Function not implemented.  */
1445     return;
1446
1447   START (acosh);
1448   RUN_TEST_LOOP_f_f (acosh, acosh_test_data, );
1449   END (acosh);
1450 }
1451
1452 static const struct test_f_f_data asin_test_data[] =
1453   {
1454     START_DATA (asin),
1455     TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION),
1456     TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION),
1457     TEST_f_f (asin, qnan_value, qnan_value),
1458
1459     /* asin x == qNaN plus invalid exception for |x| > 1.  */
1460     TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION),
1461     TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION),
1462     TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION),
1463     TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION),
1464
1465     TEST_f_f (asin, 0, 0),
1466     TEST_f_f (asin, minus_zero, minus_zero),
1467     TEST_f_f (asin, 0.5, M_PI_6l),
1468     TEST_f_f (asin, -0.5, -M_PI_6l),
1469     TEST_f_f (asin, 1.0, M_PI_2l),
1470     TEST_f_f (asin, -1.0, -M_PI_2l),
1471     TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L),
1472     TEST_f_f (asin, 0x0.ffffffp0L, 1.5704510598101804156437184421571127056013L),
1473     TEST_f_f (asin, -0x0.ffffffp0L, -1.5704510598101804156437184421571127056013L),
1474 #ifndef TEST_FLOAT
1475     TEST_f_f (asin, 0x0.ffffffff8p0L, 1.5707810680058339712015850710748035974710L),
1476     TEST_f_f (asin, -0x0.ffffffff8p0L, -1.5707810680058339712015850710748035974710L),
1477     TEST_f_f (asin, 0x0.ffffffffffffp0L, 1.5707962425011995974432331617542781977068L),
1478     TEST_f_f (asin, -0x0.ffffffffffffp0L, -1.5707962425011995974432331617542781977068L),
1479 #endif
1480 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1481     TEST_f_f (asin, 0x0.ffffffffffffffffp0L, 1.5707963264656243652399620683025688888978L),
1482     TEST_f_f (asin, -0x0.ffffffffffffffffp0L, -1.5707963264656243652399620683025688888978L),
1483 #endif
1484     END_DATA (asin)
1485   };
1486
1487 static void
1488 asin_test (void)
1489 {
1490   errno = 0;
1491   FUNC(asin) (0);
1492   if (errno == ENOSYS)
1493     /* Function not implemented.  */
1494     return;
1495
1496   START (asin);
1497   RUN_TEST_LOOP_f_f (asin, asin_test_data, );
1498   END (asin);
1499 }
1500
1501
1502 static const struct test_f_f_data asin_tonearest_test_data[] =
1503   {
1504     START_DATA (asin_tonearest),
1505     TEST_f_f (asin, 0, 0),
1506     TEST_f_f (asin, minus_zero, minus_zero),
1507     TEST_f_f (asin, 0.5, M_PI_6l),
1508     TEST_f_f (asin, -0.5, -M_PI_6l),
1509     TEST_f_f (asin, 1.0, M_PI_2l),
1510     TEST_f_f (asin, -1.0, -M_PI_2l),
1511     END_DATA (asin_tonearest)
1512   };
1513
1514 static void
1515 asin_test_tonearest (void)
1516 {
1517   errno = 0;
1518   FUNC(asin) (0);
1519   if (errno == ENOSYS)
1520     /* Function not implemented.  */
1521     return;
1522
1523   START (asin_tonearest);
1524   RUN_TEST_LOOP_f_f (asin, asin_tonearest_test_data, FE_TONEAREST);
1525   END (asin_tonearest);
1526 }
1527
1528
1529 static const struct test_f_f_data asin_towardzero_test_data[] =
1530   {
1531     START_DATA (asin_towardzero),
1532     TEST_f_f (asin, 0, 0),
1533     TEST_f_f (asin, minus_zero, minus_zero),
1534     TEST_f_f (asin, 0.5, M_PI_6l),
1535     TEST_f_f (asin, -0.5, -M_PI_6l),
1536     TEST_f_f (asin, 1.0, M_PI_2l),
1537     TEST_f_f (asin, -1.0, -M_PI_2l),
1538     END_DATA (asin_towardzero)
1539   };
1540
1541 static void
1542 asin_test_towardzero (void)
1543 {
1544   errno = 0;
1545   FUNC(asin) (0);
1546   if (errno == ENOSYS)
1547     /* Function not implemented.  */
1548     return;
1549
1550   START (asin_towardzero);
1551   RUN_TEST_LOOP_f_f (asin, asin_towardzero_test_data, FE_TOWARDZERO);
1552   END (asin_towardzero);
1553 }
1554
1555
1556 static const struct test_f_f_data asin_downward_test_data[] =
1557   {
1558     START_DATA (asin_downward),
1559     TEST_f_f (asin, 0, 0),
1560     TEST_f_f (asin, minus_zero, minus_zero),
1561     TEST_f_f (asin, 0.5, M_PI_6l),
1562     TEST_f_f (asin, -0.5, -M_PI_6l),
1563     TEST_f_f (asin, 1.0, M_PI_2l),
1564     TEST_f_f (asin, -1.0, -M_PI_2l),
1565     END_DATA (asin_downward)
1566   };
1567
1568 static void
1569 asin_test_downward (void)
1570 {
1571   errno = 0;
1572   FUNC(asin) (0);
1573   if (errno == ENOSYS)
1574     /* Function not implemented.  */
1575     return;
1576
1577   START (asin_downward);
1578   RUN_TEST_LOOP_f_f (asin, asin_downward_test_data, FE_DOWNWARD);
1579   END (asin_downward);
1580 }
1581
1582
1583 static const struct test_f_f_data asin_upward_test_data[] =
1584   {
1585     START_DATA (asin_upward),
1586     TEST_f_f (asin, 0, 0),
1587     TEST_f_f (asin, minus_zero, minus_zero),
1588     TEST_f_f (asin, 0.5, M_PI_6l),
1589     TEST_f_f (asin, -0.5, -M_PI_6l),
1590     TEST_f_f (asin, 1.0, M_PI_2l),
1591     TEST_f_f (asin, -1.0, -M_PI_2l),
1592     END_DATA (asin_upward)
1593   };
1594
1595 static void
1596 asin_test_upward (void)
1597 {
1598   errno = 0;
1599   FUNC(asin) (0);
1600   if (errno == ENOSYS)
1601     /* Function not implemented.  */
1602     return;
1603
1604   START (asin_upward);
1605   RUN_TEST_LOOP_f_f (asin, asin_upward_test_data, FE_UPWARD);
1606   END (asin_upward);
1607 }
1608
1609 static const struct test_f_f_data asinh_test_data[] =
1610   {
1611     START_DATA (asinh),
1612     TEST_f_f (asinh, 0, 0),
1613     TEST_f_f (asinh, minus_zero, minus_zero),
1614 #ifndef TEST_INLINE
1615     TEST_f_f (asinh, plus_infty, plus_infty),
1616     TEST_f_f (asinh, minus_infty, minus_infty),
1617 #endif
1618     TEST_f_f (asinh, qnan_value, qnan_value),
1619     TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L),
1620     END_DATA (asinh)
1621   };
1622
1623 static void
1624 asinh_test (void)
1625 {
1626   errno = 0;
1627   FUNC(asinh) (0.7L);
1628   if (errno == ENOSYS)
1629     /* Function not implemented.  */
1630     return;
1631
1632   START (asinh);
1633   RUN_TEST_LOOP_f_f (asinh, asinh_test_data, );
1634   END (asinh);
1635 }
1636
1637 static const struct test_f_f_data atan_test_data[] =
1638   {
1639     START_DATA (atan),
1640     TEST_f_f (atan, 0, 0),
1641     TEST_f_f (atan, minus_zero, minus_zero),
1642
1643     TEST_f_f (atan, plus_infty, M_PI_2l),
1644     TEST_f_f (atan, minus_infty, -M_PI_2l),
1645     TEST_f_f (atan, qnan_value, qnan_value),
1646     TEST_f_f (atan, max_value, M_PI_2l),
1647     TEST_f_f (atan, -max_value, -M_PI_2l),
1648
1649     TEST_f_f (atan, 1, M_PI_4l),
1650     TEST_f_f (atan, -1, -M_PI_4l),
1651
1652     TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L),
1653
1654     TEST_f_f (atan, 0x1p-100L, 0x1p-100L),
1655 #ifndef TEST_FLOAT
1656     TEST_f_f (atan, 0x1p-600L, 0x1p-600L),
1657 #endif
1658 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1659     TEST_f_f (atan, 0x1p-10000L, 0x1p-10000L),
1660 #endif
1661     END_DATA (atan)
1662   };
1663
1664 static void
1665 atan_test (void)
1666 {
1667   errno = 0;
1668   FUNC(atan) (0);
1669   if (errno == ENOSYS)
1670     /* Function not implemented.  */
1671     return;
1672
1673   START (atan);
1674   RUN_TEST_LOOP_f_f (atan, atan_test_data, );
1675   END (atan);
1676 }
1677
1678
1679
1680 static const struct test_f_f_data atanh_test_data[] =
1681   {
1682     START_DATA (atanh),
1683     TEST_f_f (atanh, 0, 0),
1684     TEST_f_f (atanh, minus_zero, minus_zero),
1685
1686     TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1687     TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1688     TEST_f_f (atanh, qnan_value, qnan_value),
1689
1690     /* atanh (x) == qNaN plus invalid exception if |x| > 1.  */
1691     TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION),
1692     TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION),
1693     TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION),
1694     TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION),
1695
1696     TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L),
1697     END_DATA (atanh)
1698   };
1699
1700 static void
1701 atanh_test (void)
1702 {
1703   errno = 0;
1704   FUNC(atanh) (0.7L);
1705   if (errno == ENOSYS)
1706     /* Function not implemented.  */
1707     return;
1708
1709   START (atanh);
1710   RUN_TEST_LOOP_f_f (atanh, atanh_test_data, );
1711   END (atanh);
1712 }
1713
1714 static const struct test_ff_f_data atan2_test_data[] =
1715   {
1716     START_DATA (atan2),
1717     /* atan2 (0,x) == 0 for x > 0.  */
1718     TEST_ff_f (atan2, 0, 1, 0),
1719
1720     /* atan2 (-0,x) == -0 for x > 0.  */
1721     TEST_ff_f (atan2, minus_zero, 1, minus_zero),
1722
1723     TEST_ff_f (atan2, 0, 0, 0),
1724     TEST_ff_f (atan2, minus_zero, 0, minus_zero),
1725
1726     /* atan2 (+0,x) == +pi for x < 0.  */
1727     TEST_ff_f (atan2, 0, -1, M_PIl),
1728
1729     /* atan2 (-0,x) == -pi for x < 0.  */
1730     TEST_ff_f (atan2, minus_zero, -1, -M_PIl),
1731
1732     TEST_ff_f (atan2, 0, minus_zero, M_PIl),
1733     TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl),
1734
1735     /* atan2 (y,+0) == pi/2 for y > 0.  */
1736     TEST_ff_f (atan2, 1, 0, M_PI_2l),
1737
1738     /* atan2 (y,-0) == pi/2 for y > 0.  */
1739     TEST_ff_f (atan2, 1, minus_zero, M_PI_2l),
1740
1741     /* atan2 (y,+0) == -pi/2 for y < 0.  */
1742     TEST_ff_f (atan2, -1, 0, -M_PI_2l),
1743
1744     /* atan2 (y,-0) == -pi/2 for y < 0.  */
1745     TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l),
1746
1747     /* atan2 (y,inf) == +0 for finite y > 0.  */
1748     TEST_ff_f (atan2, 1, plus_infty, 0),
1749
1750     /* atan2 (y,inf) == -0 for finite y < 0.  */
1751     TEST_ff_f (atan2, -1, plus_infty, minus_zero),
1752
1753     /* atan2(+inf, x) == pi/2 for finite x.  */
1754     TEST_ff_f (atan2, plus_infty, -1, M_PI_2l),
1755
1756     /* atan2(-inf, x) == -pi/2 for finite x.  */
1757     TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l),
1758
1759     /* atan2 (y,-inf) == +pi for finite y > 0.  */
1760     TEST_ff_f (atan2, 1, minus_infty, M_PIl),
1761
1762     /* atan2 (y,-inf) == -pi for finite y < 0.  */
1763     TEST_ff_f (atan2, -1, minus_infty, -M_PIl),
1764
1765     TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l),
1766     TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l),
1767     TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l),
1768     TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l),
1769     TEST_ff_f (atan2, qnan_value, qnan_value, qnan_value),
1770
1771     TEST_ff_f (atan2, max_value, max_value, M_PI_4l),
1772
1773     TEST_ff_f (atan2, max_value, min_value, M_PI_2l),
1774     TEST_ff_f (atan2, -max_value, -min_value, -M_PI_2l),
1775
1776     TEST_ff_f (atan2, 0.75L, 1, 0.643501108793284386802809228717322638L),
1777     TEST_ff_f (atan2, -0.75L, 1.0L, -0.643501108793284386802809228717322638L),
1778     TEST_ff_f (atan2, 0.75L, -1.0L, 2.49809154479650885165983415456218025L),
1779     TEST_ff_f (atan2, -0.75L, -1.0L, -2.49809154479650885165983415456218025L),
1780     TEST_ff_f (atan2, 0.390625L, .00029L, 1.57005392693128974780151246612928941L),
1781     TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L),
1782
1783     TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L),
1784 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1785     TEST_ff_f (atan2, 0x1.00000000000001p0L, 0x1.00000000000001p0L, M_PI_4l),
1786 #endif
1787     END_DATA (atan2)
1788   };
1789
1790 static void
1791 atan2_test (void)
1792 {
1793   errno = 0;
1794   FUNC(atan2) (-0, 1);
1795   if (errno == ENOSYS)
1796     /* Function not implemented.  */
1797     return;
1798
1799   START (atan2);
1800   RUN_TEST_LOOP_ff_f (atan2, atan2_test_data, );
1801   END (atan2);
1802 }
1803
1804 static const struct test_c_f_data cabs_test_data[] =
1805   {
1806     START_DATA (cabs);
1807     /* cabs (x + iy) is specified as hypot (x,y) */
1808
1809     /* cabs (+inf + i x) == +inf.  */
1810     TEST_c_f (cabs, plus_infty, 1.0, plus_infty),
1811     /* cabs (-inf + i x) == +inf.  */
1812     TEST_c_f (cabs, minus_infty, 1.0, plus_infty),
1813
1814     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1815     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1816
1817     TEST_c_f (cabs, qnan_value, qnan_value, qnan_value),
1818
1819     /* cabs (x,y) == cabs (y,x).  */
1820     TEST_c_f (cabs, 0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1821     /* cabs (x,y) == cabs (-x,y).  */
1822     TEST_c_f (cabs, -12.390625L, 0.75L, 12.4133028598606664302388810868156657L),
1823     /* cabs (x,y) == cabs (-y,x).  */
1824     TEST_c_f (cabs, -0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1825     /* cabs (x,y) == cabs (-x,-y).  */
1826     TEST_c_f (cabs, -12.390625L, -0.75L, 12.4133028598606664302388810868156657L),
1827     /* cabs (x,y) == cabs (-y,-x).  */
1828     TEST_c_f (cabs, -0.75L, -12.390625L, 12.4133028598606664302388810868156657L),
1829     /* cabs (x,0) == fabs (x).  */
1830     TEST_c_f (cabs, -0.75L, 0, 0.75L),
1831     TEST_c_f (cabs, 0.75L, 0, 0.75L),
1832     TEST_c_f (cabs, -1.0L, 0, 1.0L),
1833     TEST_c_f (cabs, 1.0L, 0, 1.0L),
1834     TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L),
1835     TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L),
1836
1837     TEST_c_f (cabs, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
1838     END_DATA (cabs);
1839   };
1840
1841 static void
1842 cabs_test (void)
1843 {
1844   errno = 0;
1845   FUNC(cabs) (BUILD_COMPLEX (0.7L, 12.4L));
1846   if (errno == ENOSYS)
1847     /* Function not implemented.  */
1848     return;
1849
1850   START (cabs);
1851   RUN_TEST_LOOP_c_f (cabs, cabs_test_data, );
1852   END (cabs);
1853 }
1854
1855
1856 static const struct test_c_c_data cacos_test_data[] =
1857   {
1858     START_DATA (cacos),
1859     TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero),
1860     TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero),
1861     TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0),
1862     TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0),
1863
1864     TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty),
1865     TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty),
1866
1867     TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty),
1868     TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty),
1869
1870     TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty),
1871     TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty),
1872     TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty),
1873     TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty),
1874     TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty),
1875     TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty),
1876
1877     TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty),
1878     TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty),
1879     TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty),
1880     TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty),
1881
1882     TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty),
1883     TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty),
1884     TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty),
1885     TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty),
1886
1887     TEST_c_c (cacos, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1888     TEST_c_c (cacos, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1889
1890     TEST_c_c (cacos, 0, qnan_value, M_PI_2l, qnan_value),
1891     TEST_c_c (cacos, minus_zero, qnan_value, M_PI_2l, qnan_value),
1892
1893     TEST_c_c (cacos, qnan_value, plus_infty, qnan_value, minus_infty),
1894     TEST_c_c (cacos, qnan_value, minus_infty, qnan_value, plus_infty),
1895
1896     TEST_c_c (cacos, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1897     TEST_c_c (cacos, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1898
1899     TEST_c_c (cacos, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1900     TEST_c_c (cacos, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1901
1902     TEST_c_c (cacos, qnan_value, qnan_value, qnan_value, qnan_value),
1903
1904     TEST_c_c (cacos, plus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1905     TEST_c_c (cacos, minus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1906     TEST_c_c (cacos, plus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1907     TEST_c_c (cacos, minus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1908     TEST_c_c (cacos, plus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1909     TEST_c_c (cacos, minus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1910     TEST_c_c (cacos, plus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1911     TEST_c_c (cacos, minus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1912     TEST_c_c (cacos, plus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1913     TEST_c_c (cacos, minus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1914     TEST_c_c (cacos, plus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1915     TEST_c_c (cacos, minus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1916
1917     TEST_c_c (cacos, -1.5L, plus_zero, M_PIl, -0.9624236501192068949955178268487368462704L),
1918     TEST_c_c (cacos, -1.5L, minus_zero, M_PIl, 0.9624236501192068949955178268487368462704L),
1919     TEST_c_c (cacos, -1.0L, plus_zero, M_PIl, minus_zero),
1920     TEST_c_c (cacos, -1.0L, minus_zero, M_PIl, plus_zero),
1921     TEST_c_c (cacos, -0.5L, plus_zero, 2.094395102393195492308428922186335256131L, minus_zero),
1922     TEST_c_c (cacos, -0.5L, minus_zero, 2.094395102393195492308428922186335256131L, plus_zero),
1923     TEST_c_c (cacos, 0.5L, plus_zero, 1.047197551196597746154214461093167628066L, minus_zero),
1924     TEST_c_c (cacos, 0.5L, minus_zero, 1.047197551196597746154214461093167628066L, plus_zero),
1925     TEST_c_c (cacos, 1.0L, plus_zero, plus_zero, minus_zero),
1926     TEST_c_c (cacos, 1.0L, minus_zero, plus_zero, plus_zero),
1927     TEST_c_c (cacos, 1.5L, plus_zero, plus_zero, -0.9624236501192068949955178268487368462704L),
1928     TEST_c_c (cacos, 1.5L, minus_zero, plus_zero, 0.9624236501192068949955178268487368462704L),
1929
1930     TEST_c_c (cacos, 0x1p50L, 1.0L, 8.881784197001252323389053344727730248720e-16L, -3.535050620855721078027883819436720218708e1L),
1931     TEST_c_c (cacos, 0x1p50L, -1.0L, 8.881784197001252323389053344727730248720e-16L, 3.535050620855721078027883819436720218708e1L),
1932     TEST_c_c (cacos, -0x1p50L, 1.0L, 3.141592653589792350284223683154270545292L, -3.535050620855721078027883819436720218708e1L),
1933     TEST_c_c (cacos, -0x1p50L, -1.0L, 3.141592653589792350284223683154270545292L, 3.535050620855721078027883819436720218708e1L),
1934     TEST_c_c (cacos, 1.0L, 0x1p50L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436759661753e1L),
1935     TEST_c_c (cacos, -1.0L, 0x1p50L, 1.570796326794897507409741391764983781004L, -3.535050620855721078027883819436759661753e1L),
1936     TEST_c_c (cacos, 1.0L, -0x1p50L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436759661753e1L),
1937     TEST_c_c (cacos, -1.0L, -0x1p50L, 1.570796326794897507409741391764983781004L, 3.535050620855721078027883819436759661753e1L),
1938 #ifndef TEST_FLOAT
1939     TEST_c_c (cacos, 0x1p500L, 1.0L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
1940     TEST_c_c (cacos, 0x1p500L, -1.0L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
1941     TEST_c_c (cacos, -0x1p500L, 1.0L, 3.141592653589793238462643383279502884197L, -3.472667374605326000180332928505464606058e2L),
1942     TEST_c_c (cacos, -0x1p500L, -1.0L, 3.141592653589793238462643383279502884197L, 3.472667374605326000180332928505464606058e2L),
1943     TEST_c_c (cacos, 1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1944     TEST_c_c (cacos, -1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1945     TEST_c_c (cacos, 1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1946     TEST_c_c (cacos, -1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1947 #endif
1948 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1949     TEST_c_c (cacos, 0x1p5000L, 1.0L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
1950     TEST_c_c (cacos, 0x1p5000L, -1.0L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
1951     TEST_c_c (cacos, -0x1p5000L, 1.0L, 3.141592653589793238462643383279502884197L, -3.466429049980286492395577839412341016946e3L),
1952     TEST_c_c (cacos, -0x1p5000L, -1.0L, 3.141592653589793238462643383279502884197L, 3.466429049980286492395577839412341016946e3L),
1953     TEST_c_c (cacos, 1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1954     TEST_c_c (cacos, -1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1955     TEST_c_c (cacos, 1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1956     TEST_c_c (cacos, -1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1957 #endif
1958
1959     TEST_c_c (cacos, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, -8.973081118419833726837456344608533993585e1L),
1960 #ifndef TEST_FLOAT
1961     TEST_c_c (cacos, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, -7.107906849659093345062145442726115449315e2L),
1962 #endif
1963 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1964     TEST_c_c (cacos, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, -1.135753137836666928715489992987020363057e4L),
1965 #endif
1966
1967     TEST_c_c (cacos, 0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442097L, -1.194763217287109304111930828519090523536L),
1968     TEST_c_c (cacos, 0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442097L, 1.194763217287109304111930828519090523536L),
1969     TEST_c_c (cacos, -0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442100L, -1.194763217287109304111930828519090523536L),
1970     TEST_c_c (cacos, -0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442100L, 1.194763217287109304111930828519090523536L),
1971     TEST_c_c (cacos, 1.5L, 0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1972     TEST_c_c (cacos, -1.5L, 0x1.fp-129L, 3.141592653589793238462643383279502884195L, -9.624236501192068949955178268487368462704e-1L),
1973     TEST_c_c (cacos, 1.5L, -0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1974     TEST_c_c (cacos, -1.5L, -0x1.fp-129L, 3.141592653589793238462643383279502884195L, 9.624236501192068949955178268487368462704e-1L),
1975 #ifndef TEST_FLOAT
1976     TEST_c_c (cacos, 0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1977     TEST_c_c (cacos, 0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1978     TEST_c_c (cacos, -0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1979     TEST_c_c (cacos, -0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1980     TEST_c_c (cacos, 1.5L, 0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1981     TEST_c_c (cacos, -1.5L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
1982     TEST_c_c (cacos, 1.5L, -0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1983     TEST_c_c (cacos, -1.5L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
1984 #endif
1985 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1986     TEST_c_c (cacos, 0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1987     TEST_c_c (cacos, 0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1988     TEST_c_c (cacos, -0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1989     TEST_c_c (cacos, -0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1990     TEST_c_c (cacos, 1.5L, 0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
1991     TEST_c_c (cacos, -1.5L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
1992     TEST_c_c (cacos, 1.5L, -0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
1993     TEST_c_c (cacos, -1.5L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
1994 #endif
1995
1996     TEST_c_c (cacos, 0.5L, 1.0L, 1.221357263937683325603909865564381489366L, -9.261330313501824245501244453057873152694e-1L),
1997     TEST_c_c (cacos, 0.5L, -1.0L, 1.221357263937683325603909865564381489366L, 9.261330313501824245501244453057873152694e-1L),
1998     TEST_c_c (cacos, -0.5L, 1.0L, 1.920235389652109912858733517715121394831L, -9.261330313501824245501244453057873152694e-1L),
1999     TEST_c_c (cacos, -0.5L, -1.0L, 1.920235389652109912858733517715121394831L, 9.261330313501824245501244453057873152694e-1L),
2000     TEST_c_c (cacos, 1.0L, 0.5L, 6.748888455860063801646649673121744318756e-1L, -7.328576759736452608886724437653071523305e-1L),
2001     TEST_c_c (cacos, -1.0L, 0.5L, 2.466703808003786858297978415967328452322L, -7.328576759736452608886724437653071523305e-1L),
2002     TEST_c_c (cacos, 1.0L, -0.5L, 6.748888455860063801646649673121744318756e-1L, 7.328576759736452608886724437653071523305e-1L),
2003     TEST_c_c (cacos, -1.0L, -0.5L, 2.466703808003786858297978415967328452322L, 7.328576759736452608886724437653071523305e-1L),
2004     TEST_c_c (cacos, 0.25L, 1.0L, 1.394493894017929688812643125003661339452L, -8.924633639033482359562124741744951972772e-1L),
2005     TEST_c_c (cacos, 0.25L, -1.0L, 1.394493894017929688812643125003661339452L, 8.924633639033482359562124741744951972772e-1L),
2006     TEST_c_c (cacos, -0.25L, 1.0L, 1.747098759571863549650000258275841544745L, -8.924633639033482359562124741744951972772e-1L),
2007     TEST_c_c (cacos, -0.25L, -1.0L, 1.747098759571863549650000258275841544745L, 8.924633639033482359562124741744951972772e-1L),
2008     TEST_c_c (cacos, 1.0L, 0.25L, 4.890443302710802929202843732146540079124e-1L, -5.097911466811016354623559941115413499164e-1L),
2009     TEST_c_c (cacos, -1.0L, 0.25L, 2.652548323318712945542359010064848876285L, -5.097911466811016354623559941115413499164e-1L),
2010     TEST_c_c (cacos, 1.0L, -0.25L, 4.890443302710802929202843732146540079124e-1L, 5.097911466811016354623559941115413499164e-1L),
2011     TEST_c_c (cacos, -1.0L, -0.25L, 2.652548323318712945542359010064848876285L, 5.097911466811016354623559941115413499164e-1L),
2012     TEST_c_c (cacos, 0x1.fp-10L, 1.0L, 1.569458417435338878318763342108699202986L, -8.813742198809567991336704287826445879025e-1L),
2013     TEST_c_c (cacos, 0x1.fp-10L, -1.0L, 1.569458417435338878318763342108699202986L, 8.813742198809567991336704287826445879025e-1L),
2014     TEST_c_c (cacos, -0x1.fp-10L, 1.0L, 1.572134236154454360143880041170803681211L, -8.813742198809567991336704287826445879025e-1L),
2015     TEST_c_c (cacos, -0x1.fp-10L, -1.0L, 1.572134236154454360143880041170803681211L, 8.813742198809567991336704287826445879025e-1L),
2016     TEST_c_c (cacos, 1.0L, 0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, -4.350501469856803800217957402220976497152e-2L),
2017     TEST_c_c (cacos, -1.0L, 0x1.fp-10L, 3.098101355958774410750062883737683164607L, -4.350501469856803800217957402220976497152e-2L),
2018     TEST_c_c (cacos, 1.0L, -0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, 4.350501469856803800217957402220976497152e-2L),
2019     TEST_c_c (cacos, -1.0L, -0x1.fp-10L, 3.098101355958774410750062883737683164607L, 4.350501469856803800217957402220976497152e-2L),
2020     TEST_c_c (cacos, 0x1.fp-30L, 1.0L, 1.570796325518966635014803151387033957091L, -8.813735870195430258081932989769495326854e-1L),
2021     TEST_c_c (cacos, 0x1.fp-30L, -1.0L, 1.570796325518966635014803151387033957091L, 8.813735870195430258081932989769495326854e-1L),
2022     TEST_c_c (cacos, -0x1.fp-30L, 1.0L, 1.570796328070826603447840231892468927106L, -8.813735870195430258081932989769495326854e-1L),
2023     TEST_c_c (cacos, -0x1.fp-30L, -1.0L, 1.570796328070826603447840231892468927106L, 8.813735870195430258081932989769495326854e-1L),
2024     TEST_c_c (cacos, 1.0L, 0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, -4.247867098745151888768727039216644758847e-5L),
2025     TEST_c_c (cacos, -1.0L, 0x1.fp-30L, 3.141550174918818561961484385371624132331L, -4.247867098745151888768727039216644758847e-5L),
2026     TEST_c_c (cacos, 1.0L, -0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, 4.247867098745151888768727039216644758847e-5L),
2027     TEST_c_c (cacos, -1.0L, -0x1.fp-30L, 3.141550174918818561961484385371624132331L, 4.247867098745151888768727039216644758847e-5L),
2028     TEST_c_c (cacos, 0x1.fp-100L, 1.0L, 1.570796326794896619231321691638670687364L, -8.813735870195430252326093249797923090282e-1L),
2029     TEST_c_c (cacos, 0x1.fp-100L, -1.0L, 1.570796326794896619231321691638670687364L, 8.813735870195430252326093249797923090282e-1L),
2030     TEST_c_c (cacos, -0x1.fp-100L, 1.0L, 1.570796326794896619231321691640832196834L, -8.813735870195430252326093249797923090282e-1L),
2031     TEST_c_c (cacos, -0x1.fp-100L, -1.0L, 1.570796326794896619231321691640832196834L, 8.813735870195430252326093249797923090282e-1L),
2032     TEST_c_c (cacos, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, -1.236292038260260888664514866457202186027e-15L),
2033     TEST_c_c (cacos, -1.0L, 0x1.fp-100L, 3.141592653589792002170605123018614219682L, -1.236292038260260888664514866457202186027e-15L),
2034     TEST_c_c (cacos, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, 1.236292038260260888664514866457202186027e-15L),
2035     TEST_c_c (cacos, -1.0L, -0x1.fp-100L, 3.141592653589792002170605123018614219682L, 1.236292038260260888664514866457202186027e-15L),
2036     TEST_c_c (cacos, 0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442097L, -8.813735870195430252326093249797923090282e-1L),
2037     TEST_c_c (cacos, 0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442097L, 8.813735870195430252326093249797923090282e-1L),
2038     TEST_c_c (cacos, -0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442101L, -8.813735870195430252326093249797923090282e-1L),
2039     TEST_c_c (cacos, -0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442101L, 8.813735870195430252326093249797923090282e-1L),
2040     TEST_c_c (cacos, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, -5.335635276982233498398987585285818977933e-20L),
2041     TEST_c_c (cacos, -1.0L, 0x1.fp-129L, 3.141592653589793238409287030509680549213L, -5.335635276982233498398987585285818977933e-20L),
2042     TEST_c_c (cacos, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, 5.335635276982233498398987585285818977933e-20L),
2043     TEST_c_c (cacos, -1.0L, -0x1.fp-129L, 3.141592653589793238409287030509680549213L, 5.335635276982233498398987585285818977933e-20L),
2044 #ifndef TEST_FLOAT
2045     TEST_c_c (cacos, 0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2046     TEST_c_c (cacos, 0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2047     TEST_c_c (cacos, -0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2048     TEST_c_c (cacos, -0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2049     TEST_c_c (cacos, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
2050     TEST_c_c (cacos, -1.0L, 0x1.fp-1000L, 3.141592653589793238462643383279502884197L, -4.252291453851660175550490409247739011867e-151L),
2051     TEST_c_c (cacos, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
2052     TEST_c_c (cacos, -1.0L, -0x1.fp-1000L, 3.141592653589793238462643383279502884197L, 4.252291453851660175550490409247739011867e-151L),
2053     TEST_c_c (cacos, 0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2054     TEST_c_c (cacos, 0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2055     TEST_c_c (cacos, -0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2056     TEST_c_c (cacos, -0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2057     TEST_c_c (cacos, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
2058     TEST_c_c (cacos, -1.0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -7.340879205566679497036857179189356754017e-155L),
2059     TEST_c_c (cacos, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
2060     TEST_c_c (cacos, -1.0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 7.340879205566679497036857179189356754017e-155L),
2061 #endif
2062 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2063     TEST_c_c (cacos, 0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2064     TEST_c_c (cacos, 0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2065     TEST_c_c (cacos, -0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2066     TEST_c_c (cacos, -0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2067     TEST_c_c (cacos, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
2068     TEST_c_c (cacos, -1.0L, 0x1.fp-10000L, 3.141592653589793238462643383279502884197L, -9.854680208706673586644342922051388714633e-1506L),
2069     TEST_c_c (cacos, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
2070     TEST_c_c (cacos, -1.0L, -0x1.fp-10000L, 3.141592653589793238462643383279502884197L, 9.854680208706673586644342922051388714633e-1506L),
2071     TEST_c_c (cacos, 0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2072     TEST_c_c (cacos, 0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2073     TEST_c_c (cacos, -0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2074     TEST_c_c (cacos, -0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2075     TEST_c_c (cacos, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
2076     TEST_c_c (cacos, -1.0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.023632056840860275214893047597614177639e-2467L),
2077     TEST_c_c (cacos, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
2078     TEST_c_c (cacos, -1.0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.023632056840860275214893047597614177639e-2467L),
2079 #endif
2080
2081     TEST_c_c (cacos, 0x1p-23L, 0x1.000002p0L, 1.570796242501204621739026081991856762292L, -8.813736713132400470205730751186547909968e-1L),
2082     TEST_c_c (cacos, 0x1p-23L, -0x1.000002p0L, 1.570796242501204621739026081991856762292L, 8.813736713132400470205730751186547909968e-1L),
2083     TEST_c_c (cacos, -0x1p-23L, 0x1.000002p0L, 1.570796411088588616723617301287646121905L, -8.813736713132400470205730751186547909968e-1L),
2084     TEST_c_c (cacos, -0x1p-23L, -0x1.000002p0L, 1.570796411088588616723617301287646121905L, 8.813736713132400470205730751186547909968e-1L),
2085     TEST_c_c (cacos, 0x1.000002p0L, 0x1p-23L, 2.222118384408546368406374049167636760903e-4L, -5.364668491573609633134147164031476452679e-4L),
2086     TEST_c_c (cacos, -0x1.000002p0L, 0x1p-23L, 3.141370441751352383825802745874586120521L, -5.364668491573609633134147164031476452679e-4L),
2087     TEST_c_c (cacos, 0x1.000002p0L, -0x1p-23L, 2.222118384408546368406374049167636760903e-4L, 5.364668491573609633134147164031476452679e-4L),
2088     TEST_c_c (cacos, -0x1.000002p0L, -0x1p-23L, 3.141370441751352383825802745874586120521L, 5.364668491573609633134147164031476452679e-4L),
2089     TEST_c_c (cacos, 0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442097L, -8.813736713132375348727889167749389235161e-1L),
2090     TEST_c_c (cacos, 0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442097L, 8.813736713132375348727889167749389235161e-1L),
2091     TEST_c_c (cacos, -0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442101L, -8.813736713132375348727889167749389235161e-1L),
2092     TEST_c_c (cacos, -0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442101L, 8.813736713132375348727889167749389235161e-1L),
2093     TEST_c_c (cacos, 0x1.000002p0L, 0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, -4.882812451493617206486388134172712975070e-4L),
2094     TEST_c_c (cacos, -0x1.000002p0L, 0x1.fp-129L, 3.141592653589793238462643383279502878367L, -4.882812451493617206486388134172712975070e-4L),
2095     TEST_c_c (cacos, 0x1.000002p0L, -0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, 4.882812451493617206486388134172712975070e-4L),
2096     TEST_c_c (cacos, -0x1.000002p0L, -0x1.fp-129L, 3.141592653589793238462643383279502878367L, 4.882812451493617206486388134172712975070e-4L),
2097     TEST_c_c (cacos, 0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
2098     TEST_c_c (cacos, 0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
2099     TEST_c_c (cacos, -0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
2100     TEST_c_c (cacos, -0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
2101     TEST_c_c (cacos, 0x1.000002p0L, 0.0L, 0.0L, -4.882812451493617206486388134172712975070e-4L),
2102     TEST_c_c (cacos, -0x1.000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.882812451493617206486388134172712975070e-4L),
2103     TEST_c_c (cacos, 0x1.000002p0L, -0.0L, 0.0L, 4.882812451493617206486388134172712975070e-4L),
2104     TEST_c_c (cacos, -0x1.000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.882812451493617206486388134172712975070e-4L),
2105 #ifndef TEST_FLOAT
2106     TEST_c_c (cacos, 0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, -8.813735870195431822418551933572982483664e-1L),
2107     TEST_c_c (cacos, 0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, 8.813735870195431822418551933572982483664e-1L),
2108     TEST_c_c (cacos, -0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, -8.813735870195431822418551933572982483664e-1L),
2109     TEST_c_c (cacos, -0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, 8.813735870195431822418551933572982483664e-1L),
2110     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1p-52L, 9.590301705980041385828904092662391018164e-9L, -2.315303644582684770975188768022139415020e-8L),
2111     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1p-52L, 3.141592643999491532482601997450598791535L, -2.315303644582684770975188768022139415020e-8L),
2112     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1p-52L, 9.590301705980041385828904092662391018164e-9L, 2.315303644582684770975188768022139415020e-8L),
2113     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1p-52L, 3.141592643999491532482601997450598791535L, 2.315303644582684770975188768022139415020e-8L),
2114     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2115     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2116     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2117     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2118     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, -2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2119     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
2120     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, 2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2121     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
2122     TEST_c_c (cacos, 0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2123     TEST_c_c (cacos, 0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2124     TEST_c_c (cacos, -0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2125     TEST_c_c (cacos, -0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2126     TEST_c_c (cacos, 0x1.0000000000001p0L, 0.0L, 0.0L, -2.107342425544701550354780375182800088393e-8L),
2127     TEST_c_c (cacos, -0x1.0000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
2128     TEST_c_c (cacos, 0x1.0000000000001p0L, -0.0L, 0.0L, 2.107342425544701550354780375182800088393e-8L),
2129     TEST_c_c (cacos, -0x1.0000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
2130 #endif
2131 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2132     TEST_c_c (cacos, 0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, -8.813735870195430253092739958139610131001e-1L),
2133     TEST_c_c (cacos, 0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, 8.813735870195430253092739958139610131001e-1L),
2134     TEST_c_c (cacos, -0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, -8.813735870195430253092739958139610131001e-1L),
2135     TEST_c_c (cacos, -0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, 8.813735870195430253092739958139610131001e-1L),
2136     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1p-63L, 2.119177303101063432592523199680782317447e-10L, -5.116146586219826555037807251857670783420e-10L),
2137     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1p-63L, 3.141592653377875508152537040020250564229L, -5.116146586219826555037807251857670783420e-10L),
2138     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1p-63L, 2.119177303101063432592523199680782317447e-10L, 5.116146586219826555037807251857670783420e-10L),
2139     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1p-63L, 3.141592653377875508152537040020250564229L, 5.116146586219826555037807251857670783420e-10L),
2140 # if LDBL_MIN_EXP <= -16381
2141     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2142     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2143     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2144     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2145     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, -4.656612873077392578082927418388212703712e-10L),
2146     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2147     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, 4.656612873077392578082927418388212703712e-10L),
2148     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2149 # endif
2150     TEST_c_c (cacos, 0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2151     TEST_c_c (cacos, 0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2152     TEST_c_c (cacos, -0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2153     TEST_c_c (cacos, -0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2154     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0.0L, 0.0L, -4.656612873077392578082927418388212703712e-10L),
2155     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2156     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0.0L, 0.0L, 4.656612873077392578082927418388212703712e-10L),
2157     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2158 #endif
2159 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2160     TEST_c_c (cacos, 0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, -8.813735870195430252326093249798097405561e-1L),
2161     TEST_c_c (cacos, 0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, 8.813735870195430252326093249798097405561e-1L),
2162     TEST_c_c (cacos, -0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, -8.813735870195430252326093249798097405561e-1L),
2163     TEST_c_c (cacos, -0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, 8.813735870195430252326093249798097405561e-1L),
2164     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1p-106L, 5.394221422390606848017034778914096659726e-17L, -2.285028863093221674154232933662774454211e-16L),
2165     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1p-106L, 3.141592653589793184520429159373434404027L, -2.285028863093221674154232933662774454211e-16L),
2166     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1p-106L, 5.394221422390606848017034778914096659726e-17L, 2.285028863093221674154232933662774454211e-16L),
2167     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1p-106L, 3.141592653589793184520429159373434404027L, 2.285028863093221674154232933662774454211e-16L),
2168     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2169     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2170     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2171     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2172     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, -2.220446049250313080847263336181636063482e-16L),
2173     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2174     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, 2.220446049250313080847263336181636063482e-16L),
2175     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2176     TEST_c_c (cacos, 0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2177     TEST_c_c (cacos, 0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2178     TEST_c_c (cacos, -0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2179     TEST_c_c (cacos, -0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2180     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0.0L, 0.0L, -2.220446049250313080847263336181636063482e-16L),
2181     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2182     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0.0L, 0.0L, 2.220446049250313080847263336181636063482e-16L),
2183     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2184 #endif
2185 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2186     TEST_c_c (cacos, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, -8.813735870195430252326093249797924452120e-1L),
2187     TEST_c_c (cacos, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, 8.813735870195430252326093249797924452120e-1L),
2188     TEST_c_c (cacos, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, -8.813735870195430252326093249797924452120e-1L),
2189     TEST_c_c (cacos, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, 8.813735870195430252326093249797924452120e-1L),
2190     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 4.767863183742677481693563511435642755521e-18L, -2.019699255375255198156433710951064632386e-17L),
2191     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 3.141592653589793233694780199536825402504L, -2.019699255375255198156433710951064632386e-17L),
2192     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 4.767863183742677481693563511435642755521e-18L, 2.019699255375255198156433710951064632386e-17L),
2193     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 3.141592653589793233694780199536825402504L, 2.019699255375255198156433710951064632386e-17L),
2194     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2195     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2196     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2197     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2198     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, -1.962615573354718824241727964954454332780e-17L),
2199     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2200     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, 1.962615573354718824241727964954454332780e-17L),
2201     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2202     TEST_c_c (cacos, 0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2203     TEST_c_c (cacos, 0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2204     TEST_c_c (cacos, -0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2205     TEST_c_c (cacos, -0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2206     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0.0L, 0.0L, -1.962615573354718824241727964954454332780e-17L),
2207     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2208     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0.0L, 0.0L, 1.962615573354718824241727964954454332780e-17L),
2209     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2210 #endif
2211
2212     TEST_c_c (cacos, 0x1p-23L, 0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, -8.813735448726963984495965873956465777250e-1L),
2213     TEST_c_c (cacos, 0x1p-23L, -0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, 8.813735448726963984495965873956465777250e-1L),
2214     TEST_c_c (cacos, -0x1p-23L, 0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, -8.813735448726963984495965873956465777250e-1L),
2215     TEST_c_c (cacos, -0x1p-23L, -0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, 8.813735448726963984495965873956465777250e-1L),
2216     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1p-23L, 4.391863861910487109445187743978204002614e-4L, -2.714321200917194650737217746780928423385e-4L),
2217     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1p-23L, 3.141153467203602189751698864505105063797L, -2.714321200917194650737217746780928423385e-4L),
2218     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1p-23L, 4.391863861910487109445187743978204002614e-4L, 2.714321200917194650737217746780928423385e-4L),
2219     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1p-23L, 3.141153467203602189751698864505105063797L, 2.714321200917194650737217746780928423385e-4L),
2220     TEST_c_c (cacos, 0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, -8.813735448726938863015878255140556727969e-1L),
2221     TEST_c_c (cacos, 0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, 8.813735448726938863015878255140556727969e-1L),
2222     TEST_c_c (cacos, -0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, -8.813735448726938863015878255140556727969e-1L),
2223     TEST_c_c (cacos, -0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, 8.813735448726938863015878255140556727969e-1L),
2224     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, -8.245504387859737323891843603996428534945e-36L),
2225     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1.fp-129L, 3.141247386605077034875040133796864147700L, -8.245504387859737323891843603996428534945e-36L),
2226     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, 8.245504387859737323891843603996428534945e-36L),
2227     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1.fp-129L, 3.141247386605077034875040133796864147700L, 8.245504387859737323891843603996428534945e-36L),
2228     TEST_c_c (cacos, 0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2229     TEST_c_c (cacos, 0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2230     TEST_c_c (cacos, -0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2231     TEST_c_c (cacos, -0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2232     TEST_c_c (cacos, 0x0.ffffffp0L, 0.0L, 3.452669847162035876032494826387364972849e-4L, -0.0L),
2233     TEST_c_c (cacos, -0x0.ffffffp0L, 0.0L, 3.141247386605077034875040133796864147700L, -0.0L),
2234     TEST_c_c (cacos, 0x0.ffffffp0L, -0.0L, 3.452669847162035876032494826387364972849e-4L, 0.0L),
2235     TEST_c_c (cacos, -0x0.ffffffp0L, -0.0L, 3.141247386605077034875040133796864147700L, 0.0L),
2236     TEST_c_c (cacos, 0x1p-23L, 0.5L, 1.570796220170866625230343643673321150378L, -4.812118250596059896127318386463676808798e-1L),
2237     TEST_c_c (cacos, 0x1p-23L, -0.5L, 1.570796220170866625230343643673321150378L, 4.812118250596059896127318386463676808798e-1L),
2238     TEST_c_c (cacos, -0x1p-23L, 0.5L, 1.570796433418926613232299739606181733819L, -4.812118250596059896127318386463676808798e-1L),
2239     TEST_c_c (cacos, -0x1p-23L, -0.5L, 1.570796433418926613232299739606181733819L, 4.812118250596059896127318386463676808798e-1L),
2240     TEST_c_c (cacos, 0.5L, 0x1p-23L, 1.047197551196603215914744618665204532273L, -1.376510308240943236356088341381173571841e-7L),
2241     TEST_c_c (cacos, -0.5L, 0x1p-23L, 2.094395102393190022547898764614298351924L, -1.376510308240943236356088341381173571841e-7L),
2242     TEST_c_c (cacos, 0.5L, -0x1p-23L, 1.047197551196603215914744618665204532273L, 1.376510308240943236356088341381173571841e-7L),
2243     TEST_c_c (cacos, -0.5L, -0x1p-23L, 2.094395102393190022547898764614298351924L, 1.376510308240943236356088341381173571841e-7L),
2244     TEST_c_c (cacos, 0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442096L, -4.812118250596034474977589134243684231352e-1L),
2245     TEST_c_c (cacos, 0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442096L, 4.812118250596034474977589134243684231352e-1L),
2246     TEST_c_c (cacos, -0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442101L, -4.812118250596034474977589134243684231352e-1L),
2247     TEST_c_c (cacos, -0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442101L, 4.812118250596034474977589134243684231352e-1L),
2248     TEST_c_c (cacos, 0.5L, 0x1.fp-129L, 1.047197551196597746154214461093167628066L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2249     TEST_c_c (cacos, -0.5L, 0x1.fp-129L, 2.094395102393195492308428922186335256131L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2250     TEST_c_c (cacos, 0.5L, -0x1.fp-129L, 1.047197551196597746154214461093167628066L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2251     TEST_c_c (cacos, -0.5L, -0x1.fp-129L, 2.094395102393195492308428922186335256131L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2252     TEST_c_c (cacos, 0x1p-23L, 0x1p-23L, 1.570796207585607068450636380271254316214L, -1.192092895507818146886315028596704749235e-7L),
2253     TEST_c_c (cacos, 0x1p-23L, -0x1p-23L, 1.570796207585607068450636380271254316214L, 1.192092895507818146886315028596704749235e-7L),
2254     TEST_c_c (cacos, -0x1p-23L, 0x1p-23L, 1.570796446004186170012007003008248567984L, -1.192092895507818146886315028596704749235e-7L),
2255     TEST_c_c (cacos, -0x1p-23L, -0x1p-23L, 1.570796446004186170012007003008248567984L, 1.192092895507818146886315028596704749235e-7L),
2256     TEST_c_c (cacos, 0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442096L, -1.192092895507809676556842485683592032154e-7L),
2257     TEST_c_c (cacos, 0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442096L, 1.192092895507809676556842485683592032154e-7L),
2258     TEST_c_c (cacos, -0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442101L, -1.192092895507809676556842485683592032154e-7L),
2259     TEST_c_c (cacos, -0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442101L, 1.192092895507809676556842485683592032154e-7L),
2260     TEST_c_c (cacos, 0x1p-23L, 0x1.fp-129L, 1.570796207585607068449789347324000006847L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2261     TEST_c_c (cacos, -0x1p-23L, 0x1.fp-129L, 1.570796446004186170012854035955502877351L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2262     TEST_c_c (cacos, 0x1p-23L, -0x1.fp-129L, 1.570796207585607068449789347324000006847L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2263     TEST_c_c (cacos, -0x1p-23L, -0x1.fp-129L, 1.570796446004186170012854035955502877351L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2264     TEST_c_c (cacos, 0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2265     TEST_c_c (cacos, 0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2266     TEST_c_c (cacos, -0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2267     TEST_c_c (cacos, -0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2268     TEST_c_c (cacos, 0x1p-23L, 0.0L, 1.570796207585607068449789347324000006847L, -0.0L),
2269     TEST_c_c (cacos, -0x1p-23L, 0.0L, 1.570796446004186170012854035955502877351L, -0.0L),
2270     TEST_c_c (cacos, 0x1p-23L, -0.0L, 1.570796207585607068449789347324000006847L, 0.0L),
2271     TEST_c_c (cacos, -0x1p-23L, -0.0L, 1.570796446004186170012854035955502877351L, 0.0L),
2272     TEST_c_c (cacos, 0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2273     TEST_c_c (cacos, 0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2274     TEST_c_c (cacos, -0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442101L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2275     TEST_c_c (cacos, -0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442101L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2276 #ifndef TEST_FLOAT
2277     TEST_c_c (cacos, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, -8.813735870195429467279863907910458761820e-1L),
2278     TEST_c_c (cacos, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, 8.813735870195429467279863907910458761820e-1L),
2279     TEST_c_c (cacos, -0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, -8.813735870195429467279863907910458761820e-1L),
2280     TEST_c_c (cacos, -0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, 8.813735870195429467279863907910458761820e-1L),
2281     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.895456983915074112227925127005564372844e-8L, -1.171456840272878582596796205397918831268e-8L),
2282     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1p-52L, 3.141592634635223399311902261000251614142L, -1.171456840272878582596796205397918831268e-8L),
2283     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.895456983915074112227925127005564372844e-8L, 1.171456840272878582596796205397918831268e-8L),
2284     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1p-52L, 3.141592634635223399311902261000251614142L, 1.171456840272878582596796205397918831268e-8L),
2285     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2286     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2287     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2288     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2289     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2290     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.141592638688632044614986995416067458693L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2291     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2292     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.141592638688632044614986995416067458693L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2293     TEST_c_c (cacos, 0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2294     TEST_c_c (cacos, 0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2295     TEST_c_c (cacos, -0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2296     TEST_c_c (cacos, -0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2297     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0.0L, 1.490116119384765638786343542550461592240e-8L, -0.0L),
2298     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0.0L, 3.141592638688632044614986995416067458693L, -0.0L),
2299     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0.0L, 1.490116119384765638786343542550461592240e-8L, 0.0L),
2300     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0.0L, 3.141592638688632044614986995416067458693L, 0.0L),
2301 #endif
2302     TEST_c_c (cacos, 0x1p-52L, 0.5L, 1.570796326794896420628589431857911675917L, -4.812118250596034474977589134243772428682e-1L),
2303     TEST_c_c (cacos, 0x1p-52L, -0.5L, 1.570796326794896420628589431857911675917L, 4.812118250596034474977589134243772428682e-1L),
2304     TEST_c_c (cacos, -0x1p-52L, 0.5L, 1.570796326794896817834053951421591208280L, -4.812118250596034474977589134243772428682e-1L),
2305     TEST_c_c (cacos, -0x1p-52L, -0.5L, 1.570796326794896817834053951421591208280L, 4.812118250596034474977589134243772428682e-1L),
2306     TEST_c_c (cacos, 0.5L, 0x1p-52L, 1.047197551196597746154214461093186605110L, -2.563950248511418570403591756798643804971e-16L),
2307     TEST_c_c (cacos, -0.5L, 0x1p-52L, 2.094395102393195492308428922186316279087L, -2.563950248511418570403591756798643804971e-16L),
2308     TEST_c_c (cacos, 0.5L, -0x1p-52L, 1.047197551196597746154214461093186605110L, 2.563950248511418570403591756798643804971e-16L),
2309     TEST_c_c (cacos, -0.5L, -0x1p-52L, 2.094395102393195492308428922186316279087L, 2.563950248511418570403591756798643804971e-16L),
2310 #ifndef TEST_FLOAT
2311     TEST_c_c (cacos, 0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2312     TEST_c_c (cacos, 0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2313     TEST_c_c (cacos, -0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2314     TEST_c_c (cacos, -0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2315     TEST_c_c (cacos, 0.5L, 0x1.fp-1025L, 1.047197551196597746154214461093167628066L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2316     TEST_c_c (cacos, -0.5L, 0x1.fp-1025L, 2.094395102393195492308428922186335256131L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2317     TEST_c_c (cacos, 0.5L, -0x1.fp-1025L, 1.047197551196597746154214461093167628066L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2318     TEST_c_c (cacos, -0.5L, -0x1.fp-1025L, 2.094395102393195492308428922186335256131L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2319 #endif
2320     TEST_c_c (cacos, 0x1p-52L, 0x1p-52L, 1.570796326794896397186716766608443357372L, -2.220446049250313080847263336181677117148e-16L),
2321     TEST_c_c (cacos, 0x1p-52L, -0x1p-52L, 1.570796326794896397186716766608443357372L, 2.220446049250313080847263336181677117148e-16L),
2322     TEST_c_c (cacos, -0x1p-52L, 0x1p-52L, 1.570796326794896841275926616671059526825L, -2.220446049250313080847263336181677117148e-16L),
2323     TEST_c_c (cacos, -0x1p-52L, -0x1p-52L, 1.570796326794896841275926616671059526825L, 2.220446049250313080847263336181677117148e-16L),
2324 #ifndef TEST_FLOAT
2325     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2326     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2327     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2328     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2329     TEST_c_c (cacos, 0x1p-52L, 0x1.fp-1025L, 1.570796326794896397186716766608443357372L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2330     TEST_c_c (cacos, -0x1p-52L, 0x1.fp-1025L, 1.570796326794896841275926616671059526825L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2331     TEST_c_c (cacos, 0x1p-52L, -0x1.fp-1025L, 1.570796326794896397186716766608443357372L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2332     TEST_c_c (cacos, -0x1p-52L, -0x1.fp-1025L, 1.570796326794896841275926616671059526825L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2333 #endif
2334     TEST_c_c (cacos, 0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2335     TEST_c_c (cacos, 0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2336     TEST_c_c (cacos, -0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2337     TEST_c_c (cacos, -0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2338     TEST_c_c (cacos, 0x1p-52L, 0.0L, 1.570796326794896397186716766608443357372L, -0.0L),
2339     TEST_c_c (cacos, -0x1p-52L, 0.0L, 1.570796326794896841275926616671059526825L, -0.0L),
2340     TEST_c_c (cacos, 0x1p-52L, -0.0L, 1.570796326794896397186716766608443357372L, 0.0L),
2341     TEST_c_c (cacos, -0x1p-52L, -0.0L, 1.570796326794896841275926616671059526825L, 0.0L),
2342 #ifndef TEST_FLOAT
2343     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2344     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2345     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2346     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2347 #endif
2348 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2349     TEST_c_c (cacos, 0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, -8.813735870195430251942769895627079569937e-1L),
2350     TEST_c_c (cacos, 0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, 8.813735870195430251942769895627079569937e-1L),
2351     TEST_c_c (cacos, -0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, -8.813735870195430251942769895627079569937e-1L),
2352     TEST_c_c (cacos, -0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, 8.813735870195430251942769895627079569937e-1L),
2353     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1p-63L, 4.188407771167967636741951941902992986043e-10L, -2.588578361325995866221775673638805081337e-10L),
2354     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1p-63L, 3.141592653170952461345846619605307690007L, -2.588578361325995866221775673638805081337e-10L),
2355     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1p-63L, 4.188407771167967636741951941902992986043e-10L, 2.588578361325995866221775673638805081337e-10L),
2356     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1p-63L, 3.141592653170952461345846619605307690007L, 2.588578361325995866221775673638805081337e-10L),
2357 # if LDBL_MIN_EXP <= -16381
2358     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2359     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2360     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2361     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2362     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, -2.472906068161537187835415298076415423459e-4923L),
2363     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.141592653260520984471283759942320330996L, -2.472906068161537187835415298076415423459e-4923L),
2364     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, 2.472906068161537187835415298076415423459e-4923L),
2365     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.141592653260520984471283759942320330996L, 2.472906068161537187835415298076415423459e-4923L),
2366 # endif
2367     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2368     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2369     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2370     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2371     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0.0L, 3.292722539913596233371825532007990724506e-10L, -0.0L),
2372     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0.0L, 3.141592653260520984471283759942320330996L, -0.0L),
2373     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0.0L, 3.292722539913596233371825532007990724506e-10L, 0.0L),
2374     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0.0L, 3.141592653260520984471283759942320330996L, 0.0L),
2375 #endif
2376     TEST_c_c (cacos, 0x1p-63L, 0.5L, 1.570796326794896619134347701278529840650L, -4.812118250596034474977589134243684231373e-1L),
2377     TEST_c_c (cacos, 0x1p-63L, -0.5L, 1.570796326794896619134347701278529840650L, 4.812118250596034474977589134243684231373e-1L),
2378     TEST_c_c (cacos, -0x1p-63L, 0.5L, 1.570796326794896619328295682000973043547L, -4.812118250596034474977589134243684231373e-1L),
2379     TEST_c_c (cacos, -0x1p-63L, -0.5L, 1.570796326794896619328295682000973043547L, 4.812118250596034474977589134243684231373e-1L),
2380     TEST_c_c (cacos, 0.5L, 0x1p-63L, 1.047197551196597746154214461093167628070L, -1.251928832280966098829878787499365228659e-19L),
2381     TEST_c_c (cacos, -0.5L, 0x1p-63L, 2.094395102393195492308428922186335256127L, -1.251928832280966098829878787499365228659e-19L),
2382     TEST_c_c (cacos, 0.5L, -0x1p-63L, 1.047197551196597746154214461093167628070L, 1.251928832280966098829878787499365228659e-19L),
2383     TEST_c_c (cacos, -0.5L, -0x1p-63L, 2.094395102393195492308428922186335256127L, 1.251928832280966098829878787499365228659e-19L),
2384 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2385     TEST_c_c (cacos, 0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2386     TEST_c_c (cacos, 0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2387     TEST_c_c (cacos, -0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2388     TEST_c_c (cacos, -0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2389     TEST_c_c (cacos, 0.5L, 0x1.fp-16385L, 1.047197551196597746154214461093167628066L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2390     TEST_c_c (cacos, -0.5L, 0x1.fp-16385L, 2.094395102393195492308428922186335256131L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2391     TEST_c_c (cacos, 0.5L, -0x1.fp-16385L, 1.047197551196597746154214461093167628066L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2392     TEST_c_c (cacos, -0.5L, -0x1.fp-16385L, 2.094395102393195492308428922186335256131L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2393 #endif
2394     TEST_c_c (cacos, 0x1p-63L, 0x1p-63L, 1.570796326794896619122901474391200998698L, -1.084202172485504434007452800869941711430e-19L),
2395     TEST_c_c (cacos, 0x1p-63L, -0x1p-63L, 1.570796326794896619122901474391200998698L, 1.084202172485504434007452800869941711430e-19L),
2396     TEST_c_c (cacos, -0x1p-63L, 0x1p-63L, 1.570796326794896619339741908888301885499L, -1.084202172485504434007452800869941711430e-19L),
2397     TEST_c_c (cacos, -0x1p-63L, -0x1p-63L, 1.570796326794896619339741908888301885499L, 1.084202172485504434007452800869941711430e-19L),
2398 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2399     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2400     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2401     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2402     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2403     TEST_c_c (cacos, 0x1p-63L, 0x1.fp-16385L, 1.570796326794896619122901474391200998698L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2404     TEST_c_c (cacos, -0x1p-63L, 0x1.fp-16385L, 1.570796326794896619339741908888301885499L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2405     TEST_c_c (cacos, 0x1p-63L, -0x1.fp-16385L, 1.570796326794896619122901474391200998698L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2406     TEST_c_c (cacos, -0x1p-63L, -0x1.fp-16385L, 1.570796326794896619339741908888301885499L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2407 #endif
2408     TEST_c_c (cacos, 0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2409     TEST_c_c (cacos, 0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2410     TEST_c_c (cacos, -0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2411     TEST_c_c (cacos, -0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2412     TEST_c_c (cacos, 0x1p-63L, 0.0L, 1.570796326794896619122901474391200998698L, -0.0L),
2413     TEST_c_c (cacos, -0x1p-63L, 0.0L, 1.570796326794896619339741908888301885499L, -0.0L),
2414     TEST_c_c (cacos, 0x1p-63L, -0.0L, 1.570796326794896619122901474391200998698L, 0.0L),
2415     TEST_c_c (cacos, -0x1p-63L, -0.0L, 1.570796326794896619339741908888301885499L, 0.0L),
2416 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2417     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2418     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2419     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2420     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2421 #endif
2422 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2423     TEST_c_c (cacos, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, -8.813735870195430252326093249797835932642e-1L),
2424     TEST_c_c (cacos, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, 8.813735870195430252326093249797835932642e-1L),
2425     TEST_c_c (cacos, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, -8.813735870195430252326093249797835932642e-1L),
2426     TEST_c_c (cacos, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, 8.813735870195430252326093249797835932642e-1L),
2427     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.997188458999618357060632049675702684031e-16L, -1.234330349600789959989661887846005659983e-16L),
2428     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 3.141592653589793038743797483317667178134L, -1.234330349600789959989661887846005659983e-16L),
2429     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.997188458999618357060632049675702684031e-16L, 1.234330349600789959989661887846005659983e-16L),
2430     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 3.141592653589793038743797483317667178134L, 1.234330349600789959989661887846005659983e-16L),
2431     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2432     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2433     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2434     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2435     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2436     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.141592653589793081453397514901996944859L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2437     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2438     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.141592653589793081453397514901996944859L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2439     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2440     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2441     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2442     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2443     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570092458683775059393382371963565104164e-16L, -0.0L),
2444     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 3.141592653589793081453397514901996944859L, -0.0L),
2445     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570092458683775059393382371963565104164e-16L, 0.0L),
2446     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 3.141592653589793081453397514901996944859L, 0.0L),
2447 #endif
2448     TEST_c_c (cacos, 0x1p-105L, 0.5L, 1.570796326794896619231321691639729392766L, -4.812118250596034474977589134243684231352e-1L),
2449     TEST_c_c (cacos, 0x1p-105L, -0.5L, 1.570796326794896619231321691639729392766L, 4.812118250596034474977589134243684231352e-1L),
2450     TEST_c_c (cacos, -0x1p-105L, 0.5L, 1.570796326794896619231321691639773491431L, -4.812118250596034474977589134243684231352e-1L),
2451     TEST_c_c (cacos, -0x1p-105L, -0.5L, 1.570796326794896619231321691639773491431L, 4.812118250596034474977589134243684231352e-1L),
2452     TEST_c_c (cacos, 0.5L, 0x1p-105L, 1.047197551196597746154214461093167628066L, -2.846556599890768890940941645338546615370e-32L),
2453     TEST_c_c (cacos, -0.5L, 0x1p-105L, 2.094395102393195492308428922186335256131L, -2.846556599890768890940941645338546615370e-32L),
2454     TEST_c_c (cacos, 0.5L, -0x1p-105L, 1.047197551196597746154214461093167628066L, 2.846556599890768890940941645338546615370e-32L),
2455     TEST_c_c (cacos, -0.5L, -0x1p-105L, 2.094395102393195492308428922186335256131L, 2.846556599890768890940941645338546615370e-32L),
2456     TEST_c_c (cacos, 0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639726790195L, -2.465190328815661891911651766508706967729e-32L),
2457     TEST_c_c (cacos, 0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639726790195L, 2.465190328815661891911651766508706967729e-32L),
2458     TEST_c_c (cacos, -0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639776094002L, -2.465190328815661891911651766508706967729e-32L),
2459     TEST_c_c (cacos, -0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639776094002L, 2.465190328815661891911651766508706967729e-32L),
2460 #ifndef TEST_FLOAT
2461     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2462     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2463     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2464     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2465     TEST_c_c (cacos, 0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639726790195L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2466     TEST_c_c (cacos, -0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639776094002L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2467     TEST_c_c (cacos, 0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639726790195L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2468     TEST_c_c (cacos, -0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639776094002L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2469 #endif
2470     TEST_c_c (cacos, 0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2471     TEST_c_c (cacos, 0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2472     TEST_c_c (cacos, -0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2473     TEST_c_c (cacos, -0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2474     TEST_c_c (cacos, 0x1p-105L, 0.0L, 1.570796326794896619231321691639726790195L, -0.0L),
2475     TEST_c_c (cacos, -0x1p-105L, 0.0L, 1.570796326794896619231321691639776094002L, -0.0L),
2476     TEST_c_c (cacos, 0x1p-105L, -0.0L, 1.570796326794896619231321691639726790195L, 0.0L),
2477     TEST_c_c (cacos, -0x1p-105L, -0.0L, 1.570796326794896619231321691639776094002L, 0.0L),
2478 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2479     TEST_c_c (cacos, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, -8.813735870195430252326093249797922409363e-1L),
2480     TEST_c_c (cacos, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, 8.813735870195430252326093249797922409363e-1L),
2481     TEST_c_c (cacos, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, -8.813735870195430252326093249797922409363e-1L),
2482     TEST_c_c (cacos, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, 8.813735870195430252326093249797922409363e-1L),
2483     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.765281878332676474347460257221369818872e-17L, -1.091004200533850618345330909857103457781e-17L),
2484     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 3.141592653589793220809824599952738140723L, -1.091004200533850618345330909857103457781e-17L),
2485     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.765281878332676474347460257221369818872e-17L, 1.091004200533850618345330909857103457781e-17L),
2486     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 3.141592653589793220809824599952738140723L, 1.091004200533850618345330909857103457781e-17L),
2487     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2488     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2489     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2490     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2491     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, -5.867357004219059108790368268900490184505e-4916L),
2492     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 3.141592653589793224584855575465046128902L, -5.867357004219059108790368268900490184505e-4916L),
2493     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, 5.867357004219059108790368268900490184505e-4916L),
2494     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 3.141592653589793224584855575465046128902L, 5.867357004219059108790368268900490184505e-4916L),
2495     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2496     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2497     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2498     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2499     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.387778780781445675529539585113525401762e-17L, -0.0L),
2500     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 3.141592653589793224584855575465046128902L, -0.0L),
2501     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.387778780781445675529539585113525401762e-17L, 0.0L),
2502     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 3.141592653589793224584855575465046128902L, 0.0L),
2503 #endif
2504     TEST_c_c (cacos, 0x1p-112L, 0.5L, 1.570796326794896619231321691639751269838L, -4.812118250596034474977589134243684231352e-1L),
2505     TEST_c_c (cacos, 0x1p-112L, -0.5L, 1.570796326794896619231321691639751269838L, 4.812118250596034474977589134243684231352e-1L),
2506     TEST_c_c (cacos, -0x1p-112L, 0.5L, 1.570796326794896619231321691639751614359L, -4.812118250596034474977589134243684231352e-1L),
2507     TEST_c_c (cacos, -0x1p-112L, -0.5L, 1.570796326794896619231321691639751614359L, 4.812118250596034474977589134243684231352e-1L),
2508     TEST_c_c (cacos, 0.5L, 0x1p-112L, 1.047197551196597746154214461093167628066L, -2.223872343664663196047610660420739543258e-34L),
2509     TEST_c_c (cacos, -0.5L, 0x1p-112L, 2.094395102393195492308428922186335256131L, -2.223872343664663196047610660420739543258e-34L),
2510     TEST_c_c (cacos, 0.5L, -0x1p-112L, 1.047197551196597746154214461093167628066L, 2.223872343664663196047610660420739543258e-34L),
2511     TEST_c_c (cacos, -0.5L, -0x1p-112L, 2.094395102393195492308428922186335256131L, 2.223872343664663196047610660420739543258e-34L),
2512     TEST_c_c (cacos, 0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751249506L, -1.925929944387235853055977942584927318538e-34L),
2513     TEST_c_c (cacos, 0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751249506L, 1.925929944387235853055977942584927318538e-34L),
2514     TEST_c_c (cacos, -0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751634692L, -1.925929944387235853055977942584927318538e-34L),
2515     TEST_c_c (cacos, -0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751634692L, 1.925929944387235853055977942584927318538e-34L),
2516 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2517     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2518     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2519     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2520     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2521     TEST_c_c (cacos, 0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751249506L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2522     TEST_c_c (cacos, -0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751634692L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2523     TEST_c_c (cacos, 0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751249506L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2524     TEST_c_c (cacos, -0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751634692L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2525 #endif
2526     TEST_c_c (cacos, 0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2527     TEST_c_c (cacos, 0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2528     TEST_c_c (cacos, -0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2529     TEST_c_c (cacos, -0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2530     TEST_c_c (cacos, 0x1p-112L, 0.0L, 1.570796326794896619231321691639751249506L, -0.0L),
2531     TEST_c_c (cacos, -0x1p-112L, 0.0L, 1.570796326794896619231321691639751634692L, -0.0L),
2532     TEST_c_c (cacos, 0x1p-112L, -0.0L, 1.570796326794896619231321691639751249506L, 0.0L),
2533     TEST_c_c (cacos, -0x1p-112L, -0.0L, 1.570796326794896619231321691639751634692L, 0.0L),
2534
2535     TEST_c_c (cacos, 0.75L, 1.25L, 1.11752014915610270578240049553777969L, -1.13239363160530819522266333696834467L),
2536     TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L),
2537     END_DATA (cacos)
2538   };
2539
2540 static void
2541 cacos_test (void)
2542 {
2543   errno = 0;
2544   FUNC(cacos) (BUILD_COMPLEX (0.7L, 1.2L));
2545   if (errno == ENOSYS)
2546     /* Function not implemented.  */
2547     return;
2548
2549   START (cacos);
2550   RUN_TEST_LOOP_c_c (cacos, cacos_test_data, );
2551   END (cacos, complex);
2552 }
2553
2554 static const struct test_c_c_data cacosh_test_data[] =
2555   {
2556     START_DATA (cacosh),
2557     TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l),
2558     TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l),
2559     TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l),
2560     TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l),
2561     TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l),
2562     TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l),
2563
2564     TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l),
2565     TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
2566
2567     TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l),
2568     TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l),
2569     TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l),
2570     TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l),
2571     TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l),
2572     TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
2573
2574     TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl),
2575     TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl),
2576     TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl),
2577     TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl),
2578
2579     TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0),
2580     TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero),
2581     TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0),
2582     TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero),
2583
2584     TEST_c_c (cacosh, plus_infty, qnan_value, plus_infty, qnan_value),
2585     TEST_c_c (cacosh, minus_infty, qnan_value, plus_infty, qnan_value),
2586
2587     TEST_c_c (cacosh, 0, qnan_value, qnan_value, qnan_value),
2588     TEST_c_c (cacosh, minus_zero, qnan_value, qnan_value, qnan_value),
2589
2590     TEST_c_c (cacosh, qnan_value, plus_infty, plus_infty, qnan_value),
2591     TEST_c_c (cacosh, qnan_value, minus_infty, plus_infty, qnan_value),
2592
2593     TEST_c_c (cacosh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2594     TEST_c_c (cacosh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2595
2596     TEST_c_c (cacosh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2597     TEST_c_c (cacosh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2598
2599     TEST_c_c (cacosh, qnan_value, qnan_value, qnan_value, qnan_value),
2600
2601     TEST_c_c (cacosh, plus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2602     TEST_c_c (cacosh, minus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2603     TEST_c_c (cacosh, plus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2604     TEST_c_c (cacosh, minus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2605     TEST_c_c (cacosh, plus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2606     TEST_c_c (cacosh, minus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2607     TEST_c_c (cacosh, plus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2608     TEST_c_c (cacosh, minus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2609     TEST_c_c (cacosh, plus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2610     TEST_c_c (cacosh, minus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2611     TEST_c_c (cacosh, plus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2612     TEST_c_c (cacosh, minus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2613
2614     TEST_c_c (cacosh, -1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, M_PIl),
2615     TEST_c_c (cacosh, -1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, -M_PIl),
2616     TEST_c_c (cacosh, -1.0L, plus_zero, plus_zero, M_PIl),
2617     TEST_c_c (cacosh, -1.0L, minus_zero, plus_zero, -M_PIl),
2618     TEST_c_c (cacosh, -0.5L, plus_zero, plus_zero, 2.094395102393195492308428922186335256131L),
2619     TEST_c_c (cacosh, -0.5L, minus_zero, plus_zero, -2.094395102393195492308428922186335256131L),
2620     TEST_c_c (cacosh, 0.5L, plus_zero, plus_zero, 1.047197551196597746154214461093167628066L),
2621     TEST_c_c (cacosh, 0.5L, minus_zero, plus_zero, -1.047197551196597746154214461093167628066L),
2622     TEST_c_c (cacosh, 1.0L, plus_zero, plus_zero, plus_zero),
2623     TEST_c_c (cacosh, 1.0L, minus_zero, plus_zero, minus_zero),
2624     TEST_c_c (cacosh, 1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, plus_zero),
2625     TEST_c_c (cacosh, 1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, minus_zero),
2626
2627     TEST_c_c (cacosh, 0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 8.881784197001252323389053344727730248720e-16L),
2628     TEST_c_c (cacosh, 0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -8.881784197001252323389053344727730248720e-16L),
2629     TEST_c_c (cacosh, -0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 3.141592653589792350284223683154270545292L),
2630     TEST_c_c (cacosh, -0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -3.141592653589792350284223683154270545292L),
2631     TEST_c_c (cacosh, 1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794895731052901991514519103193L),
2632     TEST_c_c (cacosh, -1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794897507409741391764983781004L),
2633     TEST_c_c (cacosh, 1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794895731052901991514519103193L),
2634     TEST_c_c (cacosh, -1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794897507409741391764983781004L),
2635 #ifndef TEST_FLOAT
2636     TEST_c_c (cacosh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
2637     TEST_c_c (cacosh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
2638     TEST_c_c (cacosh, -0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.141592653589793238462643383279502884197L),
2639     TEST_c_c (cacosh, -0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.141592653589793238462643383279502884197L),
2640     TEST_c_c (cacosh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2641     TEST_c_c (cacosh, -1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2642     TEST_c_c (cacosh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2643     TEST_c_c (cacosh, -1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2644 #endif
2645 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2646     TEST_c_c (cacosh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
2647     TEST_c_c (cacosh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
2648     TEST_c_c (cacosh, -0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 3.141592653589793238462643383279502884197L),
2649     TEST_c_c (cacosh, -0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -3.141592653589793238462643383279502884197L),
2650     TEST_c_c (cacosh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2651     TEST_c_c (cacosh, -1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2652     TEST_c_c (cacosh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2653     TEST_c_c (cacosh, -1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2654 #endif
2655     TEST_c_c (cacosh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
2656 #ifndef TEST_FLOAT
2657     TEST_c_c (cacosh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
2658 #endif
2659 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2660     TEST_c_c (cacosh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
2661 #endif
2662     TEST_c_c (cacosh, 0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442097L),
2663     TEST_c_c (cacosh, 0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442097L),
2664     TEST_c_c (cacosh, -0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442100L),
2665     TEST_c_c (cacosh, -0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442100L),
2666     TEST_c_c (cacosh, 1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2667     TEST_c_c (cacosh, -1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884195L),
2668     TEST_c_c (cacosh, 1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2669     TEST_c_c (cacosh, -1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884195L),
2670 #ifndef TEST_FLOAT
2671     TEST_c_c (cacosh, 0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2672     TEST_c_c (cacosh, 0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2673     TEST_c_c (cacosh, -0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2674     TEST_c_c (cacosh, -0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2675     TEST_c_c (cacosh, 1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2676     TEST_c_c (cacosh, -1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2677     TEST_c_c (cacosh, 1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2678     TEST_c_c (cacosh, -1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2679 #endif
2680 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2681     TEST_c_c (cacosh, 0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2682     TEST_c_c (cacosh, 0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2683     TEST_c_c (cacosh, -0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2684     TEST_c_c (cacosh, -0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2685     TEST_c_c (cacosh, 1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2686     TEST_c_c (cacosh, -1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2687     TEST_c_c (cacosh, 1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2688     TEST_c_c (cacosh, -1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2689 #endif
2690     TEST_c_c (cacosh, 0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.221357263937683325603909865564381489366L),
2691     TEST_c_c (cacosh, 0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.221357263937683325603909865564381489366L),
2692     TEST_c_c (cacosh, -0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.920235389652109912858733517715121394831L),
2693     TEST_c_c (cacosh, -0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.920235389652109912858733517715121394831L),
2694     TEST_c_c (cacosh, 1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 6.748888455860063801646649673121744318756e-1L),
2695     TEST_c_c (cacosh, -1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 2.466703808003786858297978415967328452322L),
2696     TEST_c_c (cacosh, 1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -6.748888455860063801646649673121744318756e-1L),
2697     TEST_c_c (cacosh, -1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -2.466703808003786858297978415967328452322L),
2698     TEST_c_c (cacosh, 0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.394493894017929688812643125003661339452L),
2699     TEST_c_c (cacosh, 0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.394493894017929688812643125003661339452L),
2700     TEST_c_c (cacosh, -0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.747098759571863549650000258275841544745L),
2701     TEST_c_c (cacosh, -0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.747098759571863549650000258275841544745L),
2702     TEST_c_c (cacosh, 1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 4.890443302710802929202843732146540079124e-1L),
2703     TEST_c_c (cacosh, -1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 2.652548323318712945542359010064848876285L),
2704     TEST_c_c (cacosh, 1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -4.890443302710802929202843732146540079124e-1L),
2705     TEST_c_c (cacosh, -1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -2.652548323318712945542359010064848876285L),
2706     TEST_c_c (cacosh, 0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.569458417435338878318763342108699202986L),
2707     TEST_c_c (cacosh, 0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.569458417435338878318763342108699202986L),
2708     TEST_c_c (cacosh, -0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.572134236154454360143880041170803681211L),
2709     TEST_c_c (cacosh, -0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.572134236154454360143880041170803681211L),
2710     TEST_c_c (cacosh, 1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 4.349129763101882771258049954181971959031e-2L),
2711     TEST_c_c (cacosh, -1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 3.098101355958774410750062883737683164607L),
2712     TEST_c_c (cacosh, 1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -4.349129763101882771258049954181971959031e-2L),
2713     TEST_c_c (cacosh, -1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -3.098101355958774410750062883737683164607L),
2714     TEST_c_c (cacosh, 0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796325518966635014803151387033957091L),
2715     TEST_c_c (cacosh, 0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796325518966635014803151387033957091L),
2716     TEST_c_c (cacosh, -0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796328070826603447840231892468927106L),
2717     TEST_c_c (cacosh, -0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796328070826603447840231892468927106L),
2718     TEST_c_c (cacosh, 1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 4.247867097467650115899790787875186617316e-5L),
2719     TEST_c_c (cacosh, -1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 3.141550174918818561961484385371624132331L),
2720     TEST_c_c (cacosh, 1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -4.247867097467650115899790787875186617316e-5L),
2721     TEST_c_c (cacosh, -1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -3.141550174918818561961484385371624132331L),
2722     TEST_c_c (cacosh, 0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691638670687364L),
2723     TEST_c_c (cacosh, 0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691638670687364L),
2724     TEST_c_c (cacosh, -0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691640832196834L),
2725     TEST_c_c (cacosh, -0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691640832196834L),
2726     TEST_c_c (cacosh, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 1.236292038260260888664514866456887257525e-15L),
2727     TEST_c_c (cacosh, -1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 3.141592653589792002170605123018614219682L),
2728     TEST_c_c (cacosh, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -1.236292038260260888664514866456887257525e-15L),
2729     TEST_c_c (cacosh, -1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -3.141592653589792002170605123018614219682L),
2730     TEST_c_c (cacosh, 0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442097L),
2731     TEST_c_c (cacosh, 0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442097L),
2732     TEST_c_c (cacosh, -0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442101L),
2733     TEST_c_c (cacosh, -0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442101L),
2734     TEST_c_c (cacosh, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 5.335635276982233498398987585285818977930e-20L),
2735     TEST_c_c (cacosh, -1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 3.141592653589793238409287030509680549213L),
2736     TEST_c_c (cacosh, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -5.335635276982233498398987585285818977930e-20L),
2737     TEST_c_c (cacosh, -1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -3.141592653589793238409287030509680549213L),
2738 #ifndef TEST_FLOAT
2739     TEST_c_c (cacosh, 0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2740     TEST_c_c (cacosh, 0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2741     TEST_c_c (cacosh, -0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2742     TEST_c_c (cacosh, -0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2743     TEST_c_c (cacosh, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
2744     TEST_c_c (cacosh, -1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 3.141592653589793238462643383279502884197L),
2745     TEST_c_c (cacosh, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
2746     TEST_c_c (cacosh, -1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -3.141592653589793238462643383279502884197L),
2747     TEST_c_c (cacosh, 0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2748     TEST_c_c (cacosh, 0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2749     TEST_c_c (cacosh, -0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2750     TEST_c_c (cacosh, -0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2751     TEST_c_c (cacosh, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
2752     TEST_c_c (cacosh, -1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 3.141592653589793238462643383279502884197L),
2753     TEST_c_c (cacosh, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
2754     TEST_c_c (cacosh, -1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -3.141592653589793238462643383279502884197L),
2755 #endif
2756 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2757     TEST_c_c (cacosh, 0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2758     TEST_c_c (cacosh, 0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2759     TEST_c_c (cacosh, -0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2760     TEST_c_c (cacosh, -0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2761     TEST_c_c (cacosh, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
2762     TEST_c_c (cacosh, -1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 3.141592653589793238462643383279502884197L),
2763     TEST_c_c (cacosh, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
2764     TEST_c_c (cacosh, -1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -3.141592653589793238462643383279502884197L),
2765     TEST_c_c (cacosh, 0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2766     TEST_c_c (cacosh, 0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2767     TEST_c_c (cacosh, -0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2768     TEST_c_c (cacosh, -0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2769     TEST_c_c (cacosh, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
2770     TEST_c_c (cacosh, -1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 3.141592653589793238462643383279502884197L),
2771     TEST_c_c (cacosh, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
2772     TEST_c_c (cacosh, -1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -3.141592653589793238462643383279502884197L),
2773 #endif
2774     TEST_c_c (cacosh, 0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796242501204621739026081991856762292L),
2775     TEST_c_c (cacosh, 0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796242501204621739026081991856762292L),
2776     TEST_c_c (cacosh, -0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796411088588616723617301287646121905L),
2777     TEST_c_c (cacosh, -0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796411088588616723617301287646121905L),
2778     TEST_c_c (cacosh, 0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 2.222118384408546368406374049167636760903e-4L),
2779     TEST_c_c (cacosh, -0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 3.141370441751352383825802745874586120521L),
2780     TEST_c_c (cacosh, 0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -2.222118384408546368406374049167636760903e-4L),
2781     TEST_c_c (cacosh, -0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -3.141370441751352383825802745874586120521L),
2782     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442097L),
2783     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442097L),
2784     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442101L),
2785     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442101L),
2786     TEST_c_c (cacosh, 0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 5.830451806317544230969669308596361881467e-36L),
2787     TEST_c_c (cacosh, -0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502878367L),
2788     TEST_c_c (cacosh, 0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -5.830451806317544230969669308596361881467e-36L),
2789     TEST_c_c (cacosh, -0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502878367L),
2790     TEST_c_c (cacosh, 0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2791     TEST_c_c (cacosh, 0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2792     TEST_c_c (cacosh, -0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2793     TEST_c_c (cacosh, -0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2794     TEST_c_c (cacosh, 0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 0.0L),
2795     TEST_c_c (cacosh, -0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502884197L),
2796     TEST_c_c (cacosh, 0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -0.0L),
2797     TEST_c_c (cacosh, -0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502884197L),
2798 #ifndef TEST_FLOAT
2799     TEST_c_c (cacosh, 0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896462222075823262262934288L),
2800     TEST_c_c (cacosh, 0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896462222075823262262934288L),
2801     TEST_c_c (cacosh, -0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896776240567560017239949909L),
2802     TEST_c_c (cacosh, -0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896776240567560017239949909L),
2803     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 9.590301705980041385828904092662391018164e-9L),
2804     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 3.141592643999491532482601997450598791535L),
2805     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -9.590301705980041385828904092662391018164e-9L),
2806     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -3.141592643999491532482601997450598791535L),
2807     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2808     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2809     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2810     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2811     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2812     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2813     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2814     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2815     TEST_c_c (cacosh, 0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2816     TEST_c_c (cacosh, 0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2817     TEST_c_c (cacosh, -0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2818     TEST_c_c (cacosh, -0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2819     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 0.0L),
2820     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2821     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -0.0L),
2822     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2823 #endif
2824 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2825     TEST_c_c (cacosh, 0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619154657020805582738031L),
2826     TEST_c_c (cacosh, 0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619154657020805582738031L),
2827     TEST_c_c (cacosh, -0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619307986362473920146166L),
2828     TEST_c_c (cacosh, -0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619307986362473920146166L),
2829     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 2.119177303101063432592523199680782317447e-10L),
2830     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 3.141592653377875508152537040020250564229L),
2831     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -2.119177303101063432592523199680782317447e-10L),
2832     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -3.141592653377875508152537040020250564229L),
2833 # if LDBL_MIN_EXP <= -16381
2834     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2835     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2836     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2837     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2838     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 1.748608650034385653922359120438227480943e-4923L),
2839     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2840     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -1.748608650034385653922359120438227480943e-4923L),
2841     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2842 # endif
2843     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2844     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2845     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2846     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2847     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 0.0L),
2848     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2849     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -0.0L),
2850     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2851 #endif
2852 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2853     TEST_c_c (cacosh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639742726335L),
2854     TEST_c_c (cacosh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639742726335L),
2855     TEST_c_c (cacosh, -0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639760157863L),
2856     TEST_c_c (cacosh, -0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639760157863L),
2857     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 5.394221422390606848017034778914096659726e-17L),
2858     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 3.141592653589793184520429159373434404027L),
2859     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -5.394221422390606848017034778914096659726e-17L),
2860     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -3.141592653589793184520429159373434404027L),
2861     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2862     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2863     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2864     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2865     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2866     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2867     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2868     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2869     TEST_c_c (cacosh, 0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2870     TEST_c_c (cacosh, 0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2871     TEST_c_c (cacosh, -0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2872     TEST_c_c (cacosh, -0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2873     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 0.0L),
2874     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2875     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -0.0L),
2876     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2877 #endif
2878 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2879     TEST_c_c (cacosh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751374007L),
2880     TEST_c_c (cacosh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751374007L),
2881     TEST_c_c (cacosh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751510190L),
2882     TEST_c_c (cacosh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751510190L),
2883     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 4.767863183742677481693563511435642755521e-18L),
2884     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 3.141592653589793233694780199536825402504L),
2885     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -4.767863183742677481693563511435642755521e-18L),
2886     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -3.141592653589793233694780199536825402504L),
2887     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2888     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2889     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2890     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2891     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 4.148847925325683229178506116378864361396e-4916L),
2892     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2893     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -4.148847925325683229178506116378864361396e-4916L),
2894     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2895     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2896     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2897     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2898     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2899     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 0.0L),
2900     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2901     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -0.0L),
2902     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2903 #endif
2904     TEST_c_c (cacosh, 0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796242501197085295336701632142060969L),
2905     TEST_c_c (cacosh, 0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796242501197085295336701632142060969L),
2906     TEST_c_c (cacosh, -0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796411088596153167306681647360823228L),
2907     TEST_c_c (cacosh, -0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796411088596153167306681647360823228L),
2908     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 4.391863861910487109445187743978204002614e-4L),
2909     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 3.141153467203602189751698864505105063797L),
2910     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -4.391863861910487109445187743978204002614e-4L),
2911     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -3.141153467203602189751698864505105063797L),
2912     TEST_c_c (cacosh, 0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442097L),
2913     TEST_c_c (cacosh, 0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442097L),
2914     TEST_c_c (cacosh, -0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442101L),
2915     TEST_c_c (cacosh, -0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442101L),
2916     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.452669847162035876032494826387364972849e-4L),
2917     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.141247386605077034875040133796864147700L),
2918     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.452669847162035876032494826387364972849e-4L),
2919     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.141247386605077034875040133796864147700L),
2920     TEST_c_c (cacosh, 0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2921     TEST_c_c (cacosh, 0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2922     TEST_c_c (cacosh, -0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2923     TEST_c_c (cacosh, -0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2924     TEST_c_c (cacosh, 0x0.ffffffp0L, 0.0L, 0.0L, 3.452669847162035876032494826387364972849e-4L),
2925     TEST_c_c (cacosh, -0x0.ffffffp0L, 0.0L, 0.0L, 3.141247386605077034875040133796864147700L),
2926     TEST_c_c (cacosh, 0x0.ffffffp0L, -0.0L, 0.0L, -3.452669847162035876032494826387364972849e-4L),
2927     TEST_c_c (cacosh, -0x0.ffffffp0L, -0.0L, 0.0L, -3.141247386605077034875040133796864147700L),
2928     TEST_c_c (cacosh, 0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796220170866625230343643673321150378L),
2929     TEST_c_c (cacosh, 0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796220170866625230343643673321150378L),
2930     TEST_c_c (cacosh, -0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796433418926613232299739606181733819L),
2931     TEST_c_c (cacosh, -0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796433418926613232299739606181733819L),
2932     TEST_c_c (cacosh, 0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 1.047197551196603215914744618665204532273L),
2933     TEST_c_c (cacosh, -0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 2.094395102393190022547898764614298351924L),
2934     TEST_c_c (cacosh, 0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -1.047197551196603215914744618665204532273L),
2935     TEST_c_c (cacosh, -0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -2.094395102393190022547898764614298351924L),
2936     TEST_c_c (cacosh, 0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442096L),
2937     TEST_c_c (cacosh, 0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442096L),
2938     TEST_c_c (cacosh, -0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442101L),
2939     TEST_c_c (cacosh, -0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442101L),
2940     TEST_c_c (cacosh, 0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2941     TEST_c_c (cacosh, -0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2942     TEST_c_c (cacosh, 0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2943     TEST_c_c (cacosh, -0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2944     TEST_c_c (cacosh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796207585607068450636380271254316214L),
2945     TEST_c_c (cacosh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796207585607068450636380271254316214L),
2946     TEST_c_c (cacosh, -0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796446004186170012007003008248567984L),
2947     TEST_c_c (cacosh, -0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796446004186170012007003008248567984L),
2948     TEST_c_c (cacosh, 0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442096L),
2949     TEST_c_c (cacosh, 0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442096L),
2950     TEST_c_c (cacosh, -0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442101L),
2951     TEST_c_c (cacosh, -0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442101L),
2952     TEST_c_c (cacosh, 0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2953     TEST_c_c (cacosh, -0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2954     TEST_c_c (cacosh, 0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2955     TEST_c_c (cacosh, -0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2956     TEST_c_c (cacosh, 0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2957     TEST_c_c (cacosh, 0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2958     TEST_c_c (cacosh, -0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2959     TEST_c_c (cacosh, -0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2960     TEST_c_c (cacosh, 0x1p-23L, 0.0L, 0.0L, 1.570796207585607068449789347324000006847L),
2961     TEST_c_c (cacosh, -0x1p-23L, 0.0L, 0.0L, 1.570796446004186170012854035955502877351L),
2962     TEST_c_c (cacosh, 0x1p-23L, -0.0L, 0.0L, -1.570796207585607068449789347324000006847L),
2963     TEST_c_c (cacosh, -0x1p-23L, -0.0L, 0.0L, -1.570796446004186170012854035955502877351L),
2964     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2965     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2966     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2967     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2968 #ifndef TEST_FLOAT
2969     TEST_c_c (cacosh, 0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896462222075823262236786996L),
2970     TEST_c_c (cacosh, 0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896462222075823262236786996L),
2971     TEST_c_c (cacosh, -0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896776240567560017266097201L),
2972     TEST_c_c (cacosh, -0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896776240567560017266097201L),
2973     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 1.895456983915074112227925127005564372844e-8L),
2974     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 3.141592634635223399311902261000251614142L),
2975     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -1.895456983915074112227925127005564372844e-8L),
2976     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -3.141592634635223399311902261000251614142L),
2977     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2978     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2979     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2980     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2981     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2982     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2983     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2984     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2985     TEST_c_c (cacosh, 0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2986     TEST_c_c (cacosh, 0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2987     TEST_c_c (cacosh, -0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2988     TEST_c_c (cacosh, -0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2989     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0.0L, 0.0L, 1.490116119384765638786343542550461592240e-8L),
2990     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0.0L, 0.0L, 3.141592638688632044614986995416067458693L),
2991     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0.0L, 0.0L, -1.490116119384765638786343542550461592240e-8L),
2992     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0.0L, 0.0L, -3.141592638688632044614986995416067458693L),
2993 #endif
2994     TEST_c_c (cacosh, 0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896420628589431857911675917L),
2995     TEST_c_c (cacosh, 0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896420628589431857911675917L),
2996     TEST_c_c (cacosh, -0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896817834053951421591208280L),
2997     TEST_c_c (cacosh, -0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896817834053951421591208280L),
2998     TEST_c_c (cacosh, 0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 1.047197551196597746154214461093186605110L),
2999     TEST_c_c (cacosh, -0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 2.094395102393195492308428922186316279087L),
3000     TEST_c_c (cacosh, 0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -1.047197551196597746154214461093186605110L),
3001     TEST_c_c (cacosh, -0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -2.094395102393195492308428922186316279087L),
3002 #ifndef TEST_FLOAT
3003     TEST_c_c (cacosh, 0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3004     TEST_c_c (cacosh, 0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3005     TEST_c_c (cacosh, -0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3006     TEST_c_c (cacosh, -0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3007     TEST_c_c (cacosh, 0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
3008     TEST_c_c (cacosh, -0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
3009     TEST_c_c (cacosh, 0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
3010     TEST_c_c (cacosh, -0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
3011 #endif
3012     TEST_c_c (cacosh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896397186716766608443357372L),
3013     TEST_c_c (cacosh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896397186716766608443357372L),
3014     TEST_c_c (cacosh, -0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896841275926616671059526825L),
3015     TEST_c_c (cacosh, -0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896841275926616671059526825L),
3016 #ifndef TEST_FLOAT
3017     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3018     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3019     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3020     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3021     TEST_c_c (cacosh, 0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
3022     TEST_c_c (cacosh, -0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
3023     TEST_c_c (cacosh, 0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
3024     TEST_c_c (cacosh, -0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
3025 #endif
3026     TEST_c_c (cacosh, 0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3027     TEST_c_c (cacosh, 0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3028     TEST_c_c (cacosh, -0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3029     TEST_c_c (cacosh, -0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3030     TEST_c_c (cacosh, 0x1p-52L, 0.0L, 0.0L, 1.570796326794896397186716766608443357372L),
3031     TEST_c_c (cacosh, -0x1p-52L, 0.0L, 0.0L, 1.570796326794896841275926616671059526825L),
3032     TEST_c_c (cacosh, 0x1p-52L, -0.0L, 0.0L, -1.570796326794896397186716766608443357372L),
3033     TEST_c_c (cacosh, -0x1p-52L, -0.0L, 0.0L, -1.570796326794896841275926616671059526825L),
3034 #ifndef TEST_FLOAT
3035     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3036     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3037     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3038     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3039 #endif
3040 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3041     TEST_c_c (cacosh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619154657020805582738025L),
3042     TEST_c_c (cacosh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619154657020805582738025L),
3043     TEST_c_c (cacosh, -0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619307986362473920146173L),
3044     TEST_c_c (cacosh, -0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619307986362473920146173L),
3045     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 4.188407771167967636741951941902992986043e-10L),
3046     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 3.141592653170952461345846619605307690007L),
3047     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -4.188407771167967636741951941902992986043e-10L),
3048     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -3.141592653170952461345846619605307690007L),
3049 # if LDBL_MIN_EXP <= -16381
3050     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3051     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3052     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3053     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3054     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.292722539913596233371825532007990724506e-10L),
3055     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.141592653260520984471283759942320330996L),
3056     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.292722539913596233371825532007990724506e-10L),
3057     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.141592653260520984471283759942320330996L),
3058 # endif
3059     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3060     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3061     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3062     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3063     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.292722539913596233371825532007990724506e-10L),
3064     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.141592653260520984471283759942320330996L),
3065     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.292722539913596233371825532007990724506e-10L),
3066     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.141592653260520984471283759942320330996L),
3067 #endif
3068     TEST_c_c (cacosh, 0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619134347701278529840650L),
3069     TEST_c_c (cacosh, 0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619134347701278529840650L),
3070     TEST_c_c (cacosh, -0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619328295682000973043547L),
3071     TEST_c_c (cacosh, -0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619328295682000973043547L),
3072     TEST_c_c (cacosh, 0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 1.047197551196597746154214461093167628070L),
3073     TEST_c_c (cacosh, -0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 2.094395102393195492308428922186335256127L),
3074     TEST_c_c (cacosh, 0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -1.047197551196597746154214461093167628070L),
3075     TEST_c_c (cacosh, -0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -2.094395102393195492308428922186335256127L),
3076 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3077     TEST_c_c (cacosh, 0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3078     TEST_c_c (cacosh, 0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3079     TEST_c_c (cacosh, -0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3080     TEST_c_c (cacosh, -0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3081     TEST_c_c (cacosh, 0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
3082     TEST_c_c (cacosh, -0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
3083     TEST_c_c (cacosh, 0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
3084     TEST_c_c (cacosh, -0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
3085 #endif
3086     TEST_c_c (cacosh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619122901474391200998698L),
3087     TEST_c_c (cacosh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619122901474391200998698L),
3088     TEST_c_c (cacosh, -0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619339741908888301885499L),
3089     TEST_c_c (cacosh, -0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619339741908888301885499L),
3090 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3091     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3092     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3093     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3094     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3095     TEST_c_c (cacosh, 0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
3096     TEST_c_c (cacosh, -0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
3097     TEST_c_c (cacosh, 0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
3098     TEST_c_c (cacosh, -0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
3099 #endif
3100     TEST_c_c (cacosh, 0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3101     TEST_c_c (cacosh, 0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3102     TEST_c_c (cacosh, -0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3103     TEST_c_c (cacosh, -0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3104     TEST_c_c (cacosh, 0x1p-63L, 0.0L, 0.0L, 1.570796326794896619122901474391200998698L),
3105     TEST_c_c (cacosh, -0x1p-63L, 0.0L, 0.0L, 1.570796326794896619339741908888301885499L),
3106     TEST_c_c (cacosh, 0x1p-63L, -0.0L, 0.0L, -1.570796326794896619122901474391200998698L),
3107     TEST_c_c (cacosh, -0x1p-63L, -0.0L, 0.0L, -1.570796326794896619339741908888301885499L),
3108 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3109     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3110     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3111     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3112     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3113 #endif
3114 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3115     TEST_c_c (cacosh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639734010571L),
3116     TEST_c_c (cacosh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639734010571L),
3117     TEST_c_c (cacosh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639768873627L),
3118     TEST_c_c (cacosh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639768873627L),
3119     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 1.997188458999618357060632049675702684031e-16L),
3120     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 3.141592653589793038743797483317667178134L),
3121     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -1.997188458999618357060632049675702684031e-16L),
3122     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -3.141592653589793038743797483317667178134L),
3123     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3124     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3125     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3126     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3127     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3128     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3129     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3130     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3131     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3132     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3133     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3134     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3135     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 1.570092458683775059393382371963565104164e-16L),
3136     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 3.141592653589793081453397514901996944859L),
3137     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -1.570092458683775059393382371963565104164e-16L),
3138     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -3.141592653589793081453397514901996944859L),
3139 #endif
3140     TEST_c_c (cacosh, 0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639729392766L),
3141     TEST_c_c (cacosh, 0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639729392766L),
3142     TEST_c_c (cacosh, -0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639773491431L),
3143     TEST_c_c (cacosh, -0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639773491431L),
3144     TEST_c_c (cacosh, 0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 1.047197551196597746154214461093167628066L),
3145     TEST_c_c (cacosh, -0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 2.094395102393195492308428922186335256131L),
3146     TEST_c_c (cacosh, 0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -1.047197551196597746154214461093167628066L),
3147     TEST_c_c (cacosh, -0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -2.094395102393195492308428922186335256131L),
3148     TEST_c_c (cacosh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639726790195L),
3149     TEST_c_c (cacosh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639726790195L),
3150     TEST_c_c (cacosh, -0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639776094002L),
3151     TEST_c_c (cacosh, -0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639776094002L),
3152 #ifndef TEST_FLOAT
3153     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3154     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3155     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3156     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3157     TEST_c_c (cacosh, 0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3158     TEST_c_c (cacosh, -0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3159     TEST_c_c (cacosh, 0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3160     TEST_c_c (cacosh, -0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3161 #endif
3162     TEST_c_c (cacosh, 0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3163     TEST_c_c (cacosh, 0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3164     TEST_c_c (cacosh, -0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3165     TEST_c_c (cacosh, -0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3166     TEST_c_c (cacosh, 0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639726790195L),
3167     TEST_c_c (cacosh, -0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639776094002L),
3168     TEST_c_c (cacosh, 0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639726790195L),
3169     TEST_c_c (cacosh, -0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639776094002L),
3170 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3171     TEST_c_c (cacosh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751305915L),
3172     TEST_c_c (cacosh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751305915L),
3173     TEST_c_c (cacosh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751578282L),
3174     TEST_c_c (cacosh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751578282L),
3175     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 1.765281878332676474347460257221369818872e-17L),
3176     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 3.141592653589793220809824599952738140723L),
3177     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -1.765281878332676474347460257221369818872e-17L),
3178     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -3.141592653589793220809824599952738140723L),
3179     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3180     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3181     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3182     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3183     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 1.387778780781445675529539585113525401762e-17L),
3184     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 3.141592653589793224584855575465046128902L),
3185     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -1.387778780781445675529539585113525401762e-17L),
3186     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -3.141592653589793224584855575465046128902L),
3187     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3188     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3189     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3190     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3191     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 1.387778780781445675529539585113525401762e-17L),
3192     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 3.141592653589793224584855575465046128902L),
3193     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -1.387778780781445675529539585113525401762e-17L),
3194     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -3.141592653589793224584855575465046128902L),
3195 #endif
3196     TEST_c_c (cacosh, 0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751269838L),
3197     TEST_c_c (cacosh, 0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751269838L),
3198     TEST_c_c (cacosh, -0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751614359L),
3199     TEST_c_c (cacosh, -0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751614359L),
3200     TEST_c_c (cacosh, 0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 1.047197551196597746154214461093167628066L),
3201     TEST_c_c (cacosh, -0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 2.094395102393195492308428922186335256131L),
3202     TEST_c_c (cacosh, 0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -1.047197551196597746154214461093167628066L),
3203     TEST_c_c (cacosh, -0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -2.094395102393195492308428922186335256131L),
3204     TEST_c_c (cacosh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751249506L),
3205     TEST_c_c (cacosh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751249506L),
3206     TEST_c_c (cacosh, -0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751634692L),
3207     TEST_c_c (cacosh, -0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751634692L),
3208 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3209     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3210     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3211     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3212     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3213     TEST_c_c (cacosh, 0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3214     TEST_c_c (cacosh, -0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3215     TEST_c_c (cacosh, 0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3216     TEST_c_c (cacosh, -0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3217 #endif
3218     TEST_c_c (cacosh, 0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3219     TEST_c_c (cacosh, 0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3220     TEST_c_c (cacosh, -0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3221     TEST_c_c (cacosh, -0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3222     TEST_c_c (cacosh, 0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751249506L),
3223     TEST_c_c (cacosh, -0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751634692L),
3224     TEST_c_c (cacosh, 0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751249506L),
3225     TEST_c_c (cacosh, -0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751634692L),
3226
3227     TEST_c_c (cacosh, 0.75L, 1.25L, 1.13239363160530819522266333696834467L, 1.11752014915610270578240049553777969L),
3228     TEST_c_c (cacosh, -2, -3, 1.9833870299165354323470769028940395L, -2.1414491111159960199416055713254211L),
3229     END_DATA (cacosh)
3230   };
3231
3232 static void
3233 cacosh_test (void)
3234 {
3235   errno = 0;
3236   FUNC(cacosh) (BUILD_COMPLEX (0.7L, 1.2L));
3237   if (errno == ENOSYS)
3238     /* Function not implemented.  */
3239     return;
3240
3241   START (cacosh);
3242   RUN_TEST_LOOP_c_c (cacosh, cacosh_test_data, );
3243   END (cacosh, complex);
3244 }
3245
3246
3247 static const struct test_c_f_data carg_test_data[] =
3248   {
3249     START_DATA (carg);
3250     /* carg (x + iy) is specified as atan2 (y, x) */
3251
3252     /* carg (x + i 0) == 0 for x > 0.  */
3253     TEST_c_f (carg, 2.0, 0, 0),
3254     /* carg (x - i 0) == -0 for x > 0.  */
3255     TEST_c_f (carg, 2.0, minus_zero, minus_zero),
3256
3257     TEST_c_f (carg, 0, 0, 0),
3258     TEST_c_f (carg, 0, minus_zero, minus_zero),
3259
3260     /* carg (x + i 0) == +pi for x < 0.  */
3261     TEST_c_f (carg, -2.0, 0, M_PIl),
3262
3263     /* carg (x - i 0) == -pi for x < 0.  */
3264     TEST_c_f (carg, -2.0, minus_zero, -M_PIl),
3265
3266     TEST_c_f (carg, minus_zero, 0, M_PIl),
3267     TEST_c_f (carg, minus_zero, minus_zero, -M_PIl),
3268
3269     /* carg (+0 + i y) == pi/2 for y > 0.  */
3270     TEST_c_f (carg, 0, 2.0, M_PI_2l),
3271
3272     /* carg (-0 + i y) == pi/2 for y > 0.  */
3273     TEST_c_f (carg, minus_zero, 2.0, M_PI_2l),
3274
3275     /* carg (+0 + i y) == -pi/2 for y < 0.  */
3276     TEST_c_f (carg, 0, -2.0, -M_PI_2l),
3277
3278     /* carg (-0 + i y) == -pi/2 for y < 0.  */
3279     TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l),
3280
3281     /* carg (inf + i y) == +0 for finite y > 0.  */
3282     TEST_c_f (carg, plus_infty, 2.0, 0),
3283
3284     /* carg (inf + i y) == -0 for finite y < 0.  */
3285     TEST_c_f (carg, plus_infty, -2.0, minus_zero),
3286
3287     /* carg(x + i inf) == pi/2 for finite x.  */
3288     TEST_c_f (carg, 10.0, plus_infty, M_PI_2l),
3289
3290     /* carg(x - i inf) == -pi/2 for finite x.  */
3291     TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l),
3292
3293     /* carg (-inf + i y) == +pi for finite y > 0.  */
3294     TEST_c_f (carg, minus_infty, 10.0, M_PIl),
3295
3296     /* carg (-inf + i y) == -pi for finite y < 0.  */
3297     TEST_c_f (carg, minus_infty, -10.0, -M_PIl),
3298
3299     TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l),
3300
3301     TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l),
3302
3303     TEST_c_f (carg, minus_infty, plus_infty, M_PI_34l),
3304
3305     TEST_c_f (carg, minus_infty, minus_infty, -M_PI_34l),
3306
3307     TEST_c_f (carg, qnan_value, qnan_value, qnan_value),
3308     END_DATA (carg);
3309   };
3310
3311 static void
3312 carg_test (void)
3313 {
3314   START (carg);
3315   RUN_TEST_LOOP_c_f (carg, carg_test_data, );
3316   END (carg);
3317 }
3318
3319 static const struct test_c_c_data casin_test_data[] =
3320   {
3321     START_DATA (casin),
3322     TEST_c_c (casin, 0, 0, 0.0, 0.0),
3323     TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0),
3324     TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero),
3325     TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero),
3326
3327     TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty),
3328     TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty),
3329     TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty),
3330     TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty),
3331
3332     TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty),
3333     TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty),
3334     TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty),
3335     TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty),
3336     TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty),
3337     TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty),
3338     TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty),
3339     TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty),
3340
3341     TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty),
3342     TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty),
3343     TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty),
3344     TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty),
3345
3346     TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty),
3347     TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty),
3348     TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty),
3349     TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty),
3350
3351     TEST_c_c (casin, qnan_value, plus_infty, qnan_value, plus_infty),
3352     TEST_c_c (casin, qnan_value, minus_infty, qnan_value, minus_infty),
3353
3354     TEST_c_c (casin, 0.0, qnan_value, 0.0, qnan_value),
3355     TEST_c_c (casin, minus_zero, qnan_value, minus_zero, qnan_value),
3356
3357     TEST_c_c (casin, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3358     TEST_c_c (casin, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3359
3360     TEST_c_c (casin, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3361     TEST_c_c (casin, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3362
3363     TEST_c_c (casin, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3364     TEST_c_c (casin, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3365
3366     TEST_c_c (casin, qnan_value, qnan_value, qnan_value, qnan_value),
3367
3368     TEST_c_c (casin, plus_zero, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L),
3369     TEST_c_c (casin, minus_zero, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L),
3370     TEST_c_c (casin, plus_zero, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L),
3371     TEST_c_c (casin, minus_zero, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L),
3372     TEST_c_c (casin, plus_zero, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L),
3373     TEST_c_c (casin, minus_zero, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L),
3374     TEST_c_c (casin, plus_zero, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L),
3375     TEST_c_c (casin, minus_zero, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L),
3376     TEST_c_c (casin, plus_zero, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L),
3377     TEST_c_c (casin, minus_zero, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L),
3378     TEST_c_c (casin, plus_zero, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L),
3379     TEST_c_c (casin, minus_zero, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L),
3380
3381     TEST_c_c (casin, -1.5L, plus_zero, -M_PI_2l, 0.9624236501192068949955178268487368462704L),
3382     TEST_c_c (casin, -1.5L, minus_zero, -M_PI_2l, -0.9624236501192068949955178268487368462704L),
3383     TEST_c_c (casin, -1.0L, plus_zero, -M_PI_2l, plus_zero),
3384     TEST_c_c (casin, -1.0L, minus_zero, -M_PI_2l, minus_zero),
3385     TEST_c_c (casin, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L, plus_zero),
3386     TEST_c_c (casin, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L, minus_zero),
3387     TEST_c_c (casin, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L, plus_zero),
3388     TEST_c_c (casin, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L, minus_zero),
3389     TEST_c_c (casin, 1.0L, plus_zero, M_PI_2l, plus_zero),
3390     TEST_c_c (casin, 1.0L, minus_zero, M_PI_2l, minus_zero),
3391     TEST_c_c (casin, 1.5L, plus_zero, M_PI_2l, 0.9624236501192068949955178268487368462704L),
3392     TEST_c_c (casin, 1.5L, minus_zero, M_PI_2l, -0.9624236501192068949955178268487368462704L),
3393
3394     TEST_c_c (casin, 0x1p50L, 1.0L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3395     TEST_c_c (casin, 0x1p50L, -1.0L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3396     TEST_c_c (casin, -0x1p50L, 1.0L, -1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3397     TEST_c_c (casin, -0x1p50L, -1.0L, -1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3398     TEST_c_c (casin, 1.0L, 0x1p50L, 8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3399     TEST_c_c (casin, -1.0L, 0x1p50L, -8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3400     TEST_c_c (casin, 1.0L, -0x1p50L, 8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3401     TEST_c_c (casin, -1.0L, -0x1p50L, -8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3402 #ifndef TEST_FLOAT
3403     TEST_c_c (casin, 0x1p500L, 1.0L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3404     TEST_c_c (casin, 0x1p500L, -1.0L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3405     TEST_c_c (casin, -0x1p500L, 1.0L, -1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3406     TEST_c_c (casin, -0x1p500L, -1.0L, -1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3407     TEST_c_c (casin, 1.0L, 0x1p500L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3408     TEST_c_c (casin, -1.0L, 0x1p500L, -3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3409     TEST_c_c (casin, 1.0L, -0x1p500L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3410     TEST_c_c (casin, -1.0L, -0x1p500L, -3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3411 #endif
3412 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3413     TEST_c_c (casin, 0x1p5000L, 1.0L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3414     TEST_c_c (casin, 0x1p5000L, -1.0L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3415     TEST_c_c (casin, -0x1p5000L, 1.0L, -1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3416     TEST_c_c (casin, -0x1p5000L, -1.0L, -1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3417     TEST_c_c (casin, 1.0L, 0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3418     TEST_c_c (casin, -1.0L, 0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3419     TEST_c_c (casin, 1.0L, -0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3420     TEST_c_c (casin, -1.0L, -0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3421 #endif
3422
3423     TEST_c_c (casin, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, 8.973081118419833726837456344608533993585e1L),
3424 #ifndef TEST_FLOAT
3425     TEST_c_c (casin, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, 7.107906849659093345062145442726115449315e2L),
3426 #endif
3427 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3428     TEST_c_c (casin, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, 1.135753137836666928715489992987020363057e4L),
3429 #endif
3430
3431     TEST_c_c (casin, 0x1.fp-129L, 1.5L, 1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3432     TEST_c_c (casin, 0x1.fp-129L, -1.5L, 1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3433     TEST_c_c (casin, -0x1.fp-129L, 1.5L, -1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3434     TEST_c_c (casin, -0x1.fp-129L, -1.5L, -1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3435     TEST_c_c (casin, 1.5L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3436     TEST_c_c (casin, -1.5L, 0x1.fp-129L, -1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3437     TEST_c_c (casin, 1.5L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3438     TEST_c_c (casin, -1.5L, -0x1.fp-129L, -1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3439 #ifndef TEST_FLOAT
3440     TEST_c_c (casin, 0x1.fp-1025L, 1.5L, 2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3441     TEST_c_c (casin, 0x1.fp-1025L, -1.5L, 2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3442     TEST_c_c (casin, -0x1.fp-1025L, 1.5L, -2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3443     TEST_c_c (casin, -0x1.fp-1025L, -1.5L, -2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3444     TEST_c_c (casin, 1.5L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3445     TEST_c_c (casin, -1.5L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3446     TEST_c_c (casin, 1.5L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3447     TEST_c_c (casin, -1.5L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3448 #endif
3449 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3450     TEST_c_c (casin, 0x1.fp-16385L, 1.5L, 4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3451     TEST_c_c (casin, 0x1.fp-16385L, -1.5L, 4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3452     TEST_c_c (casin, -0x1.fp-16385L, 1.5L, -4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3453     TEST_c_c (casin, -0x1.fp-16385L, -1.5L, -4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3454     TEST_c_c (casin, 1.5L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3455     TEST_c_c (casin, -1.5L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3456     TEST_c_c (casin, 1.5L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3457     TEST_c_c (casin, -1.5L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3458 #endif
3459
3460     TEST_c_c (casin, 0.5L, 1.0L, 3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3461     TEST_c_c (casin, 0.5L, -1.0L, 3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3462     TEST_c_c (casin, -0.5L, 1.0L, -3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3463     TEST_c_c (casin, -0.5L, -1.0L, -3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3464     TEST_c_c (casin, 1.0L, 0.5L, 8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3465     TEST_c_c (casin, -1.0L, 0.5L, -8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3466     TEST_c_c (casin, 1.0L, -0.5L, 8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3467     TEST_c_c (casin, -1.0L, -0.5L, -8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3468     TEST_c_c (casin, 0.25L, 1.0L, 1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3469     TEST_c_c (casin, 0.25L, -1.0L, 1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3470     TEST_c_c (casin, -0.25L, 1.0L, -1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3471     TEST_c_c (casin, -0.25L, -1.0L, -1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3472     TEST_c_c (casin, 1.0L, 0.25L, 1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3473     TEST_c_c (casin, -1.0L, 0.25L, -1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3474     TEST_c_c (casin, 1.0L, -0.25L, 1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3475     TEST_c_c (casin, -1.0L, -0.25L, -1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3476     TEST_c_c (casin, 0x1.fp-10L, 1.0L, 1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3477     TEST_c_c (casin, 0x1.fp-10L, -1.0L, 1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3478     TEST_c_c (casin, -0x1.fp-10L, 1.0L, -1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3479     TEST_c_c (casin, -0x1.fp-10L, -1.0L, -1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3480     TEST_c_c (casin, 1.0L, 0x1.fp-10L, 1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3481     TEST_c_c (casin, -1.0L, 0x1.fp-10L, -1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3482     TEST_c_c (casin, 1.0L, -0x1.fp-10L, 1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3483     TEST_c_c (casin, -1.0L, -0x1.fp-10L, -1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3484     TEST_c_c (casin, 0x1.fp-30L, 1.0L, 1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3485     TEST_c_c (casin, 0x1.fp-30L, -1.0L, 1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3486     TEST_c_c (casin, -0x1.fp-30L, 1.0L, -1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3487     TEST_c_c (casin, -0x1.fp-30L, -1.0L, -1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3488     TEST_c_c (casin, 1.0L, 0x1.fp-30L, 1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3489     TEST_c_c (casin, -1.0L, 0x1.fp-30L, -1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3490     TEST_c_c (casin, 1.0L, -0x1.fp-30L, 1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3491     TEST_c_c (casin, -1.0L, -0x1.fp-30L, -1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3492     TEST_c_c (casin, 0x1.fp-100L, 1.0L, 1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3493     TEST_c_c (casin, 0x1.fp-100L, -1.0L, 1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3494     TEST_c_c (casin, -0x1.fp-100L, 1.0L, -1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3495     TEST_c_c (casin, -0x1.fp-100L, -1.0L, -1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3496     TEST_c_c (casin, 1.0L, 0x1.fp-100L, 1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3497     TEST_c_c (casin, -1.0L, 0x1.fp-100L, -1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3498     TEST_c_c (casin, 1.0L, -0x1.fp-100L, 1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3499     TEST_c_c (casin, -1.0L, -0x1.fp-100L, -1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3500     TEST_c_c (casin, 0x1.fp-129L, 1.0L, 2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3501     TEST_c_c (casin, 0x1.fp-129L, -1.0L, 2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3502     TEST_c_c (casin, -0x1.fp-129L, 1.0L, -2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3503     TEST_c_c (casin, -0x1.fp-129L, -1.0L, -2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3504     TEST_c_c (casin, 1.0L, 0x1.fp-129L, 1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3505     TEST_c_c (casin, -1.0L, 0x1.fp-129L, -1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3506     TEST_c_c (casin, 1.0L, -0x1.fp-129L, 1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3507     TEST_c_c (casin, -1.0L, -0x1.fp-129L, -1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3508 #ifndef TEST_FLOAT
3509     TEST_c_c (casin, 0x1.fp-1000L, 1.0L, 1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3510     TEST_c_c (casin, 0x1.fp-1000L, -1.0L, 1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3511     TEST_c_c (casin, -0x1.fp-1000L, 1.0L, -1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3512     TEST_c_c (casin, -0x1.fp-1000L, -1.0L, -1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3513     TEST_c_c (casin, 1.0L, 0x1.fp-1000L, 1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3514     TEST_c_c (casin, -1.0L, 0x1.fp-1000L, -1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3515     TEST_c_c (casin, 1.0L, -0x1.fp-1000L, 1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3516     TEST_c_c (casin, -1.0L, -0x1.fp-1000L, -1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3517     TEST_c_c (casin, 0x1.fp-1025L, 1.0L, 3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3518     TEST_c_c (casin, 0x1.fp-1025L, -1.0L, 3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3519     TEST_c_c (casin, -0x1.fp-1025L, 1.0L, -3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3520     TEST_c_c (casin, -0x1.fp-1025L, -1.0L, -3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3521     TEST_c_c (casin, 1.0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3522     TEST_c_c (casin, -1.0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3523     TEST_c_c (casin, 1.0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3524     TEST_c_c (casin, -1.0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3525 #endif
3526 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3527     TEST_c_c (casin, 0x1.fp-10000L, 1.0L, 6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3528     TEST_c_c (casin, 0x1.fp-10000L, -1.0L, 6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3529     TEST_c_c (casin, -0x1.fp-10000L, 1.0L, -6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3530     TEST_c_c (casin, -0x1.fp-10000L, -1.0L, -6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3531     TEST_c_c (casin, 1.0L, 0x1.fp-10000L, 1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3532     TEST_c_c (casin, -1.0L, 0x1.fp-10000L, -1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3533     TEST_c_c (casin, 1.0L, -0x1.fp-10000L, 1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3534     TEST_c_c (casin, -1.0L, -0x1.fp-10000L, -1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3535     TEST_c_c (casin, 0x1.fp-16385L, 1.0L, 5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3536     TEST_c_c (casin, 0x1.fp-16385L, -1.0L, 5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3537     TEST_c_c (casin, -0x1.fp-16385L, 1.0L, -5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3538     TEST_c_c (casin, -0x1.fp-16385L, -1.0L, -5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3539     TEST_c_c (casin, 1.0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3540     TEST_c_c (casin, -1.0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3541     TEST_c_c (casin, 1.0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3542     TEST_c_c (casin, -1.0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3543 #endif
3544
3545     TEST_c_c (casin, 0x1p-23L, 0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3546     TEST_c_c (casin, 0x1p-23L, -0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3547     TEST_c_c (casin, -0x1p-23L, 0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3548     TEST_c_c (casin, -0x1p-23L, -0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3549     TEST_c_c (casin, 0x1.000002p0L, 0x1p-23L, 1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3550     TEST_c_c (casin, -0x1.000002p0L, 0x1p-23L, -1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3551     TEST_c_c (casin, 0x1.000002p0L, -0x1p-23L, 1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3552     TEST_c_c (casin, -0x1.000002p0L, -0x1p-23L, -1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3553     TEST_c_c (casin, 0x1.fp-129L, 0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3554     TEST_c_c (casin, 0x1.fp-129L, -0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3555     TEST_c_c (casin, -0x1.fp-129L, 0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3556     TEST_c_c (casin, -0x1.fp-129L, -0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3557     TEST_c_c (casin, 0x1.000002p0L, 0x1.fp-129L, 1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3558     TEST_c_c (casin, -0x1.000002p0L, 0x1.fp-129L, -1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3559     TEST_c_c (casin, 0x1.000002p0L, -0x1.fp-129L, 1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3560     TEST_c_c (casin, -0x1.000002p0L, -0x1.fp-129L, -1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3561     TEST_c_c (casin, 0.0L, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L),
3562     TEST_c_c (casin, 0.0L, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L),
3563     TEST_c_c (casin, -0.0L, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L),
3564     TEST_c_c (casin, -0.0L, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L),
3565     TEST_c_c (casin, 0x1.000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3566     TEST_c_c (casin, -0x1.000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3567     TEST_c_c (casin, 0x1.000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3568     TEST_c_c (casin, -0x1.000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3569 #ifndef TEST_FLOAT
3570     TEST_c_c (casin, 0x1p-52L, 0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3571     TEST_c_c (casin, 0x1p-52L, -0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3572     TEST_c_c (casin, -0x1p-52L, 0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3573     TEST_c_c (casin, -0x1p-52L, -0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3574     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1p-52L, 1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3575     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1p-52L, -1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3576     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1p-52L, 1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3577     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1p-52L, -1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3578     TEST_c_c (casin, 0x1.fp-1025L, 0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3579     TEST_c_c (casin, 0x1.fp-1025L, -0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3580     TEST_c_c (casin, -0x1.fp-1025L, 0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3581     TEST_c_c (casin, -0x1.fp-1025L, -0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3582     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3583     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3584     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3585     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3586     TEST_c_c (casin, 0.0L, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L),
3587     TEST_c_c (casin, 0.0L, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L),
3588     TEST_c_c (casin, -0.0L, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L),
3589     TEST_c_c (casin, -0.0L, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L),
3590     TEST_c_c (casin, 0x1.0000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3591     TEST_c_c (casin, -0x1.0000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3592     TEST_c_c (casin, 0x1.0000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3593     TEST_c_c (casin, -0x1.0000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3594 #endif
3595 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3596     TEST_c_c (casin, 0x1p-63L, 0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3597     TEST_c_c (casin, 0x1p-63L, -0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3598     TEST_c_c (casin, -0x1p-63L, 0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3599     TEST_c_c (casin, -0x1p-63L, -0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3600     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1p-63L, 1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3601     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1p-63L, -1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3602     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1p-63L, 1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3603     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1p-63L, -1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3604 # if LDBL_MIN_EXP <= -16381
3605     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3606     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3607     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3608     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3609     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3610     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3611     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3612     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3613 # endif
3614     TEST_c_c (casin, 0.0L, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L),
3615     TEST_c_c (casin, 0.0L, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L),
3616     TEST_c_c (casin, -0.0L, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L),
3617     TEST_c_c (casin, -0.0L, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L),
3618     TEST_c_c (casin, 0x1.0000000000000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3619     TEST_c_c (casin, -0x1.0000000000000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3620     TEST_c_c (casin, 0x1.0000000000000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3621     TEST_c_c (casin, -0x1.0000000000000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3622 #endif
3623 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3624     TEST_c_c (casin, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3625     TEST_c_c (casin, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3626     TEST_c_c (casin, -0x1p-106L, 0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3627     TEST_c_c (casin, -0x1p-106L, -0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3628     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1p-106L, 1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3629     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1p-106L, -1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3630     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1p-106L, 1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3631     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1p-106L, -1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3632     TEST_c_c (casin, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3633     TEST_c_c (casin, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3634     TEST_c_c (casin, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3635     TEST_c_c (casin, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3636     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3637     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3638     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3639     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3640     TEST_c_c (casin, 0.0L, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L),
3641     TEST_c_c (casin, 0.0L, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L),
3642     TEST_c_c (casin, -0.0L, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L),
3643     TEST_c_c (casin, -0.0L, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L),
3644     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3645     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3646     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3647     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3648 #endif
3649 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3650     TEST_c_c (casin, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3651     TEST_c_c (casin, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3652     TEST_c_c (casin, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3653     TEST_c_c (casin, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3654     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3655     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3656     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3657     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3658     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3659     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3660     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3661     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3662     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3663     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3664     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3665     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3666     TEST_c_c (casin, 0.0L, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L),
3667     TEST_c_c (casin, 0.0L, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L),
3668     TEST_c_c (casin, -0.0L, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L),
3669     TEST_c_c (casin, -0.0L, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L),
3670     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3671     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3672     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3673     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3674 #endif
3675
3676     TEST_c_c (casin, 0x1p-23L, 0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3677     TEST_c_c (casin, 0x1p-23L, -0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3678     TEST_c_c (casin, -0x1p-23L, 0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3679     TEST_c_c (casin, -0x1p-23L, -0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3680     TEST_c_c (casin, 0x0.ffffffp0L, 0x1p-23L, 1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3681     TEST_c_c (casin, -0x0.ffffffp0L, 0x1p-23L, -1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3682     TEST_c_c (casin, 0x0.ffffffp0L, -0x1p-23L, 1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3683     TEST_c_c (casin, -0x0.ffffffp0L, -0x1p-23L, -1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3684     TEST_c_c (casin, 0x1.fp-129L, 0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3685     TEST_c_c (casin, 0x1.fp-129L, -0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3686     TEST_c_c (casin, -0x1.fp-129L, 0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3687     TEST_c_c (casin, -0x1.fp-129L, -0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3688     TEST_c_c (casin, 0x0.ffffffp0L, 0x1.fp-129L, 1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3689     TEST_c_c (casin, -0x0.ffffffp0L, 0x1.fp-129L, -1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3690     TEST_c_c (casin, 0x0.ffffffp0L, -0x1.fp-129L, 1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3691     TEST_c_c (casin, -0x0.ffffffp0L, -0x1.fp-129L, -1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3692     TEST_c_c (casin, 0.0L, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L),
3693     TEST_c_c (casin, 0.0L, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L),
3694     TEST_c_c (casin, -0.0L, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L),
3695     TEST_c_c (casin, -0.0L, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L),
3696     TEST_c_c (casin, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L, 0.0L),
3697     TEST_c_c (casin, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L, 0.0L),
3698     TEST_c_c (casin, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L, -0.0L),
3699     TEST_c_c (casin, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L, -0.0L),
3700     TEST_c_c (casin, 0x1p-23L, 0.5L, 1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3701     TEST_c_c (casin, 0x1p-23L, -0.5L, 1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3702     TEST_c_c (casin, -0x1p-23L, 0.5L, -1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3703     TEST_c_c (casin, -0x1p-23L, -0.5L, -1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3704     TEST_c_c (casin, 0.5L, 0x1p-23L, 5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3705     TEST_c_c (casin, -0.5L, 0x1p-23L, -5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3706     TEST_c_c (casin, 0.5L, -0x1p-23L, 5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3707     TEST_c_c (casin, -0.5L, -0x1p-23L, -5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3708     TEST_c_c (casin, 0x1.fp-129L, 0.5L, 2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3709     TEST_c_c (casin, 0x1.fp-129L, -0.5L, 2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3710     TEST_c_c (casin, -0x1.fp-129L, 0.5L, -2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3711     TEST_c_c (casin, -0x1.fp-129L, -0.5L, -2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3712     TEST_c_c (casin, 0.5L, 0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3713     TEST_c_c (casin, -0.5L, 0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3714     TEST_c_c (casin, 0.5L, -0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3715     TEST_c_c (casin, -0.5L, -0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3716     TEST_c_c (casin, 0x1p-23L, 0x1p-23L, 1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3717     TEST_c_c (casin, 0x1p-23L, -0x1p-23L, 1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3718     TEST_c_c (casin, -0x1p-23L, 0x1p-23L, -1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3719     TEST_c_c (casin, -0x1p-23L, -0x1p-23L, -1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3720     /* Bug 15319: underflow exception may be missing.  */
3721     TEST_c_c (casin, 0x1.fp-129L, 0x1p-23L, 2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3722     TEST_c_c (casin, 0x1.fp-129L, -0x1p-23L, 2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3723     TEST_c_c (casin, -0x1.fp-129L, 0x1p-23L, -2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3724     TEST_c_c (casin, -0x1.fp-129L, -0x1p-23L, -2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3725     TEST_c_c (casin, 0x1p-23L, 0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3726     TEST_c_c (casin, -0x1p-23L, 0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3727     TEST_c_c (casin, 0x1p-23L, -0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3728     TEST_c_c (casin, -0x1p-23L, -0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3729     TEST_c_c (casin, 0.0L, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L),
3730     TEST_c_c (casin, 0.0L, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L),
3731     TEST_c_c (casin, -0.0L, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L),
3732     TEST_c_c (casin, -0.0L, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L),
3733     TEST_c_c (casin, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L, 0.0L),
3734     TEST_c_c (casin, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L, 0.0L),
3735     TEST_c_c (casin, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L, -0.0L),
3736     TEST_c_c (casin, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L, -0.0L),
3737     TEST_c_c (casin, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3738     TEST_c_c (casin, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3739     TEST_c_c (casin, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3740     TEST_c_c (casin, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3741 #ifndef TEST_FLOAT
3742     TEST_c_c (casin, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3743     TEST_c_c (casin, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3744     TEST_c_c (casin, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3745     TEST_c_c (casin, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3746     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3747     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1p-52L, -1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3748     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3749     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1p-52L, -1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3750     TEST_c_c (casin, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3751     TEST_c_c (casin, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3752     TEST_c_c (casin, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3753     TEST_c_c (casin, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3754     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3755     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3756     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3757     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3758     TEST_c_c (casin, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L),
3759     TEST_c_c (casin, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L),
3760     TEST_c_c (casin, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L),
3761     TEST_c_c (casin, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L),
3762     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L, 0.0L),
3763     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L, 0.0L),
3764     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L, -0.0L),
3765     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L, -0.0L),
3766 #endif
3767     TEST_c_c (casin, 0x1p-52L, 0.5L, 1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3768     TEST_c_c (casin, 0x1p-52L, -0.5L, 1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3769     TEST_c_c (casin, -0x1p-52L, 0.5L, -1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3770     TEST_c_c (casin, -0x1p-52L, -0.5L, -1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3771     TEST_c_c (casin, 0.5L, 0x1p-52L, 5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3772     TEST_c_c (casin, -0.5L, 0x1p-52L, -5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3773     TEST_c_c (casin, 0.5L, -0x1p-52L, 5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3774     TEST_c_c (casin, -0.5L, -0x1p-52L, -5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3775 #ifndef TEST_FLOAT
3776     TEST_c_c (casin, 0x1.fp-1025L, 0.5L, 4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3777     TEST_c_c (casin, 0x1.fp-1025L, -0.5L, 4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3778     TEST_c_c (casin, -0x1.fp-1025L, 0.5L, -4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3779     TEST_c_c (casin, -0x1.fp-1025L, -0.5L, -4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3780     TEST_c_c (casin, 0.5L, 0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3781     TEST_c_c (casin, -0.5L, 0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3782     TEST_c_c (casin, 0.5L, -0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3783     TEST_c_c (casin, -0.5L, -0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3784 #endif
3785     TEST_c_c (casin, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3786     TEST_c_c (casin, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3787     TEST_c_c (casin, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3788     TEST_c_c (casin, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3789 #ifndef TEST_FLOAT
3790     /* Bug 15319: underflow exception may be missing.  */
3791     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3792     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3793     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3794     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3795     TEST_c_c (casin, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3796     TEST_c_c (casin, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3797     TEST_c_c (casin, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3798     TEST_c_c (casin, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3799 #endif
3800     TEST_c_c (casin, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L),
3801     TEST_c_c (casin, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L),
3802     TEST_c_c (casin, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L),
3803     TEST_c_c (casin, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L),
3804     TEST_c_c (casin, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L, 0.0L),
3805     TEST_c_c (casin, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L, 0.0L),
3806     TEST_c_c (casin, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L, -0.0L),
3807     TEST_c_c (casin, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L, -0.0L),
3808 #ifndef TEST_FLOAT
3809     TEST_c_c (casin, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3810     TEST_c_c (casin, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3811     TEST_c_c (casin, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3812     TEST_c_c (casin, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3813 #endif
3814 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3815     TEST_c_c (casin, 0x1p-63L, 0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3816     TEST_c_c (casin, 0x1p-63L, -0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3817     TEST_c_c (casin, -0x1p-63L, 0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3818     TEST_c_c (casin, -0x1p-63L, -0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3819     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1p-63L, 1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3820     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1p-63L, -1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3821     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1p-63L, 1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3822     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1p-63L, -1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3823 # if LDBL_MIN_EXP <= -16381
3824     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3825     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3826     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3827     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3828     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3829     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3830     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3831     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3832 # endif
3833     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L),
3834     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L),
3835     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L),
3836     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L),
3837     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L, 0.0L),
3838     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L, 0.0L),
3839     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L, -0.0L),
3840     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L, -0.0L),
3841 #endif
3842     TEST_c_c (casin, 0x1p-63L, 0.5L, 9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3843     TEST_c_c (casin, 0x1p-63L, -0.5L, 9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3844     TEST_c_c (casin, -0x1p-63L, 0.5L, -9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3845     TEST_c_c (casin, -0x1p-63L, -0.5L, -9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3846     TEST_c_c (casin, 0.5L, 0x1p-63L, 5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3847     TEST_c_c (casin, -0.5L, 0x1p-63L, -5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3848     TEST_c_c (casin, 0.5L, -0x1p-63L, 5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3849     TEST_c_c (casin, -0.5L, -0x1p-63L, -5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3850 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3851     TEST_c_c (casin, 0x1.fp-16385L, 0.5L, 7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3852     TEST_c_c (casin, 0x1.fp-16385L, -0.5L, 7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3853     TEST_c_c (casin, -0x1.fp-16385L, 0.5L, -7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3854     TEST_c_c (casin, -0x1.fp-16385L, -0.5L, -7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3855     TEST_c_c (casin, 0.5L, 0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3856     TEST_c_c (casin, -0.5L, 0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3857     TEST_c_c (casin, 0.5L, -0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3858     TEST_c_c (casin, -0.5L, -0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3859 #endif
3860     TEST_c_c (casin, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3861     TEST_c_c (casin, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3862     TEST_c_c (casin, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3863     TEST_c_c (casin, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3864 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3865     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3866     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3867     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3868     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3869     TEST_c_c (casin, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3870     TEST_c_c (casin, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3871     TEST_c_c (casin, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3872     TEST_c_c (casin, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3873 #endif
3874     TEST_c_c (casin, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L),
3875     TEST_c_c (casin, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L),
3876     TEST_c_c (casin, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L),
3877     TEST_c_c (casin, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L),
3878     TEST_c_c (casin, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L, 0.0L),
3879     TEST_c_c (casin, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L, 0.0L),
3880     TEST_c_c (casin, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L, -0.0L),
3881     TEST_c_c (casin, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L, -0.0L),
3882 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3883     TEST_c_c (casin, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3884     TEST_c_c (casin, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3885     TEST_c_c (casin, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3886     TEST_c_c (casin, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3887 #endif
3888 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3889     TEST_c_c (casin, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3890     TEST_c_c (casin, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3891     TEST_c_c (casin, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3892     TEST_c_c (casin, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3893     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3894     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3895     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3896     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3897     TEST_c_c (casin, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3898     TEST_c_c (casin, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3899     TEST_c_c (casin, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3900     TEST_c_c (casin, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3901     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3902     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3903     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3904     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3905     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L),
3906     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L),
3907     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L),
3908     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L),
3909     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L, 0.0L),
3910     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L, 0.0L),
3911     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L, -0.0L),
3912     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L, -0.0L),
3913 #endif
3914     TEST_c_c (casin, 0x1p-105L, 0.5L, 2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3915     TEST_c_c (casin, 0x1p-105L, -0.5L, 2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3916     TEST_c_c (casin, -0x1p-105L, 0.5L, -2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3917     TEST_c_c (casin, -0x1p-105L, -0.5L, -2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3918     TEST_c_c (casin, 0.5L, 0x1p-105L, 5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3919     TEST_c_c (casin, -0.5L, 0x1p-105L, -5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3920     TEST_c_c (casin, 0.5L, -0x1p-105L, 5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3921     TEST_c_c (casin, -0.5L, -0x1p-105L, -5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3922     TEST_c_c (casin, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3923     TEST_c_c (casin, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3924     TEST_c_c (casin, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3925     TEST_c_c (casin, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3926 #ifndef TEST_FLOAT
3927     /* Bug 15319: underflow exception may be missing.  */
3928     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3929     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3930     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3931     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3932     TEST_c_c (casin, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3933     TEST_c_c (casin, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3934     TEST_c_c (casin, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3935     TEST_c_c (casin, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3936 #endif
3937     TEST_c_c (casin, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
3938     TEST_c_c (casin, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
3939     TEST_c_c (casin, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
3940     TEST_c_c (casin, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
3941     TEST_c_c (casin, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
3942     TEST_c_c (casin, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
3943     TEST_c_c (casin, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
3944     TEST_c_c (casin, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
3945 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3946     TEST_c_c (casin, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3947     TEST_c_c (casin, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3948     TEST_c_c (casin, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3949     TEST_c_c (casin, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3950     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3951     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3952     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3953     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3954     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3955     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3956     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3957     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3958     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3959     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3960     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3961     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3962     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L),
3963     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L),
3964     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L),
3965     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L),
3966     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L, 0.0L),
3967     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L, 0.0L),
3968     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L, -0.0L),
3969     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L, -0.0L),
3970 #endif
3971     TEST_c_c (casin, 0x1p-112L, 0.5L, 1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3972     TEST_c_c (casin, 0x1p-112L, -0.5L, 1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3973     TEST_c_c (casin, -0x1p-112L, 0.5L, -1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3974     TEST_c_c (casin, -0x1p-112L, -0.5L, -1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3975     TEST_c_c (casin, 0.5L, 0x1p-112L, 5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3976     TEST_c_c (casin, -0.5L, 0x1p-112L, -5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3977     TEST_c_c (casin, 0.5L, -0x1p-112L, 5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3978     TEST_c_c (casin, -0.5L, -0x1p-112L, -5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3979     TEST_c_c (casin, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3980     TEST_c_c (casin, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3981     TEST_c_c (casin, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3982     TEST_c_c (casin, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3983 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3984     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3985     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3986     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3987     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3988     TEST_c_c (casin, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3989     TEST_c_c (casin, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3990     TEST_c_c (casin, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3991     TEST_c_c (casin, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3992 #endif
3993     TEST_c_c (casin, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
3994     TEST_c_c (casin, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
3995     TEST_c_c (casin, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
3996     TEST_c_c (casin, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
3997     TEST_c_c (casin, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
3998     TEST_c_c (casin, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
3999     TEST_c_c (casin, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
4000     TEST_c_c (casin, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
4001
4002     TEST_c_c (casin, 0.75L, 1.25L, 0.453276177638793913448921196101971749L, 1.13239363160530819522266333696834467L),
4003     TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L),
4004     END_DATA (casin)
4005   };
4006
4007 static void
4008 casin_test (void)
4009 {
4010   errno = 0;
4011   FUNC(casin) (BUILD_COMPLEX (0.7L, 1.2L));
4012   if (errno == ENOSYS)
4013     /* Function not implemented.  */
4014     return;
4015
4016   START (casin);
4017   RUN_TEST_LOOP_c_c (casin, casin_test_data, );
4018   END (casin, complex);
4019 }
4020
4021
4022 static const struct test_c_c_data casinh_test_data[] =
4023   {
4024     START_DATA (casinh),
4025     TEST_c_c (casinh, 0, 0, 0.0, 0.0),
4026     TEST_c_c (casinh, minus_zero, 0, minus_zero, 0),
4027     TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero),
4028     TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero),
4029
4030     TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l),
4031     TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
4032     TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l),
4033     TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l),
4034
4035     TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l),
4036     TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l),
4037     TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l),
4038     TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l),
4039     TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l),
4040     TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l),
4041     TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l),
4042     TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
4043
4044     TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0),
4045     TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero),
4046     TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0),
4047     TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero),
4048
4049     TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0),
4050     TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero),
4051     TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0),
4052     TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero),
4053
4054     TEST_c_c (casinh, plus_infty, qnan_value, plus_infty, qnan_value),
4055     TEST_c_c (casinh, minus_infty, qnan_value, minus_infty, qnan_value),
4056
4057     TEST_c_c (casinh, qnan_value, 0, qnan_value, 0.0),
4058     TEST_c_c (casinh, qnan_value, minus_zero, qnan_value, minus_zero),
4059
4060     TEST_c_c (casinh, qnan_value, plus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
4061     TEST_c_c (casinh, qnan_value, minus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
4062
4063     TEST_c_c (casinh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4064     TEST_c_c (casinh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4065
4066     TEST_c_c (casinh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4067     TEST_c_c (casinh, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4068
4069     TEST_c_c (casinh, qnan_value, qnan_value, qnan_value, qnan_value),
4070
4071     TEST_c_c (casinh, plus_zero, -1.5L, 0.9624236501192068949955178268487368462704L, -M_PI_2l),
4072     TEST_c_c (casinh, minus_zero, -1.5L, -0.9624236501192068949955178268487368462704L, -M_PI_2l),
4073     TEST_c_c (casinh, plus_zero, -1.0L, plus_zero, -M_PI_2l),
4074     TEST_c_c (casinh, minus_zero, -1.0L, minus_zero, -M_PI_2l),
4075     TEST_c_c (casinh, plus_zero, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L),
4076     TEST_c_c (casinh, minus_zero, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L),
4077     TEST_c_c (casinh, plus_zero, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L),
4078     TEST_c_c (casinh, minus_zero, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L),
4079     TEST_c_c (casinh, plus_zero, 1.0L, plus_zero, M_PI_2l),
4080     TEST_c_c (casinh, minus_zero, 1.0L, minus_zero, M_PI_2l),
4081     TEST_c_c (casinh, plus_zero, 1.5L, 0.9624236501192068949955178268487368462704L, M_PI_2l),
4082     TEST_c_c (casinh, minus_zero, 1.5L, -0.9624236501192068949955178268487368462704L, M_PI_2l),
4083
4084     TEST_c_c (casinh, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L, plus_zero),
4085     TEST_c_c (casinh, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L, minus_zero),
4086     TEST_c_c (casinh, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L, plus_zero),
4087     TEST_c_c (casinh, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L, minus_zero),
4088     TEST_c_c (casinh, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L, plus_zero),
4089     TEST_c_c (casinh, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L, minus_zero),
4090     TEST_c_c (casinh, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L, plus_zero),
4091     TEST_c_c (casinh, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L, minus_zero),
4092     TEST_c_c (casinh, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L, plus_zero),
4093     TEST_c_c (casinh, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L, minus_zero),
4094     TEST_c_c (casinh, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L, plus_zero),
4095     TEST_c_c (casinh, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L, minus_zero),
4096
4097     TEST_c_c (casinh, 0x1p50L, 1.0L, 3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
4098     TEST_c_c (casinh, 0x1p50L, -1.0L, 3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
4099     TEST_c_c (casinh, -0x1p50L, 1.0L, -3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
4100     TEST_c_c (casinh, -0x1p50L, -1.0L, -3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
4101     TEST_c_c (casinh, 1.0L, 0x1p50L, 3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
4102     TEST_c_c (casinh, -1.0L, 0x1p50L, -3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
4103     TEST_c_c (casinh, 1.0L, -0x1p50L, 3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
4104     TEST_c_c (casinh, -1.0L, -0x1p50L, -3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
4105 #ifndef TEST_FLOAT
4106     TEST_c_c (casinh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
4107     TEST_c_c (casinh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
4108     TEST_c_c (casinh, -0x1p500L, 1.0L, -3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
4109     TEST_c_c (casinh, -0x1p500L, -1.0L, -3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
4110     TEST_c_c (casinh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
4111     TEST_c_c (casinh, -1.0L, 0x1p500L, -3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
4112     TEST_c_c (casinh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
4113     TEST_c_c (casinh, -1.0L, -0x1p500L, -3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
4114 #endif
4115 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4116     TEST_c_c (casinh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
4117     TEST_c_c (casinh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
4118     TEST_c_c (casinh, -0x1p5000L, 1.0L, -3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
4119     TEST_c_c (casinh, -0x1p5000L, -1.0L, -3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
4120     TEST_c_c (casinh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
4121     TEST_c_c (casinh, -1.0L, 0x1p5000L, -3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
4122     TEST_c_c (casinh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
4123     TEST_c_c (casinh, -1.0L, -0x1p5000L, -3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
4124 #endif
4125
4126     TEST_c_c (casinh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
4127 #ifndef TEST_FLOAT
4128     TEST_c_c (casinh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
4129 #endif
4130 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4131     TEST_c_c (casinh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
4132 #endif
4133
4134     TEST_c_c (casinh, 0x1.fp-129L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4135     TEST_c_c (casinh, 0x1.fp-129L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4136     TEST_c_c (casinh, -0x1.fp-129L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4137     TEST_c_c (casinh, -0x1.fp-129L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4138     TEST_c_c (casinh, 1.5L, 0x1.fp-129L, 1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4139     TEST_c_c (casinh, -1.5L, 0x1.fp-129L, -1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4140     TEST_c_c (casinh, 1.5L, -0x1.fp-129L, 1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4141     TEST_c_c (casinh, -1.5L, -0x1.fp-129L, -1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4142 #ifndef TEST_FLOAT
4143     TEST_c_c (casinh, 0x1.fp-1025L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4144     TEST_c_c (casinh, 0x1.fp-1025L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4145     TEST_c_c (casinh, -0x1.fp-1025L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4146     TEST_c_c (casinh, -0x1.fp-1025L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4147     TEST_c_c (casinh, 1.5L, 0x1.fp-1025L, 1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4148     TEST_c_c (casinh, -1.5L, 0x1.fp-1025L, -1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4149     TEST_c_c (casinh, 1.5L, -0x1.fp-1025L, 1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4150     TEST_c_c (casinh, -1.5L, -0x1.fp-1025L, -1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4151 #endif
4152 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4153     TEST_c_c (casinh, 0x1.fp-16385L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4154     TEST_c_c (casinh, 0x1.fp-16385L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4155     TEST_c_c (casinh, -0x1.fp-16385L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4156     TEST_c_c (casinh, -0x1.fp-16385L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4157     TEST_c_c (casinh, 1.5L, 0x1.fp-16385L, 1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4158     TEST_c_c (casinh, -1.5L, 0x1.fp-16385L, -1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4159     TEST_c_c (casinh, 1.5L, -0x1.fp-16385L, 1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4160     TEST_c_c (casinh, -1.5L, -0x1.fp-16385L, -1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4161 #endif
4162
4163     TEST_c_c (casinh, 0.5L, 1.0L, 7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4164     TEST_c_c (casinh, 0.5L, -1.0L, 7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4165     TEST_c_c (casinh, -0.5L, 1.0L, -7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4166     TEST_c_c (casinh, -0.5L, -1.0L, -7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4167     TEST_c_c (casinh, 1.0L, 0.5L, 9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4168     TEST_c_c (casinh, -1.0L, 0.5L, -9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4169     TEST_c_c (casinh, 1.0L, -0.5L, 9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4170     TEST_c_c (casinh, -1.0L, -0.5L, -9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4171     TEST_c_c (casinh, 0.25L, 1.0L, 5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4172     TEST_c_c (casinh, 0.25L, -1.0L, 5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4173     TEST_c_c (casinh, -0.25L, 1.0L, -5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4174     TEST_c_c (casinh, -0.25L, -1.0L, -5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4175     TEST_c_c (casinh, 1.0L, 0.25L, 8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4176     TEST_c_c (casinh, -1.0L, 0.25L, -8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4177     TEST_c_c (casinh, 1.0L, -0.25L, 8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4178     TEST_c_c (casinh, -1.0L, -0.25L, -8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4179     TEST_c_c (casinh, 0x1.fp-10L, 1.0L, 4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4180     TEST_c_c (casinh, 0x1.fp-10L, -1.0L, 4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4181     TEST_c_c (casinh, -0x1.fp-10L, 1.0L, -4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4182     TEST_c_c (casinh, -0x1.fp-10L, -1.0L, -4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4183     TEST_c_c (casinh, 1.0L, 0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4184     TEST_c_c (casinh, -1.0L, 0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4185     TEST_c_c (casinh, 1.0L, -0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4186     TEST_c_c (casinh, -1.0L, -0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4187     TEST_c_c (casinh, 0x1.fp-30L, 1.0L, 4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4188     TEST_c_c (casinh, 0x1.fp-30L, -1.0L, 4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4189     TEST_c_c (casinh, -0x1.fp-30L, 1.0L, -4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4190     TEST_c_c (casinh, -0x1.fp-30L, -1.0L, -4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4191     TEST_c_c (casinh, 1.0L, 0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4192     TEST_c_c (casinh, -1.0L, 0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4193     TEST_c_c (casinh, 1.0L, -0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4194     TEST_c_c (casinh, -1.0L, -0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4195     TEST_c_c (casinh, 0x1.fp-100L, 1.0L, 1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4196     TEST_c_c (casinh, 0x1.fp-100L, -1.0L, 1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4197     TEST_c_c (casinh, -0x1.fp-100L, 1.0L, -1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4198     TEST_c_c (casinh, -0x1.fp-100L, -1.0L, -1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4199     TEST_c_c (casinh, 1.0L, 0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4200     TEST_c_c (casinh, -1.0L, 0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4201     TEST_c_c (casinh, 1.0L, -0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4202     TEST_c_c (casinh, -1.0L, -0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4203     TEST_c_c (casinh, 0x1.fp-129L, 1.0L, 5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4204     TEST_c_c (casinh, 0x1.fp-129L, -1.0L, 5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4205     TEST_c_c (casinh, -0x1.fp-129L, 1.0L, -5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4206     TEST_c_c (casinh, -0x1.fp-129L, -1.0L, -5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4207     TEST_c_c (casinh, 1.0L, 0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4208     TEST_c_c (casinh, -1.0L, 0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4209     TEST_c_c (casinh, 1.0L, -0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4210     TEST_c_c (casinh, -1.0L, -0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4211 #ifndef TEST_FLOAT
4212     TEST_c_c (casinh, 0x1.fp-1000L, 1.0L, 4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4213     TEST_c_c (casinh, 0x1.fp-1000L, -1.0L, 4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4214     TEST_c_c (casinh, -0x1.fp-1000L, 1.0L, -4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4215     TEST_c_c (casinh, -0x1.fp-1000L, -1.0L, -4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4216     TEST_c_c (casinh, 1.0L, 0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4217     TEST_c_c (casinh, -1.0L, 0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4218     TEST_c_c (casinh, 1.0L, -0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4219     TEST_c_c (casinh, -1.0L, -0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4220     TEST_c_c (casinh, 0x1.fp-1025L, 1.0L, 7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4221     TEST_c_c (casinh, 0x1.fp-1025L, -1.0L, 7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4222     TEST_c_c (casinh, -0x1.fp-1025L, 1.0L, -7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4223     TEST_c_c (casinh, -0x1.fp-1025L, -1.0L, -7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4224     TEST_c_c (casinh, 1.0L, 0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4225     TEST_c_c (casinh, -1.0L, 0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4226     TEST_c_c (casinh, 1.0L, -0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4227     TEST_c_c (casinh, -1.0L, -0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4228 #endif
4229 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4230     TEST_c_c (casinh, 0x1.fp-10000L, 1.0L, 9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4231     TEST_c_c (casinh, 0x1.fp-10000L, -1.0L, 9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4232     TEST_c_c (casinh, -0x1.fp-10000L, 1.0L, -9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4233     TEST_c_c (casinh, -0x1.fp-10000L, -1.0L, -9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4234     TEST_c_c (casinh, 1.0L, 0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4235     TEST_c_c (casinh, -1.0L, 0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4236     TEST_c_c (casinh, 1.0L, -0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4237     TEST_c_c (casinh, -1.0L, -0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4238     TEST_c_c (casinh, 0x1.fp-16385L, 1.0L, 9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4239     TEST_c_c (casinh, 0x1.fp-16385L, -1.0L, 9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4240     TEST_c_c (casinh, -0x1.fp-16385L, 1.0L, -9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4241     TEST_c_c (casinh, -0x1.fp-16385L, -1.0L, -9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4242     TEST_c_c (casinh, 1.0L, 0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4243     TEST_c_c (casinh, -1.0L, 0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4244     TEST_c_c (casinh, 1.0L, -0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4245     TEST_c_c (casinh, -1.0L, -0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4246 #endif
4247
4248     TEST_c_c (casinh, 0x1p-23L, 0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4249     TEST_c_c (casinh, 0x1p-23L, -0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4250     TEST_c_c (casinh, -0x1p-23L, 0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4251     TEST_c_c (casinh, -0x1p-23L, -0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4252     TEST_c_c (casinh, 0x1.000002p0L, 0x1p-23L, 8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4253     TEST_c_c (casinh, -0x1.000002p0L, 0x1p-23L, -8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4254     TEST_c_c (casinh, 0x1.000002p0L, -0x1p-23L, 8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4255     TEST_c_c (casinh, -0x1.000002p0L, -0x1p-23L, -8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4256     TEST_c_c (casinh, 0x1.fp-129L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4257     TEST_c_c (casinh, 0x1.fp-129L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4258     TEST_c_c (casinh, -0x1.fp-129L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4259     TEST_c_c (casinh, -0x1.fp-129L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4260     TEST_c_c (casinh, 0x1.000002p0L, 0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4261     TEST_c_c (casinh, -0x1.000002p0L, 0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4262     TEST_c_c (casinh, 0x1.000002p0L, -0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4263     TEST_c_c (casinh, -0x1.000002p0L, -0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4264     TEST_c_c (casinh, 0.0L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4265     TEST_c_c (casinh, 0.0L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4266     TEST_c_c (casinh, -0.0L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4267     TEST_c_c (casinh, -0.0L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4268     TEST_c_c (casinh, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L, 0.0L),
4269     TEST_c_c (casinh, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L, 0.0L),
4270     TEST_c_c (casinh, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L, -0.0L),
4271     TEST_c_c (casinh, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L, -0.0L),
4272 #ifndef TEST_FLOAT
4273     TEST_c_c (casinh, 0x1p-52L, 0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4274     TEST_c_c (casinh, 0x1p-52L, -0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4275     TEST_c_c (casinh, -0x1p-52L, 0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4276     TEST_c_c (casinh, -0x1p-52L, -0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4277     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1p-52L, 8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4278     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1p-52L, -8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4279     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1p-52L, 8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4280     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1p-52L, -8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4281     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4282     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4283     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4284     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4285     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4286     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4287     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4288     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4289     TEST_c_c (casinh, 0.0L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4290     TEST_c_c (casinh, 0.0L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4291     TEST_c_c (casinh, -0.0L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4292     TEST_c_c (casinh, -0.0L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4293     TEST_c_c (casinh, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L, 0.0L),
4294     TEST_c_c (casinh, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L, 0.0L),
4295     TEST_c_c (casinh, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L, -0.0L),
4296     TEST_c_c (casinh, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L, -0.0L),
4297 #endif
4298 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4299     TEST_c_c (casinh, 0x1p-63L, 0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4300     TEST_c_c (casinh, 0x1p-63L, -0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4301     TEST_c_c (casinh, -0x1p-63L, 0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4302     TEST_c_c (casinh, -0x1p-63L, -0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4303     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1p-63L, 8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4304     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1p-63L, -8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4305     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1p-63L, 8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4306     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1p-63L, -8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4307 # if LDBL_MIN_EXP <= -16381
4308     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4309     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4310     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4311     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4312     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4313     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4314     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4315     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4316 # endif
4317     TEST_c_c (casinh, 0.0L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4318     TEST_c_c (casinh, 0.0L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4319     TEST_c_c (casinh, -0.0L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4320     TEST_c_c (casinh, -0.0L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4321     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L, 0.0L),
4322     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L, 0.0L),
4323     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L, -0.0L),
4324     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L, -0.0L),
4325 #endif
4326 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4327     TEST_c_c (casinh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4328     TEST_c_c (casinh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4329     TEST_c_c (casinh, -0x1p-106L, 0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4330     TEST_c_c (casinh, -0x1p-106L, -0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4331     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4332     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1p-106L, -8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4333     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4334     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1p-106L, -8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4335     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4336     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4337     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4338     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4339     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4340     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4341     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4342     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4343     TEST_c_c (casinh, 0.0L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4344     TEST_c_c (casinh, 0.0L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4345     TEST_c_c (casinh, -0.0L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4346     TEST_c_c (casinh, -0.0L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4347     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L, 0.0L),
4348     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L, 0.0L),
4349     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L, -0.0L),
4350     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L, -0.0L),
4351 #endif
4352 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4353     TEST_c_c (casinh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4354     TEST_c_c (casinh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4355     TEST_c_c (casinh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4356     TEST_c_c (casinh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4357     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4358     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4359     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4360     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4361     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4362     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4363     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4364     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4365     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4366     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4367     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4368     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4369     TEST_c_c (casinh, 0.0L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4370     TEST_c_c (casinh, 0.0L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4371     TEST_c_c (casinh, -0.0L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4372     TEST_c_c (casinh, -0.0L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4373     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L, 0.0L),
4374     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L, 0.0L),
4375     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L, -0.0L),
4376     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L, -0.0L),
4377 #endif
4378
4379     TEST_c_c (casinh, 0x1p-23L, 0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4380     TEST_c_c (casinh, 0x1p-23L, -0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4381     TEST_c_c (casinh, -0x1p-23L, 0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4382     TEST_c_c (casinh, -0x1p-23L, -0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4383     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1p-23L, 8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4384     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1p-23L, -8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4385     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1p-23L, 8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4386     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1p-23L, -8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4387     TEST_c_c (casinh, 0x1.fp-129L, 0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4388     TEST_c_c (casinh, 0x1.fp-129L, -0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4389     TEST_c_c (casinh, -0x1.fp-129L, 0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4390     TEST_c_c (casinh, -0x1.fp-129L, -0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4391     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4392     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4393     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4394     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4395     TEST_c_c (casinh, 0.0L, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L),
4396     TEST_c_c (casinh, 0.0L, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L),
4397     TEST_c_c (casinh, -0.0L, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L),
4398     TEST_c_c (casinh, -0.0L, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L),
4399     TEST_c_c (casinh, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L, 0.0L),
4400     TEST_c_c (casinh, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L, 0.0L),
4401     TEST_c_c (casinh, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L, -0.0L),
4402     TEST_c_c (casinh, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L, -0.0L),
4403     TEST_c_c (casinh, 0x1p-23L, 0.5L, 1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4404     TEST_c_c (casinh, 0x1p-23L, -0.5L, 1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4405     TEST_c_c (casinh, -0x1p-23L, 0.5L, -1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4406     TEST_c_c (casinh, -0x1p-23L, -0.5L, -1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4407     TEST_c_c (casinh, 0.5L, 0x1p-23L, 4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4408     TEST_c_c (casinh, -0.5L, 0x1p-23L, -4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4409     TEST_c_c (casinh, 0.5L, -0x1p-23L, 4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4410     TEST_c_c (casinh, -0.5L, -0x1p-23L, -4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4411     TEST_c_c (casinh, 0x1.fp-129L, 0.5L, 3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4412     TEST_c_c (casinh, 0x1.fp-129L, -0.5L, 3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4413     TEST_c_c (casinh, -0x1.fp-129L, 0.5L, -3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4414     TEST_c_c (casinh, -0x1.fp-129L, -0.5L, -3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4415     TEST_c_c (casinh, 0.5L, 0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4416     TEST_c_c (casinh, -0.5L, 0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4417     TEST_c_c (casinh, 0.5L, -0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4418     TEST_c_c (casinh, -0.5L, -0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4419     TEST_c_c (casinh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4420     TEST_c_c (casinh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4421     TEST_c_c (casinh, -0x1p-23L, 0x1p-23L, -1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4422     TEST_c_c (casinh, -0x1p-23L, -0x1p-23L, -1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4423     TEST_c_c (casinh, 0x1.fp-129L, 0x1p-23L, 2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4424     TEST_c_c (casinh, 0x1.fp-129L, -0x1p-23L, 2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4425     TEST_c_c (casinh, -0x1.fp-129L, 0x1p-23L, -2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4426     TEST_c_c (casinh, -0x1.fp-129L, -0x1p-23L, -2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4427     /* Bug 15319: underflow exception may be missing.  */
4428     TEST_c_c (casinh, 0x1p-23L, 0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4429     TEST_c_c (casinh, -0x1p-23L, 0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4430     TEST_c_c (casinh, 0x1p-23L, -0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4431     TEST_c_c (casinh, -0x1p-23L, -0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4432     TEST_c_c (casinh, 0.0L, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L),
4433     TEST_c_c (casinh, 0.0L, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L),
4434     TEST_c_c (casinh, -0.0L, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L),
4435     TEST_c_c (casinh, -0.0L, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L),
4436     TEST_c_c (casinh, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L, 0.0L),
4437     TEST_c_c (casinh, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L, 0.0L),
4438     TEST_c_c (casinh, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L, -0.0L),
4439     TEST_c_c (casinh, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L, -0.0L),
4440     TEST_c_c (casinh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4441     TEST_c_c (casinh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4442     TEST_c_c (casinh, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4443     TEST_c_c (casinh, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4444 #ifndef TEST_FLOAT
4445     TEST_c_c (casinh, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4446     TEST_c_c (casinh, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4447     TEST_c_c (casinh, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4448     TEST_c_c (casinh, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4449     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1p-52L, 8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4450     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1p-52L, -8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4451     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1p-52L, 8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4452     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1p-52L, -8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4453     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4454     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4455     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4456     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4457     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4458     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4459     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4460     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4461     TEST_c_c (casinh, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L),
4462     TEST_c_c (casinh, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L),
4463     TEST_c_c (casinh, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L),
4464     TEST_c_c (casinh, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L),
4465     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L, 0.0L),
4466     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L, 0.0L),
4467     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L, -0.0L),
4468     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L, -0.0L),
4469 #endif
4470     TEST_c_c (casinh, 0x1p-52L, 0.5L, 2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4471     TEST_c_c (casinh, 0x1p-52L, -0.5L, 2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4472     TEST_c_c (casinh, -0x1p-52L, 0.5L, -2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4473     TEST_c_c (casinh, -0x1p-52L, -0.5L, -2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4474     TEST_c_c (casinh, 0.5L, 0x1p-52L, 4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4475     TEST_c_c (casinh, -0.5L, 0x1p-52L, -4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4476     TEST_c_c (casinh, 0.5L, -0x1p-52L, 4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4477     TEST_c_c (casinh, -0.5L, -0x1p-52L, -4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4478 #ifndef TEST_FLOAT
4479     TEST_c_c (casinh, 0x1.fp-1025L, 0.5L, 6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4480     TEST_c_c (casinh, 0x1.fp-1025L, -0.5L, 6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4481     TEST_c_c (casinh, -0x1.fp-1025L, 0.5L, -6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4482     TEST_c_c (casinh, -0x1.fp-1025L, -0.5L, -6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4483     TEST_c_c (casinh, 0.5L, 0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4484     TEST_c_c (casinh, -0.5L, 0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4485     TEST_c_c (casinh, 0.5L, -0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4486     TEST_c_c (casinh, -0.5L, -0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4487 #endif
4488     TEST_c_c (casinh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4489     TEST_c_c (casinh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4490     TEST_c_c (casinh, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4491     TEST_c_c (casinh, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4492 #ifndef TEST_FLOAT
4493     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4494     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4495     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4496     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4497     /* Bug 15319: underflow exception may be missing.  */
4498     TEST_c_c (casinh, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4499     TEST_c_c (casinh, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4500     TEST_c_c (casinh, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4501     TEST_c_c (casinh, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4502 #endif
4503     TEST_c_c (casinh, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L),
4504     TEST_c_c (casinh, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L),
4505     TEST_c_c (casinh, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L),
4506     TEST_c_c (casinh, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L),
4507     TEST_c_c (casinh, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L, 0.0L),
4508     TEST_c_c (casinh, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L, 0.0L),
4509     TEST_c_c (casinh, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L, -0.0L),
4510     TEST_c_c (casinh, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L, -0.0L),
4511 #ifndef TEST_FLOAT
4512     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4513     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4514     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4515     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4516 #endif
4517 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4518     TEST_c_c (casinh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4519     TEST_c_c (casinh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4520     TEST_c_c (casinh, -0x1p-63L, 0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4521     TEST_c_c (casinh, -0x1p-63L, -0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4522     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4523     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1p-63L, -8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4524     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4525     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1p-63L, -8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4526 # if LDBL_MIN_EXP <= -16381
4527     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4528     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4529     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4530     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4531     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4532     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4533     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4534     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4535 # endif
4536     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L),
4537     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L),
4538     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L),
4539     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L),
4540     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L, 0.0L),
4541     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L, 0.0L),
4542     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L, -0.0L),
4543     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L, -0.0L),
4544 #endif
4545     TEST_c_c (casinh, 0x1p-63L, 0.5L, 1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4546     TEST_c_c (casinh, 0x1p-63L, -0.5L, 1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4547     TEST_c_c (casinh, -0x1p-63L, 0.5L, -1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4548     TEST_c_c (casinh, -0x1p-63L, -0.5L, -1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4549     TEST_c_c (casinh, 0.5L, 0x1p-63L, 4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4550     TEST_c_c (casinh, -0.5L, 0x1p-63L, -4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4551     TEST_c_c (casinh, 0.5L, -0x1p-63L, 4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4552     TEST_c_c (casinh, -0.5L, -0x1p-63L, -4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4553 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4554     TEST_c_c (casinh, 0x1.fp-16385L, 0.5L, 9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4555     TEST_c_c (casinh, 0x1.fp-16385L, -0.5L, 9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4556     TEST_c_c (casinh, -0x1.fp-16385L, 0.5L, -9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4557     TEST_c_c (casinh, -0x1.fp-16385L, -0.5L, -9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4558     TEST_c_c (casinh, 0.5L, 0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4559     TEST_c_c (casinh, -0.5L, 0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4560     TEST_c_c (casinh, 0.5L, -0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4561     TEST_c_c (casinh, -0.5L, -0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4562 #endif
4563     TEST_c_c (casinh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4564     TEST_c_c (casinh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4565     TEST_c_c (casinh, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4566     TEST_c_c (casinh, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4567 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4568     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4569     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4570     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4571     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4572     TEST_c_c (casinh, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4573     TEST_c_c (casinh, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4574     TEST_c_c (casinh, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4575     TEST_c_c (casinh, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4576 #endif
4577     TEST_c_c (casinh, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L),
4578     TEST_c_c (casinh, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L),
4579     TEST_c_c (casinh, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L),
4580     TEST_c_c (casinh, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L),
4581     TEST_c_c (casinh, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L, 0.0L),
4582     TEST_c_c (casinh, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L, 0.0L),
4583     TEST_c_c (casinh, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L, -0.0L),
4584     TEST_c_c (casinh, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L, -0.0L),
4585 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4586     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4587     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4588     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4589     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4590 #endif
4591 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4592     TEST_c_c (casinh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4593     TEST_c_c (casinh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4594     TEST_c_c (casinh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4595     TEST_c_c (casinh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4596     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4597     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4598     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4599     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4600     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4601     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4602     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4603     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4604     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4605     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4606     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4607     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4608     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L),
4609     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L),
4610     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L),
4611     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L),
4612     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L, 0.0L),
4613     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L, 0.0L),
4614     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L, -0.0L),
4615     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L, -0.0L),
4616 #endif
4617     TEST_c_c (casinh, 0x1p-105L, 0.5L, 2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4618     TEST_c_c (casinh, 0x1p-105L, -0.5L, 2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4619     TEST_c_c (casinh, -0x1p-105L, 0.5L, -2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4620     TEST_c_c (casinh, -0x1p-105L, -0.5L, -2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4621     TEST_c_c (casinh, 0.5L, 0x1p-105L, 4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4622     TEST_c_c (casinh, -0.5L, 0x1p-105L, -4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4623     TEST_c_c (casinh, 0.5L, -0x1p-105L, 4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4624     TEST_c_c (casinh, -0.5L, -0x1p-105L, -4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4625     TEST_c_c (casinh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4626     TEST_c_c (casinh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4627     TEST_c_c (casinh, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4628     TEST_c_c (casinh, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4629 #ifndef TEST_FLOAT
4630     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4631     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4632     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4633     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4634     /* Bug 15319: underflow exception may be missing.  */
4635     TEST_c_c (casinh, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4636     TEST_c_c (casinh, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4637     TEST_c_c (casinh, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4638     TEST_c_c (casinh, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4639 #endif
4640     TEST_c_c (casinh, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
4641     TEST_c_c (casinh, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
4642     TEST_c_c (casinh, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
4643     TEST_c_c (casinh, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
4644     TEST_c_c (casinh, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
4645     TEST_c_c (casinh, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
4646     TEST_c_c (casinh, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
4647     TEST_c_c (casinh, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
4648 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4649     TEST_c_c (casinh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4650     TEST_c_c (casinh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4651     TEST_c_c (casinh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4652     TEST_c_c (casinh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4653     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4654     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4655     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4656     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4657     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4658     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4659     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4660     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4661     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4662     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4663     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4664     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4665     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L),
4666     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L),
4667     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L),
4668     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L),
4669     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L, 0.0L),
4670     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L, 0.0L),
4671     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L, -0.0L),
4672     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L, -0.0L),
4673 #endif
4674     TEST_c_c (casinh, 0x1p-112L, 0.5L, 2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4675     TEST_c_c (casinh, 0x1p-112L, -0.5L, 2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4676     TEST_c_c (casinh, -0x1p-112L, 0.5L, -2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4677     TEST_c_c (casinh, -0x1p-112L, -0.5L, -2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4678     TEST_c_c (casinh, 0.5L, 0x1p-112L, 4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4679     TEST_c_c (casinh, -0.5L, 0x1p-112L, -4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4680     TEST_c_c (casinh, 0.5L, -0x1p-112L, 4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4681     TEST_c_c (casinh, -0.5L, -0x1p-112L, -4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4682     TEST_c_c (casinh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4683     TEST_c_c (casinh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4684     TEST_c_c (casinh, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4685     TEST_c_c (casinh, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4686 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4687     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4688     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4689     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4690     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4691     TEST_c_c (casinh, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4692     TEST_c_c (casinh, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4693     TEST_c_c (casinh, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4694     TEST_c_c (casinh, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4695 #endif
4696     TEST_c_c (casinh, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
4697     TEST_c_c (casinh, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
4698     TEST_c_c (casinh, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
4699     TEST_c_c (casinh, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
4700     TEST_c_c (casinh, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
4701     TEST_c_c (casinh, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
4702     TEST_c_c (casinh, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
4703     TEST_c_c (casinh, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
4704
4705     TEST_c_c (casinh, 0.75L, 1.25L, 1.03171853444778027336364058631006594L, 0.911738290968487636358489564316731207L),
4706     TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L),
4707     END_DATA (casinh)
4708   };
4709
4710 static void
4711 casinh_test (void)
4712 {
4713   errno = 0;
4714   FUNC(casinh) (BUILD_COMPLEX (0.7L, 1.2L));
4715   if (errno == ENOSYS)
4716     /* Function not implemented.  */
4717     return;
4718
4719   START (casinh);
4720   RUN_TEST_LOOP_c_c (casinh, casinh_test_data, );
4721   END (casinh, complex);
4722 }
4723
4724
4725 static const struct test_c_c_data catan_test_data[] =
4726   {
4727     START_DATA (catan),
4728     TEST_c_c (catan, 0, 0, 0, 0),
4729     TEST_c_c (catan, minus_zero, 0, minus_zero, 0),
4730     TEST_c_c (catan, 0, minus_zero, 0, minus_zero),
4731     TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero),
4732
4733     TEST_c_c (catan, 1.0L, plus_zero, M_PI_4l, plus_zero),
4734     TEST_c_c (catan, 1.0L, minus_zero, M_PI_4l, minus_zero),
4735     TEST_c_c (catan, -1.0L, plus_zero, -M_PI_4l, plus_zero),
4736     TEST_c_c (catan, -1.0L, minus_zero, -M_PI_4l, minus_zero),
4737     TEST_c_c (catan, plus_zero, 1.0L, plus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4738     TEST_c_c (catan, minus_zero, 1.0L, minus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4739     TEST_c_c (catan, plus_zero, -1.0L, plus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4740     TEST_c_c (catan, minus_zero, -1.0L, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4741
4742     TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0),
4743     TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero),
4744     TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0),
4745     TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero),
4746
4747
4748     TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero),
4749     TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero),
4750     TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero),
4751     TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero),
4752     TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0),
4753     TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0),
4754     TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0),
4755     TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0),
4756
4757     TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero),
4758     TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero),
4759     TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero),
4760     TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero),
4761
4762     TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0),
4763     TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0),
4764     TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0),
4765     TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0),
4766
4767     TEST_c_c (catan, qnan_value, 0.0, qnan_value, 0),
4768     TEST_c_c (catan, qnan_value, minus_zero, qnan_value, minus_zero),
4769
4770     TEST_c_c (catan, qnan_value, plus_infty, qnan_value, 0),
4771     TEST_c_c (catan, qnan_value, minus_infty, qnan_value, minus_zero),
4772
4773     TEST_c_c (catan, 0.0, qnan_value, qnan_value, qnan_value),
4774     TEST_c_c (catan, minus_zero, qnan_value, qnan_value, qnan_value),
4775
4776     TEST_c_c (catan, plus_infty, qnan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4777     TEST_c_c (catan, minus_infty, qnan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4778
4779     TEST_c_c (catan, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4780     TEST_c_c (catan, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4781
4782     TEST_c_c (catan, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4783     TEST_c_c (catan, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4784
4785     TEST_c_c (catan, qnan_value, qnan_value, qnan_value, qnan_value),
4786
4787     TEST_c_c (catan, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L, 0.0L),
4788     TEST_c_c (catan, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L, -0.0L),
4789     TEST_c_c (catan, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L, 0.0L),
4790     TEST_c_c (catan, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L, -0.0L),
4791     TEST_c_c (catan, 0.0L, 0x1p50L, 1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4792     TEST_c_c (catan, -0.0L, 0x1p50L, -1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4793     TEST_c_c (catan, 0.0L, -0x1p50L, 1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4794     TEST_c_c (catan, -0.0L, -0x1p50L, -1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4795 #ifndef TEST_FLOAT
4796     TEST_c_c (catan, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4797     TEST_c_c (catan, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4798     TEST_c_c (catan, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4799     TEST_c_c (catan, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4800     TEST_c_c (catan, 0.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4801     TEST_c_c (catan, -0.0L, 0x1p500L, -1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4802     TEST_c_c (catan, 0.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4803     TEST_c_c (catan, -0.0L, -0x1p500L, -1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4804 #endif
4805 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4806     TEST_c_c (catan, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4807     TEST_c_c (catan, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4808     TEST_c_c (catan, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4809     TEST_c_c (catan, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4810     TEST_c_c (catan, 0.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4811     TEST_c_c (catan, -0.0L, 0x1p5000L, -1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4812     TEST_c_c (catan, 0.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4813     TEST_c_c (catan, -0.0L, -0x1p5000L, -1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4814 #endif
4815     TEST_c_c (catan, 0x1p63L, 0.5L, 1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4816     TEST_c_c (catan, 0x1p63L, -0.5L, 1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4817     TEST_c_c (catan, -0x1p63L, 0.5L, -1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4818     TEST_c_c (catan, -0x1p63L, -0.5L, -1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4819     TEST_c_c (catan, 0.5L, 0x1p63L, 1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4820     TEST_c_c (catan, -0.5L, 0x1p63L, -1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4821     TEST_c_c (catan, 0.5L, -0x1p63L, 1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4822     TEST_c_c (catan, -0.5L, -0x1p63L, -1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4823 #ifndef TEST_FLOAT
4824     TEST_c_c (catan, 0x1p511L, 0.5L, 1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4825     TEST_c_c (catan, 0x1p511L, -0.5L, 1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4826     TEST_c_c (catan, -0x1p511L, 0.5L, -1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4827     TEST_c_c (catan, -0x1p511L, -0.5L, -1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4828     TEST_c_c (catan, 0.5L, 0x1p511L, 1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4829     TEST_c_c (catan, -0.5L, 0x1p511L, -1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4830     TEST_c_c (catan, 0.5L, -0x1p511L, 1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4831     TEST_c_c (catan, -0.5L, -0x1p511L, -1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4832 #endif
4833 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4834     TEST_c_c (catan, 0x1p8191L, 0.5L, 1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4835     TEST_c_c (catan, 0x1p8191L, -0.5L, 1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4836     TEST_c_c (catan, -0x1p8191L, 0.5L, -1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4837     TEST_c_c (catan, -0x1p8191L, -0.5L, -1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4838     TEST_c_c (catan, 0.5L, 0x1p8191L, 1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4839     TEST_c_c (catan, -0.5L, 0x1p8191L, -1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4840     TEST_c_c (catan, 0.5L, -0x1p8191L, 1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4841     TEST_c_c (catan, -0.5L, -0x1p8191L, -1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4842 #endif
4843     TEST_c_c (catan, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L, 0.0L),
4844     TEST_c_c (catan, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L, -0.0L),
4845     TEST_c_c (catan, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L, 0.0L),
4846     TEST_c_c (catan, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L, -0.0L),
4847     TEST_c_c (catan, 0.0L, 0x1p100L, 1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4848     TEST_c_c (catan, -0.0L, 0x1p100L, -1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4849     TEST_c_c (catan, 0.0L, -0x1p100L, 1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4850     TEST_c_c (catan, -0.0L, -0x1p100L, -1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4851     TEST_c_c (catan, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L, 0.0L),
4852     TEST_c_c (catan, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L, -0.0L),
4853     TEST_c_c (catan, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L, 0.0L),
4854     TEST_c_c (catan, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L, -0.0L),
4855     TEST_c_c (catan, 0.0L, 0x1.fp127L, 1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4856     TEST_c_c (catan, -0.0L, 0x1.fp127L, -1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4857     TEST_c_c (catan, 0.0L, -0x1.fp127L, 1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4858     TEST_c_c (catan, -0.0L, -0x1.fp127L, -1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4859     TEST_c_c (catan, 0x1.fp127L, 0x1.fp127L, 1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4860     TEST_c_c (catan, 0x1.fp127L, -0x1.fp127L, 1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4861     TEST_c_c (catan, -0x1.fp127L, 0x1.fp127L, -1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4862     TEST_c_c (catan, -0x1.fp127L, -0x1.fp127L, -1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4863 #ifndef TEST_FLOAT
4864     TEST_c_c (catan, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4865     TEST_c_c (catan, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4866     TEST_c_c (catan, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4867     TEST_c_c (catan, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4868     TEST_c_c (catan, 0.0L, 0x1p900L, 1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4869     TEST_c_c (catan, -0.0L, 0x1p900L, -1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4870     TEST_c_c (catan, 0.0L, -0x1p900L, 1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4871     TEST_c_c (catan, -0.0L, -0x1p900L, -1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4872     TEST_c_c (catan, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4873     TEST_c_c (catan, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4874     TEST_c_c (catan, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4875     TEST_c_c (catan, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4876     TEST_c_c (catan, 0.0L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4877     TEST_c_c (catan, -0.0L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4878     TEST_c_c (catan, 0.0L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4879     TEST_c_c (catan, -0.0L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4880     TEST_c_c (catan, 0x1.fp1023L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4881     TEST_c_c (catan, 0x1.fp1023L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4882     TEST_c_c (catan, -0x1.fp1023L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4883     TEST_c_c (catan, -0x1.fp1023L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4884 #endif
4885 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4886     TEST_c_c (catan, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4887     TEST_c_c (catan, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4888     TEST_c_c (catan, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4889     TEST_c_c (catan, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4890     TEST_c_c (catan, 0.0L, 0x1p10000L, 1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4891     TEST_c_c (catan, -0.0L, 0x1p10000L, -1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4892     TEST_c_c (catan, 0.0L, -0x1p10000L, 1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4893     TEST_c_c (catan, -0.0L, -0x1p10000L, -1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4894     TEST_c_c (catan, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4895     TEST_c_c (catan, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4896     TEST_c_c (catan, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4897     TEST_c_c (catan, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4898     TEST_c_c (catan, 0.0L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4899     TEST_c_c (catan, -0.0L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4900     TEST_c_c (catan, 0.0L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4901     TEST_c_c (catan, -0.0L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4902     TEST_c_c (catan, 0x1.fp16383L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4903     TEST_c_c (catan, 0x1.fp16383L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4904     TEST_c_c (catan, -0x1.fp16383L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4905     TEST_c_c (catan, -0x1.fp16383L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4906 #endif
4907     TEST_c_c (catan, 0x1p-13L, 1.0L, 7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4908     TEST_c_c (catan, 0x1p-13L, -1.0L, 7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4909     TEST_c_c (catan, -0x1p-13L, 1.0L, -7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4910     TEST_c_c (catan, -0x1p-13L, -1.0L, -7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4911     TEST_c_c (catan, 1.0L, 0x1p-13L, 7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4912     TEST_c_c (catan, -1.0L, 0x1p-13L, -7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4913     TEST_c_c (catan, 1.0L, -0x1p-13L, 7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4914     TEST_c_c (catan, -1.0L, -0x1p-13L, -7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4915     TEST_c_c (catan, 0x1p-27L, 1.0L, 7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4916     TEST_c_c (catan, 0x1p-27L, -1.0L, 7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4917     TEST_c_c (catan, -0x1p-27L, 1.0L, -7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4918     TEST_c_c (catan, -0x1p-27L, -1.0L, -7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4919     TEST_c_c (catan, 1.0L, 0x1p-27L, 7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4920     TEST_c_c (catan, -1.0L, 0x1p-27L, -7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4921     TEST_c_c (catan, 1.0L, -0x1p-27L, 7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4922     TEST_c_c (catan, -1.0L, -0x1p-27L, -7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4923     TEST_c_c (catan, 0x1p-33L, 1.0L, 7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4924     TEST_c_c (catan, 0x1p-33L, -1.0L, 7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4925     TEST_c_c (catan, -0x1p-33L, 1.0L, -7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4926     TEST_c_c (catan, -0x1p-33L, -1.0L, -7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4927     TEST_c_c (catan, 1.0L, 0x1p-33L, 7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4928     TEST_c_c (catan, -1.0L, 0x1p-33L, -7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4929     TEST_c_c (catan, 1.0L, -0x1p-33L, 7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4930     TEST_c_c (catan, -1.0L, -0x1p-33L, -7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4931     TEST_c_c (catan, 0x1p-54L, 1.0L, 7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4932     TEST_c_c (catan, 0x1p-54L, -1.0L, 7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4933     TEST_c_c (catan, -0x1p-54L, 1.0L, -7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4934     TEST_c_c (catan, -0x1p-54L, -1.0L, -7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4935     TEST_c_c (catan, 1.0L, 0x1p-54L, 7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4936     TEST_c_c (catan, -1.0L, 0x1p-54L, -7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4937     TEST_c_c (catan, 1.0L, -0x1p-54L, 7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4938     TEST_c_c (catan, -1.0L, -0x1p-54L, -7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4939     TEST_c_c (catan, 0x1p-57L, 1.0L, 7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4940     TEST_c_c (catan, 0x1p-57L, -1.0L, 7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4941     TEST_c_c (catan, -0x1p-57L, 1.0L, -7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4942     TEST_c_c (catan, -0x1p-57L, -1.0L, -7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4943     TEST_c_c (catan, 1.0L, 0x1p-57L, 7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4944     TEST_c_c (catan, -1.0L, 0x1p-57L, -7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4945     TEST_c_c (catan, 1.0L, -0x1p-57L, 7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4946     TEST_c_c (catan, -1.0L, -0x1p-57L, -7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4947     TEST_c_c (catan, 0x1p-13L, 0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4948     TEST_c_c (catan, 0x1p-13L, -0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4949     TEST_c_c (catan, -0x1p-13L, 0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4950     TEST_c_c (catan, -0x1p-13L, -0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4951     TEST_c_c (catan, 0x1.000002p0L, 0x1p-13L, 7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4952     TEST_c_c (catan, -0x1.000002p0L, 0x1p-13L, -7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4953     TEST_c_c (catan, 0x1.000002p0L, -0x1p-13L, 7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4954     TEST_c_c (catan, -0x1.000002p0L, -0x1p-13L, -7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4955     TEST_c_c (catan, 0x1p-13L, 0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4956     TEST_c_c (catan, 0x1p-13L, -0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4957     TEST_c_c (catan, -0x1p-13L, 0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4958     TEST_c_c (catan, -0x1p-13L, -0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4959     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-13L, 7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4960     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-13L, -7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4961     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-13L, 7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4962     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-13L, -7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4963 #ifndef TEST_FLOAT
4964     TEST_c_c (catan, 0x1p-27L, 0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4965     TEST_c_c (catan, 0x1p-27L, -0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4966     TEST_c_c (catan, -0x1p-27L, 0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4967     TEST_c_c (catan, -0x1p-27L, -0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4968     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-27L, 7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4969     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-27L, -7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4970     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-27L, 7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4971     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-27L, -7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4972     TEST_c_c (catan, 0x1p-27L, 0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4973     TEST_c_c (catan, 0x1p-27L, -0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4974     TEST_c_c (catan, -0x1p-27L, 0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4975     TEST_c_c (catan, -0x1p-27L, -0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4976     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-27L, 7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4977     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-27L, -7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4978     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-27L, 7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4979     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-27L, -7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4980 #endif
4981 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4982     TEST_c_c (catan, 0x1p-33L, 0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
4983     TEST_c_c (catan, 0x1p-33L, -0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
4984     TEST_c_c (catan, -0x1p-33L, 0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
4985     TEST_c_c (catan, -0x1p-33L, -0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
4986     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-33L, 7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
4987     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-33L, -7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
4988     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-33L, 7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
4989     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-33L, -7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
4990     TEST_c_c (catan, 0x1p-33L, 0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
4991     TEST_c_c (catan, 0x1p-33L, -0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
4992     TEST_c_c (catan, -0x1p-33L, 0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
4993     TEST_c_c (catan, -0x1p-33L, -0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
4994     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-33L, 7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
4995     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-33L, -7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
4996     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-33L, 7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
4997     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-33L, -7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
4998 #endif
4999 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5000     TEST_c_c (catan, 0x1p-54L, 0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
5001     TEST_c_c (catan, 0x1p-54L, -0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
5002     TEST_c_c (catan, -0x1p-54L, 0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
5003     TEST_c_c (catan, -0x1p-54L, -0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
5004     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-54L, 7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
5005     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-54L, -7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
5006     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-54L, 7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
5007     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-54L, -7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
5008     TEST_c_c (catan, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
5009     TEST_c_c (catan, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
5010     TEST_c_c (catan, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
5011     TEST_c_c (catan, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
5012     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
5013     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
5014     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
5015     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
5016 #endif
5017 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5018     TEST_c_c (catan, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
5019     TEST_c_c (catan, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
5020     TEST_c_c (catan, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
5021     TEST_c_c (catan, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
5022     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
5023     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
5024     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
5025     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
5026     TEST_c_c (catan, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
5027     TEST_c_c (catan, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
5028     TEST_c_c (catan, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
5029     TEST_c_c (catan, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
5030     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
5031     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
5032     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
5033     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
5034 #endif
5035     TEST_c_c (catan, 1.0L, 0x1p-64L, 7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
5036     TEST_c_c (catan, 1.0L, -0x1p-64L, 7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
5037     TEST_c_c (catan, -1.0L, 0x1p-64L, -7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
5038     TEST_c_c (catan, -1.0L, -0x1p-64L, -7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
5039     TEST_c_c (catan, 0x1p-64L, 1.0L, 7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
5040     TEST_c_c (catan, -0x1p-64L, 1.0L, -7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
5041     TEST_c_c (catan, 0x1p-64L, -1.0L, 7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
5042     TEST_c_c (catan, -0x1p-64L, -1.0L, -7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
5043     TEST_c_c (catan, 1.0L, 0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
5044     TEST_c_c (catan, 1.0L, -0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
5045     TEST_c_c (catan, -1.0L, 0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
5046     TEST_c_c (catan, -1.0L, -0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
5047     TEST_c_c (catan, 0x1.3p-73L, 1.0L, 7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
5048     TEST_c_c (catan, -0x1.3p-73L, 1.0L, -7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
5049     TEST_c_c (catan, 0x1.3p-73L, -1.0L, 7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
5050     TEST_c_c (catan, -0x1.3p-73L, -1.0L, -7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
5051     TEST_c_c (catan, 1.0L, 0x1p-124L, 7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
5052     TEST_c_c (catan, 1.0L, -0x1p-124L, 7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
5053     TEST_c_c (catan, -1.0L, 0x1p-124L, -7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
5054     TEST_c_c (catan, -1.0L, -0x1p-124L, -7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
5055     TEST_c_c (catan, 0x1p-124L, 1.0L, 7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
5056     TEST_c_c (catan, -0x1p-124L, 1.0L, -7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
5057     TEST_c_c (catan, 0x1p-124L, -1.0L, 7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
5058     TEST_c_c (catan, -0x1p-124L, -1.0L, -7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
5059     TEST_c_c (catan, 0x1.000002p0L, 0x1p-126L, 7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5060     TEST_c_c (catan, 0x1.000002p0L, -0x1p-126L, 7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5061     TEST_c_c (catan, -0x1.000002p0L, 0x1p-126L, -7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5062     TEST_c_c (catan, -0x1.000002p0L, -0x1p-126L, -7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5063     TEST_c_c (catan, 0x1p-126L, 0x1.000002p0L, 1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
5064     TEST_c_c (catan, -0x1p-126L, 0x1.000002p0L, -1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
5065     TEST_c_c (catan, 0x1p-126L, -0x1.000002p0L, 1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
5066     TEST_c_c (catan, -0x1p-126L, -0x1.000002p0L, -1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
5067     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-126L, 7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5068     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-126L, 7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5069     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-126L, -7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5070     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-126L, -7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5071     TEST_c_c (catan, 0x1p-126L, 0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
5072     TEST_c_c (catan, -0x1p-126L, 0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
5073     TEST_c_c (catan, 0x1p-126L, -0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
5074     TEST_c_c (catan, -0x1p-126L, -0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
5075 #ifndef TEST_FLOAT
5076     TEST_c_c (catan, 1.0L, 0x1p-512L, 7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
5077     TEST_c_c (catan, 1.0L, -0x1p-512L, 7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
5078     TEST_c_c (catan, -1.0L, 0x1p-512L, -7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
5079     TEST_c_c (catan, -1.0L, -0x1p-512L, -7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
5080     TEST_c_c (catan, 0x1p-512L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
5081     TEST_c_c (catan, -0x1p-512L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
5082     TEST_c_c (catan, 0x1p-512L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
5083     TEST_c_c (catan, -0x1p-512L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
5084     TEST_c_c (catan, 1.0L, 0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
5085     TEST_c_c (catan, 1.0L, -0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
5086     TEST_c_c (catan, -1.0L, 0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
5087     TEST_c_c (catan, -1.0L, -0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
5088     TEST_c_c (catan, 0x1.3p-536L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
5089     TEST_c_c (catan, -0x1.3p-536L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
5090     TEST_c_c (catan, 0x1.3p-536L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
5091     TEST_c_c (catan, -0x1.3p-536L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
5092     TEST_c_c (catan, 1.0L, 0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5093     TEST_c_c (catan, 1.0L, -0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5094     TEST_c_c (catan, -1.0L, 0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5095     TEST_c_c (catan, -1.0L, -0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5096     TEST_c_c (catan, 0x1p-1020L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
5097     TEST_c_c (catan, -0x1p-1020L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
5098     TEST_c_c (catan, 0x1p-1020L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
5099     TEST_c_c (catan, -0x1p-1020L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
5100     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5101     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5102     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5103     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5104     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
5105     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
5106     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
5107     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
5108     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5109     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5110     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5111     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5112     TEST_c_c (catan, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5113     TEST_c_c (catan, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5114     TEST_c_c (catan, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5115     TEST_c_c (catan, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5116 #endif
5117 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5118     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5119     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5120     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5121     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5122     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5123     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5124     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5125     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5126     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5127     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5128     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5129     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5130     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5131     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5132     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5133     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5134 #endif
5135 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5136     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5137     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5138     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5139     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5140     TEST_c_c (catan, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5141     TEST_c_c (catan, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5142     TEST_c_c (catan, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5143     TEST_c_c (catan, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5144     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5145     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5146     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5147     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5148     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5149     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5150     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5151     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5152 #endif
5153 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5154     TEST_c_c (catan, 1.0L, 0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5155     TEST_c_c (catan, 1.0L, -0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5156     TEST_c_c (catan, -1.0L, 0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5157     TEST_c_c (catan, -1.0L, -0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5158     TEST_c_c (catan, 0x1p-8192L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5159     TEST_c_c (catan, -0x1p-8192L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5160     TEST_c_c (catan, 0x1p-8192L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5161     TEST_c_c (catan, -0x1p-8192L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5162     TEST_c_c (catan, 1.0L, 0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5163     TEST_c_c (catan, 1.0L, -0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5164     TEST_c_c (catan, -1.0L, 0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5165     TEST_c_c (catan, -1.0L, -0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5166     TEST_c_c (catan, 0x1.3p-8221L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5167     TEST_c_c (catan, -0x1.3p-8221L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5168     TEST_c_c (catan, 0x1.3p-8221L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5169     TEST_c_c (catan, -0x1.3p-8221L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5170     TEST_c_c (catan, 1.0L, 0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5171     TEST_c_c (catan, 1.0L, -0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5172     TEST_c_c (catan, -1.0L, 0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5173     TEST_c_c (catan, -1.0L, -0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5174     TEST_c_c (catan, 0x1.3p-8246L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5175     TEST_c_c (catan, -0x1.3p-8246L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5176     TEST_c_c (catan, 0x1.3p-8246L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5177     TEST_c_c (catan, -0x1.3p-8246L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5178     TEST_c_c (catan, 1.0L, 0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5179     TEST_c_c (catan, 1.0L, -0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5180     TEST_c_c (catan, -1.0L, 0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5181     TEST_c_c (catan, -1.0L, -0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5182     TEST_c_c (catan, 0x1p-16380L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5183     TEST_c_c (catan, -0x1p-16380L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5184     TEST_c_c (catan, 0x1p-16380L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5185     TEST_c_c (catan, -0x1p-16380L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5186     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5187     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5188     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5189     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5190     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5191     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5192     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5193     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5194     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5195     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5196     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5197     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5198     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5199     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5200     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5201     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5202 # if LDBL_MANT_DIG >= 113
5203     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5204     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5205     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5206     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5207     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5208     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5209     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5210     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5211     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5212     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5213     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5214     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5215     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5216     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5217     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5218     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5219 # endif
5220 #endif
5221
5222     TEST_c_c (catan, 0.75L, 1.25L, 1.10714871779409050301706546017853704L, 0.549306144334054845697622618461262852L),
5223     TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L),
5224     END_DATA (catan)
5225   };
5226
5227 static void
5228 catan_test (void)
5229 {
5230   errno = 0;
5231   FUNC(catan) (BUILD_COMPLEX (0.7L, 1.2L));
5232   if (errno == ENOSYS)
5233     /* Function not implemented.  */
5234     return;
5235
5236   START (catan);
5237   RUN_TEST_LOOP_c_c (catan, catan_test_data, );
5238   END (catan, complex);
5239 }
5240
5241 static const struct test_c_c_data catanh_test_data[] =
5242   {
5243     START_DATA (catanh),
5244     TEST_c_c (catanh, 0, 0, 0.0, 0.0),
5245     TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0),
5246     TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero),
5247     TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero),
5248
5249     TEST_c_c (catanh, 1.0L, plus_zero, plus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5250     TEST_c_c (catanh, 1.0L, minus_zero, plus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5251     TEST_c_c (catanh, -1.0L, plus_zero, minus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5252     TEST_c_c (catanh, -1.0L, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5253     TEST_c_c (catanh, plus_zero, 1.0L, plus_zero, M_PI_4l),
5254     TEST_c_c (catanh, minus_zero, 1.0L, minus_zero, M_PI_4l),
5255     TEST_c_c (catanh, plus_zero, -1.0L, plus_zero, -M_PI_4l),
5256     TEST_c_c (catanh, minus_zero, -1.0L, minus_zero, -M_PI_4l),
5257
5258     TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l),
5259     TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l),
5260     TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l),
5261     TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l),
5262
5263     TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l),
5264     TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l),
5265     TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l),
5266     TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l),
5267     TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l),
5268     TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l),
5269     TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l),
5270     TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l),
5271
5272     TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l),
5273     TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l),
5274     TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l),
5275     TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l),
5276
5277     TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l),
5278     TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l),
5279     TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l),
5280     TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l),
5281
5282     TEST_c_c (catanh, 0, qnan_value, 0.0, qnan_value),
5283     TEST_c_c (catanh, minus_zero, qnan_value, minus_zero, qnan_value),
5284
5285     TEST_c_c (catanh, plus_infty, qnan_value, 0.0, qnan_value),
5286     TEST_c_c (catanh, minus_infty, qnan_value, minus_zero, qnan_value),
5287
5288     TEST_c_c (catanh, qnan_value, 0, qnan_value, qnan_value),
5289     TEST_c_c (catanh, qnan_value, minus_zero, qnan_value, qnan_value),
5290
5291     TEST_c_c (catanh, qnan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN),
5292     TEST_c_c (catanh, qnan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN),
5293
5294     TEST_c_c (catanh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5295     TEST_c_c (catanh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5296
5297     TEST_c_c (catanh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5298     TEST_c_c (catanh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5299
5300     TEST_c_c (catanh, qnan_value, qnan_value, qnan_value, qnan_value),
5301
5302     TEST_c_c (catanh, 0x1p50L, 0.0L, 8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5303     TEST_c_c (catanh, 0x1p50L, -0.0L, 8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5304     TEST_c_c (catanh, -0x1p50L, 0.0L, -8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5305     TEST_c_c (catanh, -0x1p50L, -0.0L, -8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5306     TEST_c_c (catanh, 0.0L, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L),
5307     TEST_c_c (catanh, -0.0L, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L),
5308     TEST_c_c (catanh, 0.0L, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L),
5309     TEST_c_c (catanh, -0.0L, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L),
5310 #ifndef TEST_FLOAT
5311     TEST_c_c (catanh, 0x1p500L, 0.0L, 3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5312     TEST_c_c (catanh, 0x1p500L, -0.0L, 3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5313     TEST_c_c (catanh, -0x1p500L, 0.0L, -3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5314     TEST_c_c (catanh, -0x1p500L, -0.0L, -3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5315     TEST_c_c (catanh, 0.0L, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L),
5316     TEST_c_c (catanh, -0.0L, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L),
5317     TEST_c_c (catanh, 0.0L, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L),
5318     TEST_c_c (catanh, -0.0L, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L),
5319 #endif
5320 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5321     TEST_c_c (catanh, 0x1p5000L, 0.0L, 7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5322     TEST_c_c (catanh, 0x1p5000L, -0.0L, 7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5323     TEST_c_c (catanh, -0x1p5000L, 0.0L, -7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5324     TEST_c_c (catanh, -0x1p5000L, -0.0L, -7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5325     TEST_c_c (catanh, 0.0L, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L),
5326     TEST_c_c (catanh, -0.0L, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L),
5327     TEST_c_c (catanh, 0.0L, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L),
5328     TEST_c_c (catanh, -0.0L, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L),
5329 #endif
5330     TEST_c_c (catanh, 0x1p63L, 0.5L, 1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5331     TEST_c_c (catanh, 0x1p63L, -0.5L, 1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5332     TEST_c_c (catanh, -0x1p63L, 0.5L, -1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5333     TEST_c_c (catanh, -0x1p63L, -0.5L, -1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5334     TEST_c_c (catanh, 0.5L, 0x1p63L, 5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5335     TEST_c_c (catanh, -0.5L, 0x1p63L, -5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5336     TEST_c_c (catanh, 0.5L, -0x1p63L, 5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5337     TEST_c_c (catanh, -0.5L, -0x1p63L, -5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5338 #ifndef TEST_FLOAT
5339     TEST_c_c (catanh, 0x1p511L, 0.5L, 1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5340     TEST_c_c (catanh, 0x1p511L, -0.5L, 1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5341     TEST_c_c (catanh, -0x1p511L, 0.5L, -1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5342     TEST_c_c (catanh, -0x1p511L, -0.5L, -1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5343     TEST_c_c (catanh, 0.5L, 0x1p511L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5344     TEST_c_c (catanh, -0.5L, 0x1p511L, -1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5345     TEST_c_c (catanh, 0.5L, -0x1p511L, 1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5346     TEST_c_c (catanh, -0.5L, -0x1p511L, -1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5347 #endif
5348 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5349     TEST_c_c (catanh, 0x1p8191L, 0.5L, 1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5350     TEST_c_c (catanh, 0x1p8191L, -0.5L, 1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5351     TEST_c_c (catanh, -0x1p8191L, 0.5L, -1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5352     TEST_c_c (catanh, -0x1p8191L, -0.5L, -1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5353     TEST_c_c (catanh, 0.5L, 0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5354     TEST_c_c (catanh, -0.5L, 0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5355     TEST_c_c (catanh, 0.5L, -0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5356     TEST_c_c (catanh, -0.5L, -0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5357 #endif
5358     TEST_c_c (catanh, 0x1p100L, 0.0L, 7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5359     TEST_c_c (catanh, 0x1p100L, -0.0L, 7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5360     TEST_c_c (catanh, -0x1p100L, 0.0L, -7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5361     TEST_c_c (catanh, -0x1p100L, -0.0L, -7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5362     TEST_c_c (catanh, 0.0L, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L),
5363     TEST_c_c (catanh, -0.0L, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L),
5364     TEST_c_c (catanh, 0.0L, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L),
5365     TEST_c_c (catanh, -0.0L, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L),
5366     TEST_c_c (catanh, 0x1.fp127L, 0.0L, 3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5367     TEST_c_c (catanh, 0x1.fp127L, -0.0L, 3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5368     TEST_c_c (catanh, -0x1.fp127L, 0.0L, -3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5369     TEST_c_c (catanh, -0x1.fp127L, -0.0L, -3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5370     TEST_c_c (catanh, 0.0L, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L),
5371     TEST_c_c (catanh, -0.0L, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L),
5372     TEST_c_c (catanh, 0.0L, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L),
5373     TEST_c_c (catanh, -0.0L, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L),
5374     TEST_c_c (catanh, 0x1.fp127L, 0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5375     TEST_c_c (catanh, 0x1.fp127L, -0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5376     TEST_c_c (catanh, -0x1.fp127L, 0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5377     TEST_c_c (catanh, -0x1.fp127L, -0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5378 #ifndef TEST_FLOAT
5379     TEST_c_c (catanh, 0x1p900L, 0.0L, 1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5380     TEST_c_c (catanh, 0x1p900L, -0.0L, 1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5381     TEST_c_c (catanh, -0x1p900L, 0.0L, -1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5382     TEST_c_c (catanh, -0x1p900L, -0.0L, -1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5383     TEST_c_c (catanh, 0.0L, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L),
5384     TEST_c_c (catanh, -0.0L, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L),
5385     TEST_c_c (catanh, 0.0L, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L),
5386     TEST_c_c (catanh, -0.0L, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L),
5387     TEST_c_c (catanh, 0x1.fp1023L, 0.0L, 5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5388     TEST_c_c (catanh, 0x1.fp1023L, -0.0L, 5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5389     TEST_c_c (catanh, -0x1.fp1023L, 0.0L, -5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5390     TEST_c_c (catanh, -0x1.fp1023L, -0.0L, -5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5391     TEST_c_c (catanh, 0.0L, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L),
5392     TEST_c_c (catanh, -0.0L, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L),
5393     TEST_c_c (catanh, 0.0L, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L),
5394     TEST_c_c (catanh, -0.0L, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L),
5395     TEST_c_c (catanh, 0x1.fp1023L, 0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5396     TEST_c_c (catanh, 0x1.fp1023L, -0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5397     TEST_c_c (catanh, -0x1.fp1023L, 0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5398     TEST_c_c (catanh, -0x1.fp1023L, -0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5399 #endif
5400 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5401     TEST_c_c (catanh, 0x1p10000L, 0.0L, 5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5402     TEST_c_c (catanh, 0x1p10000L, -0.0L, 5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5403     TEST_c_c (catanh, -0x1p10000L, 0.0L, -5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5404     TEST_c_c (catanh, -0x1p10000L, -0.0L, -5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5405     TEST_c_c (catanh, 0.0L, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L),
5406     TEST_c_c (catanh, -0.0L, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L),
5407     TEST_c_c (catanh, 0.0L, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L),
5408     TEST_c_c (catanh, -0.0L, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L),
5409     TEST_c_c (catanh, 0x1.fp16383L, 0.0L, 8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5410     TEST_c_c (catanh, 0x1.fp16383L, -0.0L, 8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5411     TEST_c_c (catanh, -0x1.fp16383L, 0.0L, -8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5412     TEST_c_c (catanh, -0x1.fp16383L, -0.0L, -8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5413     TEST_c_c (catanh, 0.0L, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L),
5414     TEST_c_c (catanh, -0.0L, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L),
5415     TEST_c_c (catanh, 0.0L, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L),
5416     TEST_c_c (catanh, -0.0L, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L),
5417     TEST_c_c (catanh, 0x1.fp16383L, 0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5418     TEST_c_c (catanh, 0x1.fp16383L, -0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5419     TEST_c_c (catanh, -0x1.fp16383L, 0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5420     TEST_c_c (catanh, -0x1.fp16383L, -0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5421 #endif
5422     TEST_c_c (catanh, 0x1p-13L, 1.0L, 6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5423     TEST_c_c (catanh, 0x1p-13L, -1.0L, 6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5424     TEST_c_c (catanh, -0x1p-13L, 1.0L, -6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5425     TEST_c_c (catanh, -0x1p-13L, -1.0L, -6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5426     TEST_c_c (catanh, 1.0L, 0x1p-13L, 4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5427     TEST_c_c (catanh, -1.0L, 0x1p-13L, -4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5428     TEST_c_c (catanh, 1.0L, -0x1p-13L, 4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5429     TEST_c_c (catanh, -1.0L, -0x1p-13L, -4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5430     TEST_c_c (catanh, 0x1p-27L, 1.0L, 3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5431     TEST_c_c (catanh, 0x1p-27L, -1.0L, 3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5432     TEST_c_c (catanh, -0x1p-27L, 1.0L, -3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5433     TEST_c_c (catanh, -0x1p-27L, -1.0L, -3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5434     TEST_c_c (catanh, 1.0L, 0x1p-27L, 9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5435     TEST_c_c (catanh, -1.0L, 0x1p-27L, -9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5436     TEST_c_c (catanh, 1.0L, -0x1p-27L, 9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5437     TEST_c_c (catanh, -1.0L, -0x1p-27L, -9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5438     TEST_c_c (catanh, 0x1p-33L, 1.0L, 5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5439     TEST_c_c (catanh, 0x1p-33L, -1.0L, 5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5440     TEST_c_c (catanh, -0x1p-33L, 1.0L, -5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5441     TEST_c_c (catanh, -0x1p-33L, -1.0L, -5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5442     TEST_c_c (catanh, 1.0L, 0x1p-33L, 1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5443     TEST_c_c (catanh, -1.0L, 0x1p-33L, -1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5444     TEST_c_c (catanh, 1.0L, -0x1p-33L, 1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5445     TEST_c_c (catanh, -1.0L, -0x1p-33L, -1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5446     TEST_c_c (catanh, 0x1p-54L, 1.0L, 2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5447     TEST_c_c (catanh, 0x1p-54L, -1.0L, 2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5448     TEST_c_c (catanh, -0x1p-54L, 1.0L, -2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5449     TEST_c_c (catanh, -0x1p-54L, -1.0L, -2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5450     TEST_c_c (catanh, 1.0L, 0x1p-54L, 1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5451     TEST_c_c (catanh, -1.0L, 0x1p-54L, -1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5452     TEST_c_c (catanh, 1.0L, -0x1p-54L, 1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5453     TEST_c_c (catanh, -1.0L, -0x1p-54L, -1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5454     TEST_c_c (catanh, 0x1p-57L, 1.0L, 3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5455     TEST_c_c (catanh, 0x1p-57L, -1.0L, 3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5456     TEST_c_c (catanh, -0x1p-57L, 1.0L, -3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5457     TEST_c_c (catanh, -0x1p-57L, -1.0L, -3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5458     TEST_c_c (catanh, 1.0L, 0x1p-57L, 2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5459     TEST_c_c (catanh, -1.0L, 0x1p-57L, -2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5460     TEST_c_c (catanh, 1.0L, -0x1p-57L, 2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5461     TEST_c_c (catanh, -1.0L, -0x1p-57L, -2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5462     TEST_c_c (catanh, 0x1p-13L, 0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5463     TEST_c_c (catanh, 0x1p-13L, -0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5464     TEST_c_c (catanh, -0x1p-13L, 0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5465     TEST_c_c (catanh, -0x1p-13L, -0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5466     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-13L, 4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5467     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-13L, -4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5468     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-13L, 4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5469     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-13L, -4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5470     TEST_c_c (catanh, 0x1p-13L, 0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5471     TEST_c_c (catanh, 0x1p-13L, -0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5472     TEST_c_c (catanh, -0x1p-13L, 0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5473     TEST_c_c (catanh, -0x1p-13L, -0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5474     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-13L, 4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5475     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-13L, -4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5476     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-13L, 4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5477     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-13L, -4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5478 #ifndef TEST_FLOAT
5479     TEST_c_c (catanh, 0x1p-27L, 0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5480     TEST_c_c (catanh, 0x1p-27L, -0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5481     TEST_c_c (catanh, -0x1p-27L, 0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5482     TEST_c_c (catanh, -0x1p-27L, -0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5483     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-27L, 9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5484     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-27L, -9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5485     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-27L, 9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5486     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-27L, -9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5487     TEST_c_c (catanh, 0x1p-27L, 0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5488     TEST_c_c (catanh, 0x1p-27L, -0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5489     TEST_c_c (catanh, -0x1p-27L, 0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5490     TEST_c_c (catanh, -0x1p-27L, -0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5491     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-27L, 9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5492     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-27L, -9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5493     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-27L, 9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5494     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-27L, -9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5495 #endif
5496 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5497     TEST_c_c (catanh, 0x1p-33L, 0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5498     TEST_c_c (catanh, 0x1p-33L, -0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5499     TEST_c_c (catanh, -0x1p-33L, 0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5500     TEST_c_c (catanh, -0x1p-33L, -0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5501     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-33L, 1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5502     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-33L, -1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5503     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-33L, 1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5504     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-33L, -1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5505     TEST_c_c (catanh, 0x1p-33L, 0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5506     TEST_c_c (catanh, 0x1p-33L, -0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5507     TEST_c_c (catanh, -0x1p-33L, 0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5508     TEST_c_c (catanh, -0x1p-33L, -0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5509     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-33L, 1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5510     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-33L, -1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5511     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-33L, 1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5512     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-33L, -1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5513 #endif
5514 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5515     TEST_c_c (catanh, 0x1p-54L, 0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5516     TEST_c_c (catanh, 0x1p-54L, -0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5517     TEST_c_c (catanh, -0x1p-54L, 0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5518     TEST_c_c (catanh, -0x1p-54L, -0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5519     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-54L, 1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5520     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-54L, -1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5521     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-54L, 1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5522     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-54L, -1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5523     TEST_c_c (catanh, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5524     TEST_c_c (catanh, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5525     TEST_c_c (catanh, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5526     TEST_c_c (catanh, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5527     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5528     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5529     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5530     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5531 #endif
5532 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5533     TEST_c_c (catanh, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5534     TEST_c_c (catanh, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5535     TEST_c_c (catanh, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5536     TEST_c_c (catanh, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5537     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5538     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5539     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5540     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5541     TEST_c_c (catanh, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5542     TEST_c_c (catanh, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5543     TEST_c_c (catanh, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5544     TEST_c_c (catanh, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5545     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5546     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5547     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5548     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5549 #endif
5550     TEST_c_c (catanh, 1.0L, 0x1p-64L, 2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5551     TEST_c_c (catanh, 1.0L, -0x1p-64L, 2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5552     TEST_c_c (catanh, -1.0L, 0x1p-64L, -2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5553     TEST_c_c (catanh, -1.0L, -0x1p-64L, -2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5554     TEST_c_c (catanh, 0x1p-64L, 1.0L, 2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5555     TEST_c_c (catanh, -0x1p-64L, 1.0L, -2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5556     TEST_c_c (catanh, 0x1p-64L, -1.0L, 2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5557     TEST_c_c (catanh, -0x1p-64L, -1.0L, -2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5558     TEST_c_c (catanh, 1.0L, 0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5559     TEST_c_c (catanh, 1.0L, -0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5560     TEST_c_c (catanh, -1.0L, 0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5561     TEST_c_c (catanh, -1.0L, -0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5562     TEST_c_c (catanh, 0x1.3p-73L, 1.0L, 6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5563     TEST_c_c (catanh, -0x1.3p-73L, 1.0L, -6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5564     TEST_c_c (catanh, 0x1.3p-73L, -1.0L, 6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5565     TEST_c_c (catanh, -0x1.3p-73L, -1.0L, -6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5566     TEST_c_c (catanh, 1.0L, 0x1p-124L, 4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5567     TEST_c_c (catanh, 1.0L, -0x1p-124L, 4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5568     TEST_c_c (catanh, -1.0L, 0x1p-124L, -4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5569     TEST_c_c (catanh, -1.0L, -0x1p-124L, -4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5570     TEST_c_c (catanh, 0x1p-124L, 1.0L, 2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5571     TEST_c_c (catanh, -0x1p-124L, 1.0L, -2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5572     TEST_c_c (catanh, 0x1p-124L, -1.0L, 2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5573     TEST_c_c (catanh, -0x1p-124L, -1.0L, -2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5574     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-126L, 8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5575     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-126L, 8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5576     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-126L, -8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5577     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-126L, -8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5578     TEST_c_c (catanh, 0x1p-126L, 0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5579     TEST_c_c (catanh, -0x1p-126L, 0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5580     TEST_c_c (catanh, 0x1p-126L, -0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5581     TEST_c_c (catanh, -0x1p-126L, -0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5582     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-126L, 8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5583     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-126L, 8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5584     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-126L, -8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5585     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-126L, -8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5586     TEST_c_c (catanh, 0x1p-126L, 0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5587     TEST_c_c (catanh, -0x1p-126L, 0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5588     TEST_c_c (catanh, 0x1p-126L, -0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5589     TEST_c_c (catanh, -0x1p-126L, -0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5590 #ifndef TEST_FLOAT
5591     TEST_c_c (catanh, 1.0L, 0x1p-512L, 1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5592     TEST_c_c (catanh, 1.0L, -0x1p-512L, 1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5593     TEST_c_c (catanh, -1.0L, 0x1p-512L, -1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5594     TEST_c_c (catanh, -1.0L, -0x1p-512L, -1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5595     TEST_c_c (catanh, 0x1p-512L, 1.0L, 3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5596     TEST_c_c (catanh, -0x1p-512L, 1.0L, -3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5597     TEST_c_c (catanh, 0x1p-512L, -1.0L, 3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5598     TEST_c_c (catanh, -0x1p-512L, -1.0L, -3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5599     TEST_c_c (catanh, 1.0L, 0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5600     TEST_c_c (catanh, 1.0L, -0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5601     TEST_c_c (catanh, -1.0L, 0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5602     TEST_c_c (catanh, -1.0L, -0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5603     TEST_c_c (catanh, 0x1.3p-536L, 1.0L, 2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5604     TEST_c_c (catanh, -0x1.3p-536L, 1.0L, -2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5605     TEST_c_c (catanh, 0x1.3p-536L, -1.0L, 2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5606     TEST_c_c (catanh, -0x1.3p-536L, -1.0L, -2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5607     TEST_c_c (catanh, 1.0L, 0x1p-1020L, 3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5608     TEST_c_c (catanh, 1.0L, -0x1p-1020L, 3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5609     TEST_c_c (catanh, -1.0L, 0x1p-1020L, -3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5610     TEST_c_c (catanh, -1.0L, -0x1p-1020L, -3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5611     TEST_c_c (catanh, 0x1p-1020L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5612     TEST_c_c (catanh, -0x1p-1020L, 1.0L, -4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5613     TEST_c_c (catanh, 0x1p-1020L, -1.0L, 4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5614     TEST_c_c (catanh, -0x1p-1020L, -1.0L, -4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5615     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-1022L, 1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5616     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-1022L, 1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5617     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-1022L, -1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5618     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-1022L, -1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5619     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5620     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5621     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5622     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5623     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-1022L, 1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5624     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-1022L, 1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5625     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-1022L, -1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5626     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-1022L, -1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5627     TEST_c_c (catanh, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5628     TEST_c_c (catanh, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5629     TEST_c_c (catanh, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5630     TEST_c_c (catanh, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5631 #endif
5632 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5633     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-1022L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5634     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-1022L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5635     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-1022L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5636     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-1022L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5637     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5638     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5639     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5640     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5641     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5642     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5643     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5644     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5645     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5646     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5647     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5648     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5649 #endif
5650 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5651     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5652     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5653     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5654     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5655     TEST_c_c (catanh, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5656     TEST_c_c (catanh, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5657     TEST_c_c (catanh, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5658     TEST_c_c (catanh, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5659     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5660     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5661     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5662     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5663     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5664     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5665     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5666     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5667 #endif
5668 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5669     TEST_c_c (catanh, 1.0L, 0x1p-8192L, 2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5670     TEST_c_c (catanh, 1.0L, -0x1p-8192L, 2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5671     TEST_c_c (catanh, -1.0L, 0x1p-8192L, -2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5672     TEST_c_c (catanh, -1.0L, -0x1p-8192L, -2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5673     TEST_c_c (catanh, 0x1p-8192L, 1.0L, 4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5674     TEST_c_c (catanh, -0x1p-8192L, 1.0L, -4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5675     TEST_c_c (catanh, 0x1p-8192L, -1.0L, 4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5676     TEST_c_c (catanh, -0x1p-8192L, -1.0L, -4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5677     TEST_c_c (catanh, 1.0L, 0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5678     TEST_c_c (catanh, 1.0L, -0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5679     TEST_c_c (catanh, -1.0L, 0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5680     TEST_c_c (catanh, -1.0L, -0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5681     TEST_c_c (catanh, 0x1.3p-8221L, 1.0L, 1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5682     TEST_c_c (catanh, -0x1.3p-8221L, 1.0L, -1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5683     TEST_c_c (catanh, 0x1.3p-8221L, -1.0L, 1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5684     TEST_c_c (catanh, -0x1.3p-8221L, -1.0L, -1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5685     TEST_c_c (catanh, 1.0L, 0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5686     TEST_c_c (catanh, 1.0L, -0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5687     TEST_c_c (catanh, -1.0L, 0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5688     TEST_c_c (catanh, -1.0L, -0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5689     TEST_c_c (catanh, 0x1.3p-8246L, 1.0L, 3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5690     TEST_c_c (catanh, -0x1.3p-8246L, 1.0L, -3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5691     TEST_c_c (catanh, 0x1.3p-8246L, -1.0L, 3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5692     TEST_c_c (catanh, -0x1.3p-8246L, -1.0L, -3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5693     TEST_c_c (catanh, 1.0L, 0x1p-16380L, 5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5694     TEST_c_c (catanh, 1.0L, -0x1p-16380L, 5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5695     TEST_c_c (catanh, -1.0L, 0x1p-16380L, -5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5696     TEST_c_c (catanh, -1.0L, -0x1p-16380L, -5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5697     TEST_c_c (catanh, 0x1p-16380L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5698     TEST_c_c (catanh, -0x1p-16380L, 1.0L, -6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5699     TEST_c_c (catanh, 0x1p-16380L, -1.0L, 6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5700     TEST_c_c (catanh, -0x1p-16380L, -1.0L, -6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5701     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-16382L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5702     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-16382L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5703     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-16382L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5704     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-16382L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5705     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5706     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5707     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5708     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5709     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5710     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5711     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5712     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5713     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5714     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5715     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5716     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5717 # if LDBL_MANT_DIG >= 113
5718     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5719     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5720     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5721     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5722     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5723     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5724     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5725     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5726     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5727     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5728     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5729     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5730     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5731     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5732     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5733     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5734 # endif
5735 #endif
5736
5737     TEST_c_c (catanh, 0.75L, 1.25L, 0.261492138795671927078652057366532140L, 0.996825126463918666098902241310446708L),
5738     TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L),
5739     END_DATA (catanh)
5740   };
5741
5742 static void
5743 catanh_test (void)
5744 {
5745   errno = 0;
5746   FUNC(catanh) (BUILD_COMPLEX (0.7L, 1.2L));
5747   if (errno == ENOSYS)
5748     /* Function not implemented.  */
5749     return;
5750
5751   START (catanh);
5752   RUN_TEST_LOOP_c_c (catanh, catanh_test_data, );
5753   END (catanh, complex);
5754 }
5755
5756 static const struct test_f_f_data cbrt_test_data[] =
5757   {
5758     START_DATA (cbrt),
5759     TEST_f_f (cbrt, 0.0, 0.0),
5760     TEST_f_f (cbrt, minus_zero, minus_zero),
5761
5762     TEST_f_f (cbrt, plus_infty, plus_infty),
5763     TEST_f_f (cbrt, minus_infty, minus_infty),
5764     TEST_f_f (cbrt, qnan_value, qnan_value),
5765
5766     TEST_f_f (cbrt, -0.001L, -0.1L),
5767     TEST_f_f (cbrt, 8, 2),
5768     TEST_f_f (cbrt, -27.0, -3.0),
5769     TEST_f_f (cbrt, 0.9921875L, 0.997389022060725270579075195353955217L),
5770     TEST_f_f (cbrt, 0.75L, 0.908560296416069829445605878163630251L),
5771     END_DATA (cbrt)
5772   };
5773
5774 static void
5775 cbrt_test (void)
5776 {
5777   errno = 0;
5778   FUNC(cbrt) (8);
5779   if (errno == ENOSYS)
5780     /* Function not implemented.  */
5781     return;
5782
5783   START (cbrt);
5784   RUN_TEST_LOOP_f_f (cbrt, cbrt_test_data, );
5785   END (cbrt);
5786 }
5787
5788
5789 static const struct test_c_c_data ccos_test_data[] =
5790   {
5791     START_DATA (ccos),
5792     TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero),
5793     TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0),
5794     TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0),
5795     TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero),
5796
5797     TEST_c_c (ccos, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5798     TEST_c_c (ccos, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5799     TEST_c_c (ccos, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5800     TEST_c_c (ccos, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5801
5802     TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero),
5803     TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0),
5804     TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0),
5805     TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero),
5806
5807     TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5808     TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5809     TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5810     TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5811
5812     TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty),
5813     TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty),
5814     TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty),
5815     TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty),
5816
5817     TEST_c_c (ccos, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5818     TEST_c_c (ccos, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5819     TEST_c_c (ccos, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5820     TEST_c_c (ccos, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5821
5822     TEST_c_c (ccos, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5823     TEST_c_c (ccos, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5824
5825     TEST_c_c (ccos, qnan_value, plus_infty, plus_infty, qnan_value),
5826     TEST_c_c (ccos, qnan_value, minus_infty, plus_infty, qnan_value),
5827
5828     TEST_c_c (ccos, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5829     TEST_c_c (ccos, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5830
5831     TEST_c_c (ccos, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5832     TEST_c_c (ccos, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5833
5834     TEST_c_c (ccos, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5835     TEST_c_c (ccos, -10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5836
5837     TEST_c_c (ccos, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5838     TEST_c_c (ccos, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5839
5840     TEST_c_c (ccos, qnan_value, qnan_value, qnan_value, qnan_value),
5841
5842     TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L),
5843     TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L),
5844
5845     TEST_c_c (ccos, 0.75, 89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5846     TEST_c_c (ccos, 0.75, -89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5847     TEST_c_c (ccos, -0.75, 89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5848     TEST_c_c (ccos, -0.75, -89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5849
5850 #ifndef TEST_FLOAT
5851     TEST_c_c (ccos, 0.75, 710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5852     TEST_c_c (ccos, 0.75, -710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5853     TEST_c_c (ccos, -0.75, 710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5854     TEST_c_c (ccos, -0.75, -710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5855 #endif
5856
5857 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5858     TEST_c_c (ccos, 0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5859     TEST_c_c (ccos, 0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5860     TEST_c_c (ccos, -0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5861     TEST_c_c (ccos, -0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5862 #endif
5863
5864 #ifdef TEST_FLOAT
5865     TEST_c_c (ccos, 0x1p-149, 180, plus_infty, -1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5866 #endif
5867
5868 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5869     TEST_c_c (ccos, 0x1p-1074, 1440, plus_infty, -5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5870 #endif
5871
5872 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5873     TEST_c_c (ccos, 0x1p-16434L, 22730, plus_infty, -1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5874 #endif
5875
5876     TEST_c_c (ccos, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5877     TEST_c_c (ccos, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5878     END_DATA (ccos)
5879   };
5880
5881 static void
5882 ccos_test (void)
5883 {
5884   errno = 0;
5885   FUNC(ccos) (BUILD_COMPLEX (0, 0));
5886   if (errno == ENOSYS)
5887     /* Function not implemented.  */
5888     return;
5889
5890   START (ccos);
5891   RUN_TEST_LOOP_c_c (ccos, ccos_test_data, );
5892   END (ccos, complex);
5893 }
5894
5895
5896 static const struct test_c_c_data ccosh_test_data[] =
5897   {
5898     START_DATA (ccosh),
5899     TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0),
5900     TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero),
5901     TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero),
5902     TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0),
5903
5904     TEST_c_c (ccosh, 0.0, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5905     TEST_c_c (ccosh, minus_zero, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5906     TEST_c_c (ccosh, 0.0, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5907     TEST_c_c (ccosh, minus_zero, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5908
5909     TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0),
5910     TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero),
5911     TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero),
5912     TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0),
5913
5914     TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5915     TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5916     TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5917     TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5918
5919     TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty),
5920     TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty),
5921     TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty),
5922     TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty),
5923
5924     TEST_c_c (ccosh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5925     TEST_c_c (ccosh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5926     TEST_c_c (ccosh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5927     TEST_c_c (ccosh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5928
5929     TEST_c_c (ccosh, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5930     TEST_c_c (ccosh, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5931
5932     TEST_c_c (ccosh, plus_infty, qnan_value, plus_infty, qnan_value),
5933     TEST_c_c (ccosh, minus_infty, qnan_value, plus_infty, qnan_value),
5934
5935     TEST_c_c (ccosh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5936     TEST_c_c (ccosh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5937
5938     TEST_c_c (ccosh, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5939     TEST_c_c (ccosh, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5940
5941     TEST_c_c (ccosh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5942     TEST_c_c (ccosh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5943
5944     TEST_c_c (ccosh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5945     TEST_c_c (ccosh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5946
5947     TEST_c_c (ccosh, qnan_value, qnan_value, qnan_value, qnan_value),
5948
5949     TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L),
5950
5951     TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L),
5952
5953     TEST_c_c (ccosh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5954     TEST_c_c (ccosh, -89.5, 0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5955     TEST_c_c (ccosh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5956     TEST_c_c (ccosh, -89.5, -0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5957
5958 #ifndef TEST_FLOAT
5959     TEST_c_c (ccosh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5960     TEST_c_c (ccosh, -710.5, 0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5961     TEST_c_c (ccosh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5962     TEST_c_c (ccosh, -710.5, -0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5963 #endif
5964
5965 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5966     TEST_c_c (ccosh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5967     TEST_c_c (ccosh, -11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5968     TEST_c_c (ccosh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5969     TEST_c_c (ccosh, -11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5970 #endif
5971
5972 #ifdef TEST_FLOAT
5973     TEST_c_c (ccosh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5974 #endif
5975
5976 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5977     TEST_c_c (ccosh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5978 #endif
5979
5980 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5981     TEST_c_c (ccosh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5982 #endif
5983
5984     TEST_c_c (ccosh, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
5985     TEST_c_c (ccosh, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
5986     END_DATA (ccosh)
5987   };
5988
5989 static void
5990 ccosh_test (void)
5991 {
5992   errno = 0;
5993   FUNC(ccosh) (BUILD_COMPLEX (0.7L, 1.2L));
5994   if (errno == ENOSYS)
5995     /* Function not implemented.  */
5996     return;
5997
5998   START (ccosh);
5999   RUN_TEST_LOOP_c_c (ccosh, ccosh_test_data, );
6000   END (ccosh, complex);
6001 }
6002
6003
6004 static const struct test_f_f_data ceil_test_data[] =
6005   {
6006     START_DATA (ceil),
6007     TEST_f_f (ceil, 0.0, 0.0),
6008     TEST_f_f (ceil, minus_zero, minus_zero),
6009     TEST_f_f (ceil, plus_infty, plus_infty),
6010     TEST_f_f (ceil, minus_infty, minus_infty),
6011     TEST_f_f (ceil, qnan_value, qnan_value),
6012
6013     TEST_f_f (ceil, M_PIl, 4.0),
6014     TEST_f_f (ceil, -M_PIl, -3.0),
6015     TEST_f_f (ceil, 0.1, 1.0),
6016     TEST_f_f (ceil, 0.25, 1.0),
6017     TEST_f_f (ceil, 0.625, 1.0),
6018     TEST_f_f (ceil, -0.1, minus_zero),
6019     TEST_f_f (ceil, -0.25, minus_zero),
6020     TEST_f_f (ceil, -0.625, minus_zero),
6021
6022 #ifdef TEST_LDOUBLE
6023     /* The result can only be represented in long double.  */
6024     TEST_f_f (ceil, 4503599627370495.5L, 4503599627370496.0L),
6025     TEST_f_f (ceil, 4503599627370496.25L, 4503599627370497.0L),
6026     TEST_f_f (ceil, 4503599627370496.5L, 4503599627370497.0L),
6027     TEST_f_f (ceil, 4503599627370496.75L, 4503599627370497.0L),
6028     TEST_f_f (ceil, 4503599627370497.5L, 4503599627370498.0L),
6029
6030     TEST_f_f (ceil, -4503599627370495.5L, -4503599627370495.0L),
6031     TEST_f_f (ceil, -4503599627370496.25L, -4503599627370496.0L),
6032     TEST_f_f (ceil, -4503599627370496.5L, -4503599627370496.0L),
6033     TEST_f_f (ceil, -4503599627370496.75L, -4503599627370496.0L),
6034     TEST_f_f (ceil, -4503599627370497.5L, -4503599627370497.0L),
6035
6036 # if LDBL_MANT_DIG > 100
6037     TEST_f_f (ceil, 4503599627370494.5000000000001L, 4503599627370495.0L),
6038     TEST_f_f (ceil, 4503599627370495.5000000000001L, 4503599627370496.0L),
6039     TEST_f_f (ceil, 4503599627370496.5000000000001L, 4503599627370497.0L),
6040     TEST_f_f (ceil, -4503599627370494.5000000000001L, -4503599627370494.0L),
6041     TEST_f_f (ceil, -4503599627370495.5000000000001L, -4503599627370495.0L),
6042     TEST_f_f (ceil, -4503599627370496.5000000000001L, -4503599627370496.0L),
6043 # endif
6044
6045     TEST_f_f (ceil, 9007199254740991.5L, 9007199254740992.0L),
6046     TEST_f_f (ceil, 9007199254740992.25L, 9007199254740993.0L),
6047     TEST_f_f (ceil, 9007199254740992.5L, 9007199254740993.0L),
6048     TEST_f_f (ceil, 9007199254740992.75L, 9007199254740993.0L),
6049     TEST_f_f (ceil, 9007199254740993.5L, 9007199254740994.0L),
6050
6051     TEST_f_f (ceil, -9007199254740991.5L, -9007199254740991.0L),
6052     TEST_f_f (ceil, -9007199254740992.25L, -9007199254740992.0L),
6053     TEST_f_f (ceil, -9007199254740992.5L, -9007199254740992.0L),
6054     TEST_f_f (ceil, -9007199254740992.75L, -9007199254740992.0L),
6055     TEST_f_f (ceil, -9007199254740993.5L, -9007199254740993.0L),
6056
6057 # if LDBL_MANT_DIG > 100
6058     TEST_f_f (ceil, 9007199254740991.0000000000001L, 9007199254740992.0L),
6059     TEST_f_f (ceil, 9007199254740992.0000000000001L, 9007199254740993.0L),
6060     TEST_f_f (ceil, 9007199254740993.0000000000001L, 9007199254740994.0L),
6061     TEST_f_f (ceil, 9007199254740991.5000000000001L, 9007199254740992.0L),
6062     TEST_f_f (ceil, 9007199254740992.5000000000001L, 9007199254740993.0L),
6063     TEST_f_f (ceil, 9007199254740993.5000000000001L, 9007199254740994.0L),
6064
6065     TEST_f_f (ceil, -9007199254740991.0000000000001L, -9007199254740991.0L),
6066     TEST_f_f (ceil, -9007199254740992.0000000000001L, -9007199254740992.0L),
6067     TEST_f_f (ceil, -9007199254740993.0000000000001L, -9007199254740993.0L),
6068     TEST_f_f (ceil, -9007199254740991.5000000000001L, -9007199254740991.0L),
6069     TEST_f_f (ceil, -9007199254740992.5000000000001L, -9007199254740992.0L),
6070     TEST_f_f (ceil, -9007199254740993.5000000000001L, -9007199254740993.0L),
6071 # endif
6072
6073     TEST_f_f (ceil, 72057594037927935.5L, 72057594037927936.0L),
6074     TEST_f_f (ceil, 72057594037927936.25L, 72057594037927937.0L),
6075     TEST_f_f (ceil, 72057594037927936.5L, 72057594037927937.0L),
6076     TEST_f_f (ceil, 72057594037927936.75L, 72057594037927937.0L),
6077     TEST_f_f (ceil, 72057594037927937.5L, 72057594037927938.0L),
6078
6079     TEST_f_f (ceil, -72057594037927935.5L, -72057594037927935.0L),
6080     TEST_f_f (ceil, -72057594037927936.25L, -72057594037927936.0L),
6081     TEST_f_f (ceil, -72057594037927936.5L, -72057594037927936.0L),
6082     TEST_f_f (ceil, -72057594037927936.75L, -72057594037927936.0L),
6083     TEST_f_f (ceil, -72057594037927937.5L, -72057594037927937.0L),
6084
6085     TEST_f_f (ceil, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
6086     TEST_f_f (ceil, 10141204801825835211973625643008.25L, 10141204801825835211973625643009.0L),
6087     TEST_f_f (ceil, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
6088     TEST_f_f (ceil, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
6089     TEST_f_f (ceil, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
6090 #endif
6091     END_DATA (ceil)
6092   };
6093
6094 static void
6095 ceil_test (void)
6096 {
6097   START (ceil);
6098   RUN_TEST_LOOP_f_f (ceil, ceil_test_data, );
6099   END (ceil);
6100 }
6101
6102
6103 static const struct test_c_c_data cexp_test_data[] =
6104   {
6105     START_DATA (cexp),
6106     TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0),
6107     TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0),
6108     TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero),
6109     TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero),
6110
6111     TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0),
6112     TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero),
6113
6114     TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0),
6115     TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero),
6116
6117     TEST_c_c (cexp, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6118     TEST_c_c (cexp, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6119
6120     TEST_c_c (cexp, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6121     TEST_c_c (cexp, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6122
6123     TEST_c_c (cexp, 100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6124     TEST_c_c (cexp, -100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6125
6126     TEST_c_c (cexp, 100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6127     TEST_c_c (cexp, -100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6128
6129     TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0),
6130     TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero),
6131     TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty),
6132     TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty),
6133
6134     TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6135     TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6136
6137     TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN),
6138     TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN),
6139
6140     TEST_c_c (cexp, minus_infty, qnan_value, 0, 0, IGNORE_ZERO_INF_SIGN),
6141
6142     TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value),
6143
6144     TEST_c_c (cexp, qnan_value, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6145     TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6146
6147     TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6148     TEST_c_c (cexp, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6149     TEST_c_c (cexp, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6150     TEST_c_c (cexp, qnan_value, qnan_value, qnan_value, qnan_value),
6151
6152     TEST_c_c (cexp, 0.75L, 1.25L, 0.667537446429131586942201977015932112L, 2.00900045494094876258347228145863909L),
6153     TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L),
6154
6155     TEST_c_c (cexp, 0, 0x1p65, 0.99888622066058013610642172179340364209972L, -0.047183876212354673805106149805700013943218L),
6156     TEST_c_c (cexp, 0, -0x1p65, 0.99888622066058013610642172179340364209972L, 0.047183876212354673805106149805700013943218L),
6157     TEST_c_c (cexp, 50, 0x1p127, 4.053997150228616856622417636046265337193e21L, 3.232070315463388524466674772633810238819e21L),
6158
6159 #ifndef TEST_FLOAT
6160     TEST_c_c (cexp, 0, 1e22, 0.5232147853951389454975944733847094921409L, -0.8522008497671888017727058937530293682618L),
6161     TEST_c_c (cexp, 0, 0x1p1023, -0.826369834614147994500785680811743734805L, 0.5631277798508840134529434079444683477104L),
6162     TEST_c_c (cexp, 500, 0x1p1023, -1.159886268932754433233243794561351783426e217L, 7.904017694554466595359379965081774849708e216L),
6163 #endif
6164
6165 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6166     TEST_c_c (cexp, 0, 0x1p16383L, 0.9210843909921906206874509522505756251609L, 0.3893629985894208126948115852610595405563L),
6167     TEST_c_c (cexp, -10000, 0x1p16383L, 1.045876464564882298442774542991176546722e-4343L, 4.421154026488516836023811173959413420548e-4344L),
6168 #endif
6169
6170     TEST_c_c (cexp, 88.75, 0.75, 2.558360358486542817001900410314204322891e38L, 2.383359453227311447654736314679677655100e38L),
6171     TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L, UNDERFLOW_EXCEPTION_FLOAT),
6172
6173 #ifndef TEST_FLOAT
6174     TEST_c_c (cexp, 709.8125, 0.75, 1.355121963080879535248452862759108365762e308L, 1.262426823598609432507811340856186873507e308L),
6175     TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L, UNDERFLOW_EXCEPTION_DOUBLE),
6176 #endif
6177
6178 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6179     TEST_c_c (cexp, 11356.5625, 0.75, 9.052188470850960144814815984311663764287e4931L, 8.432986734191301036267148978260970230200e4931L),
6180     TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L, UNDERFLOW_EXCEPTION),
6181 #endif
6182
6183 #ifdef TEST_FLOAT
6184     TEST_c_c (cexp, 180, 0x1p-149, plus_infty, 2.087071793345235105931967606907855310664e33L, OVERFLOW_EXCEPTION),
6185 #endif
6186
6187 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6188     TEST_c_c (cexp, 1440, 0x1p-1074, plus_infty, 1.196295853897226111293303155636183216483e302L, OVERFLOW_EXCEPTION),
6189 #endif
6190
6191 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6192     TEST_c_c (cexp, 22730, 0x1p-16434L, plus_infty, 2.435706297811211974162115164702304105374e4924L, OVERFLOW_EXCEPTION),
6193 #endif
6194
6195     TEST_c_c (cexp, 1e6, 0, plus_infty, 0, OVERFLOW_EXCEPTION),
6196     TEST_c_c (cexp, 1e6, min_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
6197     TEST_c_c (cexp, 1e6, -min_value, plus_infty, minus_infty, OVERFLOW_EXCEPTION),
6198
6199     TEST_c_c (cexp, min_value, min_subnorm_value, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6200     TEST_c_c (cexp, min_value, -min_subnorm_value, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
6201     END_DATA (cexp)
6202   };
6203
6204 static void
6205 cexp_test (void)
6206 {
6207   errno = 0;
6208   FUNC(cexp) (BUILD_COMPLEX (0, 0));
6209   if (errno == ENOSYS)
6210     /* Function not implemented.  */
6211     return;
6212
6213   START (cexp);
6214   RUN_TEST_LOOP_c_c (cexp, cexp_test_data, );
6215   END (cexp, complex);
6216 }
6217
6218
6219 static const struct test_c_f_data cimag_test_data[] =
6220   {
6221     START_DATA (cimag);
6222     TEST_c_f (cimag, 1.0, 0.0, 0.0),
6223     TEST_c_f (cimag, 1.0, minus_zero, minus_zero),
6224     TEST_c_f (cimag, 1.0, qnan_value, qnan_value),
6225     TEST_c_f (cimag, qnan_value, qnan_value, qnan_value),
6226     TEST_c_f (cimag, 1.0, plus_infty, plus_infty),
6227     TEST_c_f (cimag, 1.0, minus_infty, minus_infty),
6228     TEST_c_f (cimag, 2.0, 3.0, 3.0),
6229     END_DATA (cimag);
6230   };
6231
6232 static void
6233 cimag_test (void)
6234 {
6235   START (cimag);
6236   RUN_TEST_LOOP_c_f (cimag, cimag_test_data, );
6237   END (cimag);
6238 }
6239
6240 static const struct test_c_c_data clog_test_data[] =
6241   {
6242     START_DATA (clog),
6243     TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6244     TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6245
6246     TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6247     TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6248
6249     TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l),
6250     TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l),
6251
6252     TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l),
6253     TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l),
6254
6255     TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l),
6256     TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l),
6257     TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l),
6258     TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l),
6259     TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l),
6260     TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l),
6261     TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l),
6262     TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l),
6263
6264     TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl),
6265     TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl),
6266     TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl),
6267     TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl),
6268
6269     TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0),
6270     TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0),
6271     TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero),
6272     TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero),
6273
6274     TEST_c_c (clog, plus_infty, qnan_value, plus_infty, qnan_value),
6275     TEST_c_c (clog, minus_infty, qnan_value, plus_infty, qnan_value),
6276
6277     TEST_c_c (clog, qnan_value, plus_infty, plus_infty, qnan_value),
6278     TEST_c_c (clog, qnan_value, minus_infty, plus_infty, qnan_value),
6279
6280     TEST_c_c (clog, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6281     TEST_c_c (clog, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6282     TEST_c_c (clog, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6283     TEST_c_c (clog, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6284
6285     TEST_c_c (clog, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6286     TEST_c_c (clog, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6287     TEST_c_c (clog, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6288     TEST_c_c (clog, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6289
6290     TEST_c_c (clog, qnan_value, qnan_value, qnan_value, qnan_value),
6291
6292     TEST_c_c (clog, 0.75L, 1.25L, 0.376885901188190075998919126749298416L, 1.03037682652431246378774332703115153L),
6293     TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L),
6294
6295     TEST_c_c (clog, 0x1.fffffep+127L, 0x1.fffffep+127L, 89.06941264234832570836679262104313101776L, M_PI_4l),
6296     TEST_c_c (clog, 0x1.fffffep+127L, 1.0L, 88.72283905206835305365817656031404273372L, 2.938736052218037251011746307725933020145e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6297     TEST_c_c (clog, 0x1p-149L, 0x1p-149L, -102.9323563131518784484589700365392203592L, M_PI_4l),
6298     TEST_c_c (clog, 0x1p-147L, 0x1p-147L, -101.5460619520319878296245057936228672231L, M_PI_4l),
6299
6300 #ifndef TEST_FLOAT
6301     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 710.1292864836639693869320059713862337880L, M_PI_4l),
6302     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 709.8942846690411016323109979483151967689L, 0.4636476090008061606231772164674799632783L),
6303     TEST_c_c (clog, 0x1p-1074L, 0x1p-1074L, -744.0934983311012896593986823853525458290L, M_PI_4l),
6304     TEST_c_c (clog, 0x1p-1073L, 0x1p-1073L, -743.4003511505413443499814502638943692610L, M_PI_4l),
6305 #endif
6306
6307 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6308     TEST_c_c (clog, 0x1.fp+16383L, 0x1.fp+16383L, 11356.83823118610934184548269774874545400L, M_PI_4l),
6309     TEST_c_c (clog, 0x1.fp+16383L, 0x1p+16383L, 11356.60974243783798653123798337822335902L, 0.4764674194737066993385333770295162295856L),
6310     TEST_c_c (clog, 0x1p-16440L, 0x1p-16441L, -11395.22807662984378194141292922726786191L, 0.4636476090008061162142562314612144020285L),
6311 #endif
6312
6313     TEST_c_c (clog, 0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6314     TEST_c_c (clog, -0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6315     TEST_c_c (clog, 0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6316     TEST_c_c (clog, -0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6317     TEST_c_c (clog, -0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, M_PIl),
6318     TEST_c_c (clog, -0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, -M_PIl),
6319 #ifdef TEST_FLOAT
6320     TEST_c_c (clog, 0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, plus_zero, UNDERFLOW_EXCEPTION),
6321     TEST_c_c (clog, 0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, minus_zero, UNDERFLOW_EXCEPTION),
6322 #endif
6323
6324 #ifndef TEST_FLOAT
6325     TEST_c_c (clog, 0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6326     TEST_c_c (clog, -0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6327     TEST_c_c (clog, 0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6328     TEST_c_c (clog, -0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6329     TEST_c_c (clog, -0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, M_PIl),
6330     TEST_c_c (clog, -0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, -M_PIl),
6331 #endif
6332 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6333     TEST_c_c (clog, 0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, plus_zero, UNDERFLOW_EXCEPTION),
6334     TEST_c_c (clog, 0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, minus_zero, UNDERFLOW_EXCEPTION),
6335 #endif
6336
6337 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6338     TEST_c_c (clog, 0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6339     TEST_c_c (clog, -0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6340     TEST_c_c (clog, 0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6341     TEST_c_c (clog, -0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6342     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, M_PIl),
6343     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, -M_PIl),
6344     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6345     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6346 # if LDBL_MANT_DIG >= 113
6347     TEST_c_c (clog, 0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6348     TEST_c_c (clog, -0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6349     TEST_c_c (clog, 0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6350     TEST_c_c (clog, -0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6351     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, M_PIl),
6352     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, -M_PIl),
6353     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6354     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6355 # endif
6356 #endif
6357
6358     TEST_c_c (clog, 1.0L, 0x1.234566p-10L, 6.172834701221959432440126967147726538097e-7L, 1.111110564353742042376451655136933182201e-3L),
6359     TEST_c_c (clog, -1.0L, 0x1.234566p-20L, 5.886877547844618300918562490463748605537e-13L, 3.141591568520436206990380699322226378452L),
6360     TEST_c_c (clog, 0x1.234566p-30L, 1.0L, 5.614163921211322622623353961365728040115e-19L, 1.570796325735258575254858696548386439740L),
6361     TEST_c_c (clog, -0x1.234566p-40L, -1.0L, 5.354083939753840089583620652120903838944e-25L, -1.570796326795931422008642456283782656359L),
6362     TEST_c_c (clog, 0x1.234566p-50L, 1.0L, 5.106052341226425256332038420428899201070e-31L, 1.570796326794895608681734464330528755366L),
6363     TEST_c_c (clog, 0x1.234566p-60L, 1.0L, 4.869510976053643471080816669875627875933e-37L, 1.570796326794896618244456860363082279319L),
6364     TEST_c_c (clog, 0x1p-62L, 1.0L, 2.350988701644575015937473074444491355582e-38L, 1.570796326794896619014481257142650555297L),
6365     TEST_c_c (clog, 0x1p-63L, 1.0L, 5.877471754111437539843682686111228389059e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
6366     TEST_c_c (clog, 0x1p-64L, 1.0L, 1.469367938527859384960920671527807097271e-39L, 1.570796326794896619177111583015476220398L, UNDERFLOW_EXCEPTION_FLOAT),
6367 #ifndef TEST_FLOAT
6368     TEST_c_c (clog, 0x1p-510L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6369     TEST_c_c (clog, 0x1p-511L, 1.0L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6370     TEST_c_c (clog, 0x1p-512L, 1.0L, 2.781342323134001728862790896665505080274e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6371 #endif
6372 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6373     TEST_c_c (clog, 0x1p-8190L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 1.570796326794896619231321691639751442099L),
6374     TEST_c_c (clog, 0x1p-8191L, 1.0L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6375     TEST_c_c (clog, 0x1p-8192L, 1.0L, 4.202628928890116882828347271652190753248e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6376 #endif
6377
6378     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-10L, 8.298731898331237038231468223024422855654e-5L, 1.110938609507128729312743251313024793990e-3L),
6379     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-100L, 8.237022655933121125560939513260027133767e-5L, 8.974094312218060110948251664314290484113e-31L),
6380 #ifndef TEST_FLOAT
6381     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-30L, 2.649094282537168795982991778475646793277e-10L, 3.141592652530155111500161671113150737892L),
6382     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 2.649094276923003995420209214900915462737e-10L, 3.141592653589793238462643383279502884197L),
6383 #endif
6384 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6385     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 9.868649107778739757272772275265050767867e-19L, 9.868649106423871142816660980898339912137e-19L),
6386     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 9.868649107778739752403260515979017248596e-19L, 1.061846605795612822522063052130030717368e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6387 #endif
6388
6389     TEST_c_c (clog, 0x0.ffffffp0L, 0x0.ffffffp-100L, -5.960464655174753498633255797994360530379e-8L, 7.888609052210118054117285652827862296732e-31L),
6390 #ifndef TEST_FLOAT
6391     TEST_c_c (clog, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -1.110223024625156602053389888482372171810e-16L, 9.332636185032188789900895447238171696171e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6392 #endif
6393 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6394     TEST_c_c (clog, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -5.421010862427522170184200798202494495630e-20L, 3.548665303440282824232502561095699343814e-4516L),
6395 #endif
6396
6397     TEST_c_c (clog, 0x1a6p-10L, 0x3a5p-10L, -1.4305135209763571252847059962654228661815e-06L, 1.1460277178115757370775644871674016684074L),
6398     TEST_c_c (clog, 0xf2p-10L, 0x3e3p-10L, 6.1988446308070710970664736815277450078106e-06L, 1.3322126499153926210226335249558203898460L),
6399     TEST_c_c (clog, 0x4d4ep-15L, 0x6605p-15L, -1.6298145321400412054744424587143483169412e-08L, 0.9223574537155056772124552172295398141249L),
6400     TEST_c_c (clog, 0x2818p-15L, 0x798fp-15L, 1.5366822245016167178749091974664853785194e-08L, 1.2522014929038946066987318471922169174157L),
6401     TEST_c_c (clog, 0x9b57bp-20L, 0xcb7b4p-20L, -3.9563019528687610863490232935890272740908e-11L, 0.9187593477446338910857133065497364950682L),
6402     TEST_c_c (clog, 0x2731p-20L, 0xfffd0p-20L, 4.4110493034041283943115971658295280288115e-11L, 1.5612279663766352262688735061954290528838L),
6403     TEST_c_c (clog, 0x2ede88p-23L, 0x771c3fp-23L, -4.4764192352906350039050902870893173560494e-13L, 1.1959106857549200806818600493552847793381L),
6404     TEST_c_c (clog, 0x11682p-23L, 0x7ffed1p-23L, 1.1723955140027907954461000991619077811832e-12L, 1.5622968405332756349813737986164832897108L),
6405     TEST_c_c (clog, 0xa1f2c1p-24L, 0xc643aep-24L, -1.0480505352462576151523512837107080269981e-13L, 0.8858771987699967480545613322309315260313L),
6406     TEST_c_c (clog, 0x659feap-24L, 0xeaf6f9p-24L, 3.7303493627403868207597214252239749960738e-14L, 1.1625816408046866464773042283673653469061L),
6407 #ifndef TEST_FLOAT
6408     TEST_c_c (clog, 0x4447d7175p-35L, 0x6c445e00ap-35L, -1.4823076576950255933915367361099865652625e-20L, 1.0081311552703893116404606212158840190615L),
6409     TEST_c_c (clog, 0x2dd46725bp-35L, 0x7783a1284p-35L, 4.4469229730850767799109418892826021157328e-20L, 1.2046235979300843056806465045930070146351L),
6410     TEST_c_c (clog, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -3.0292258760486853327810377824479932031744e-26L, 0.7998237934177411746093524982030330293980L),
6411     TEST_c_c (clog, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 5.3718272201930019901317065495843842735179e-26L, 1.0503831592447830576186444373011142397404L),
6412     TEST_c_c (clog, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -6.2122796286154679676173624516405339768606e-30L, 1.4904138780720095276446375492434049214172L),
6413     TEST_c_c (clog, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 3.2047474274603604594851472963586149973093e-29L, 1.4422922682185099608731642353544207976604L),
6414     TEST_c_c (clog, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -9.7375017988218644730510244778042114638107e-30L, 0.9790637929494922564724108399524154766631L),
6415     TEST_c_c (clog, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 8.3076914081087805757422664530653247447136e-30L, 1.2072712126771536614482822173033535043206L),
6416     TEST_c_c (clog, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -2.5083311595699359750201056724289010648701e-30L, 1.3710185432462268491534742969536240564640L),
6417     TEST_c_c (clog, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 1.0168910106364605304135563536838075568606e-30L, 0.8208373755522359859870890246475340086663L),
6418     TEST_c_c (clog, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 5.0844550531823026520677817684239496041087e-32L, 1.2627468605458094918919206628466016525397L),
6419     TEST_c_c (clog, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -5.2000108498455368032511404449795741611813e-32L, 1.5288921536982513453421343495466824420259L),
6420 #endif
6421 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6422     TEST_c_c (clog, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -1.1931267660846218205882675852805793644095e-36L, 1.2402109774337032400594953899784058127412L),
6423     TEST_c_c (clog, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 6.4064442119814669184296141278612389400075e-37L, 0.9193591364645830864185131402313014890145L),
6424     TEST_c_c (clog, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -2.3362950222592964220878638677292132852104e-37L, 1.1856121127236268105413184264288408265852L),
6425     TEST_c_c (clog, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 2.4244570985709679851855191080208817099132e-37L, 1.1393074519572050614551047548718495655972L),
6426     TEST_c_c (clog, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -9.9182335850630508484862145328126979066934e-39L, 1.3146479888794807046338799047003947008804L),
6427 #endif
6428 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6429     TEST_c_c (clog, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -1.0509738482436128031927971874674370984602e-45L, 1.0509191467640012308402149909370784281448L),
6430     TEST_c_c (clog, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 1.3487497719126364307640897239165442763573e-43L, 1.1750493008528425228929764149024375035382L),
6431     TEST_c_c (clog, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -4.7775669192897997174762089350332738583822e-50L, 0.8393953487996880419413728440067635213372L),
6432     TEST_c_c (clog, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 2.8398125044729578740243199963484494962411e-50L, 0.9149964976334130461795060758257083099706L),
6433     TEST_c_c (clog, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -3.5048022044913950094635368750889659723004e-57L, 1.3345633256521815205858155673950177421079L),
6434     TEST_c_c (clog, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 4.1101771307217268747345114262406964584250e-56L, 1.4596065864518742494094402406719567059585L),
6435     TEST_c_c (clog, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -1.4281333889622737316199756373421183559948e-62L, 1.3673546561165378090903506783353927980633L),
6436     TEST_c_c (clog, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 1.0027319539522347477331743836657426754857e-62L, 0.8193464073721167323313606647411269414759L),
6437     TEST_c_c (clog, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -1.7471844652198029695350765775994001163767e-63L, 1.1789110097072986038243729592318526094314L),
6438     TEST_c_c (clog, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 4.3299788920664682288477984749202524623248e-63L, 1.4746938237585656250866370987773473745867L),
6439 #endif
6440 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6441     TEST_c_c (clog, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -1.1683999374665377365054966073875064467108e-66L, 1.3257197596350832748781065387304444940172L),
6442     TEST_c_c (clog, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 1.5077923002544367932999503838191154621839e-65L, 1.2897445708311412721399861948957141824914L),
6443     TEST_c_c (clog, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -7.1865869169568789348552370692485515571497e-67L, 0.8730167479365994646287897223471819363668L),
6444     TEST_c_c (clog, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 6.6255694866654064502633121109394710807528e-66L, 1.0526409614996288387567810726095850312049L),
6445     TEST_c_c (clog, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 4.6017338806965821566734340588575402712716e-67L, 1.3547418904611758959096647942223384691728L),
6446     TEST_c_c (clog, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 2.5993421227864195179698176012564317527271e-67L, 1.4132318089683022770487383611430906982461L),
6447 #endif
6448     END_DATA (clog)
6449   };
6450
6451 static void
6452 clog_test (void)
6453 {
6454   errno = 0;
6455   FUNC(clog) (BUILD_COMPLEX (-2, -3));
6456   if (errno == ENOSYS)
6457     /* Function not implemented.  */
6458     return;
6459
6460   START (clog);
6461   RUN_TEST_LOOP_c_c (clog, clog_test_data, );
6462   END (clog, complex);
6463 }
6464
6465
6466 static const struct test_c_c_data clog10_test_data[] =
6467   {
6468     START_DATA (clog10),
6469     TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6470     TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6471
6472     TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6473     TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6474
6475     TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El),
6476
6477     TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El),
6478     TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El),
6479
6480     TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El),
6481     TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El),
6482     TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El),
6483     TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El),
6484     TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El),
6485     TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El),
6486     TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El),
6487     TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El),
6488
6489     TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El),
6490     TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El),
6491     TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El),
6492     TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El),
6493
6494     TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0),
6495     TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0),
6496     TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero),
6497     TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero),
6498
6499     TEST_c_c (clog10, plus_infty, qnan_value, plus_infty, qnan_value),
6500     TEST_c_c (clog10, minus_infty, qnan_value, plus_infty, qnan_value),
6501
6502     TEST_c_c (clog10, qnan_value, plus_infty, plus_infty, qnan_value),
6503     TEST_c_c (clog10, qnan_value, minus_infty, plus_infty, qnan_value),
6504
6505     TEST_c_c (clog10, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6506     TEST_c_c (clog10, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6507     TEST_c_c (clog10, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6508     TEST_c_c (clog10, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6509
6510     TEST_c_c (clog10, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6511     TEST_c_c (clog10, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6512     TEST_c_c (clog10, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6513     TEST_c_c (clog10, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6514
6515     TEST_c_c (clog10, qnan_value, qnan_value, qnan_value, qnan_value),
6516
6517     TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L),
6518     TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L),
6519
6520     TEST_c_c (clog10, 0x1.fffffep+127L, 0x1.fffffep+127L, 38.68235441693561449174780668781319348761L, M_PI4_LOG10El),
6521     TEST_c_c (clog10, 0x1.fffffep+127L, 1.0L, 38.53183941910362389414093724045094697423L, 1.276276851248440096917018665609900318458e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6522     TEST_c_c (clog10, 0x1p-149L, 0x1p-149L, -44.70295435610120748924022586658721447508L, M_PI4_LOG10El),
6523     TEST_c_c (clog10, 0x1p-147L, 0x1p-147L, -44.10089436477324509881274807713822842154L, M_PI4_LOG10El),
6524
6525 #ifndef TEST_FLOAT
6526     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 308.4052305577487344482591243175787477115L, M_PI4_LOG10El),
6527     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 308.3031705664207720674749211936626341569L, 0.2013595981366865903254995612594728746470L),
6528     TEST_c_c (clog10, 0x1p-1074L, 0x1p-1074L, -323.1557003452838130619487034867432642357L, M_PI4_LOG10El),
6529     TEST_c_c (clog10, 0x1p-1073L, 0x1p-1073L, -322.8546703496198318667349645920187712089L, M_PI4_LOG10El),
6530 #endif
6531
6532 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6533     TEST_c_c (clog10, 0x1.fp+16383L, 0x1.fp+16383L, 4932.212175672014259683102930239951947672L, M_PI4_LOG10El),
6534     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p+16383L, 4932.112944269463028900262609694408579449L, 0.2069271710841128115912940666587802677383L),
6535     TEST_c_c (clog10, 0x1p-16440L, 0x1p-16441L, -4948.884673709346821106688037612752099609L, 0.2013595981366865710389502301937289472543L),
6536 #endif
6537
6538     TEST_c_c (clog10, 0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6539     TEST_c_c (clog10, -0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6540     TEST_c_c (clog10, 0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6541     TEST_c_c (clog10, -0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6542     TEST_c_c (clog10, -0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, 1.364376353841841347485783625431355770210L),
6543     TEST_c_c (clog10, -0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, -1.364376353841841347485783625431355770210L),
6544 #ifdef TEST_FLOAT
6545     TEST_c_c (clog10, 0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, plus_zero, UNDERFLOW_EXCEPTION),
6546     TEST_c_c (clog10, 0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, minus_zero, UNDERFLOW_EXCEPTION),
6547 #endif
6548
6549 #ifndef TEST_FLOAT
6550     TEST_c_c (clog10, 0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6551     TEST_c_c (clog10, -0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6552     TEST_c_c (clog10, 0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6553     TEST_c_c (clog10, -0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6554     TEST_c_c (clog10, -0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, 1.364376353841841347485783625431355770210L),
6555     TEST_c_c (clog10, -0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, -1.364376353841841347485783625431355770210L),
6556 #endif
6557 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6558     TEST_c_c (clog10, 0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, plus_zero, UNDERFLOW_EXCEPTION),
6559     TEST_c_c (clog10, 0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, minus_zero, UNDERFLOW_EXCEPTION),
6560 #endif
6561
6562 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6563     TEST_c_c (clog10, 0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6564     TEST_c_c (clog10, -0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6565     TEST_c_c (clog10, 0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6566     TEST_c_c (clog10, -0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6567     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6568     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6569     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6570     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6571 # if LDBL_MANT_DIG >= 113
6572     TEST_c_c (clog10, 0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6573     TEST_c_c (clog10, -0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6574     TEST_c_c (clog10, 0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6575     TEST_c_c (clog10, -0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6576     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6577     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6578     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6579     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6580 # endif
6581 #endif
6582
6583     TEST_c_c (clog10, 1.0L, 0x1.234566p-10L, 2.680828048441605163181684680300513080769e-7L, 4.825491868832381486767558728169977751564e-4L),
6584     TEST_c_c (clog10, -1.0L, 0x1.234566p-20L, 2.556638434669064077889576526006849923281e-13L, 1.364375882602207106407956770293808181427L),
6585     TEST_c_c (clog10, 0x1.234566p-30L, 1.0L, 2.438200411482400072282924063740535840474e-19L, 6.821881764607257184291586401763604544928e-1L),
6586     TEST_c_c (clog10, -0x1.234566p-40L, -1.0L, 2.325249110681915353442924915876654139373e-25L, -6.821881769213700828789403802671540158935e-1L),
6587     TEST_c_c (clog10, 0x1.234566p-50L, 1.0L, 2.217530356103816369479108963807448194409e-31L, 6.821881769209202348667823902864283966959e-1L),
6588     TEST_c_c (clog10, 0x1.234566p-60L, 1.0L, 2.114801746467415208319767917450504756866e-37L, 6.821881769209206733143018621078368211515e-1L),
6589     TEST_c_c (clog10, 0x1p-61L, 1.0L, 4.084085680564517578238994467153626207224e-38L, 6.821881769209206735545466044044889962925e-1L),
6590     TEST_c_c (clog10, 0x1p-62L, 1.0L, 1.021021420141129394559748616788406551878e-38L, 6.821881769209206736487192085600834406988e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6591     TEST_c_c (clog10, 0x1p-63L, 1.0L, 2.552553550352823486399371541971016379740e-39L, 6.821881769209206736958055106378806629019e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6592 #ifndef TEST_FLOAT
6593     TEST_c_c (clog10, 0x1p-509L, 1.0L, 7.730698388614835910296270976605350994446e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6594     TEST_c_c (clog10, 0x1p-510L, 1.0L, 1.932674597153708977574067744151337748612e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6595     TEST_c_c (clog10, 0x1p-511L, 1.0L, 4.831686492884272443935169360378344371529e-309L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6596 #endif
6597 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6598     TEST_c_c (clog10, 0x1p-8189L, 1.0L, 1.168114274114528946314738738025008370069e-4931L, 6.821881769209206737428918127156778851051e-1L),
6599     TEST_c_c (clog10, 0x1p-8190L, 1.0L, 2.920285685286322365786846845062520925172e-4932L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6600     TEST_c_c (clog10, 0x1p-8191L, 1.0L, 7.300714213215805914467117112656302312931e-4933L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6601 #endif
6602
6603     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-10L, 3.604093470239754109961125085078190708674e-5L, 4.824745078422174667425851670822596859720e-4L),
6604     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-100L, 3.577293486783822178310971763308187385546e-5L, 3.897399639875661463735636919790792140598e-31L),
6605 #ifndef TEST_FLOAT
6606     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-30L, 1.150487028947346337782682105935961875822e-10L, 1.364376353381646356131680448946397884147L),
6607     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 1.150487026509145544402795327729455391948e-10L, 1.364376353841841347485783625431355770210L),
6608 #endif
6609 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6610     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 4.285899851347756188767674032946882584784e-19L, 4.285899850759344225805480528847018395861e-19L),
6611     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 4.285899851347756186652871946325962330640e-19L, 4.611541215247321502041995872887317363241e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6612 #endif
6613
6614     TEST_c_c (clog10, 0x0.ffffffp0L, 0x0.ffffffp-100L, -2.588596909321764128428416045209904492216e-8L, 3.425979381266895667295625489912064603415e-31L),
6615 #ifndef TEST_FLOAT
6616     TEST_c_c (clog10, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -4.821637332766435821255375046554377090472e-17L, 4.053112396770095089737411317782466262176e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6617 #endif
6618 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6619     TEST_c_c (clog10, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -2.354315103889861110220423157644627849164e-20L, 1.541165759405643564697852372112893034397e-4516L),
6620 #endif
6621
6622     TEST_c_c (clog10, 0x1a6p-10L, 0x3a5p-10L, -6.2126412844802358329771948751248003038444e-07L, 0.4977135139537443711784513409096950995985L),
6623     TEST_c_c (clog10, 0xf2p-10L, 0x3e3p-10L, 2.6921240173351112953324592659528481616879e-06L, 0.5785726025799636431142862788413361783862L),
6624     TEST_c_c (clog10, 0x4d4ep-15L, 0x6605p-15L, -7.0781945783414996953799915941870192015212e-09L, 0.4005747524909781155537088181659175147564L),
6625     TEST_c_c (clog10, 0x2818p-15L, 0x798fp-15L, 6.6737261053986614395049481326819059203910e-09L, 0.5438241985991753781478398141908629586460L),
6626     TEST_c_c (clog10, 0x9b57bp-20L, 0xcb7b4p-20L, -1.7182001068739620267773842120965071561416e-11L, 0.3990121149225253562859800593935899629087L),
6627     TEST_c_c (clog10, 0x2731p-20L, 0xfffd0p-20L, 1.9156943718715958194239364991329064049438e-11L, 0.6780326907904082601285090019969008967595L),
6628     TEST_c_c (clog10, 0x2ede88p-23L, 0x771c3fp-23L, -1.9440841725722970687903291200493082253766e-13L, 0.5193774116724956222518530053006822210323L),
6629     TEST_c_c (clog10, 0x11682p-23L, 0x7ffed1p-23L, 5.0916490233953865181284669870035717560498e-13L, 0.6784968969384861816694467029319146542069L),
6630     TEST_c_c (clog10, 0xa1f2c1p-24L, 0xc643aep-24L, -4.5516256421319921959681423447271490869664e-14L, 0.3847315790697197749315054516562206543710L),
6631     TEST_c_c (clog10, 0x659feap-24L, 0xeaf6f9p-24L, 1.6200701438094619117335617123525612051457e-14L, 0.5049027913635038013499728086604870749732L),
6632 #ifndef TEST_FLOAT
6633     TEST_c_c (clog10, 0x4447d7175p-35L, 0x6c445e00ap-35L, -6.4375803621988389731799033530075237868110e-21L, 0.4378257977686804492768642780897650927167L),
6634     TEST_c_c (clog10, 0x2dd46725bp-35L, 0x7783a1284p-35L, 1.9312741086596516918394613098872836703188e-20L, 0.5231613813514771042838490538484014771862L),
6635     TEST_c_c (clog10, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -1.3155760824064879362415202279780039150764e-26L, 0.3473590599762514228227328130640352044313L),
6636     TEST_c_c (clog10, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 2.3329549194675052736016290082882121135546e-26L, 0.4561756099441139182878993697611751382976L),
6637     TEST_c_c (clog10, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -2.6979587627476803379953050733225113494503e-30L, 0.6472785229986997177606324374555347813105L),
6638     TEST_c_c (clog10, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 1.3918041236396763648388478552321724382899e-29L, 0.6263795733790237053262025311642907438291L),
6639     TEST_c_c (clog10, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -4.2289432987513243393180377141513840878196e-30L, 0.4252020027092323591068799049905597805296L),
6640     TEST_c_c (clog10, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 3.6079845358966994996207055940336690133424e-30L, 0.5243112258263349992771652393178033846555L),
6641     TEST_c_c (clog10, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -1.0893543813872082317104059174982092534059e-30L, 0.5954257879188711495921161433751775633232L),
6642     TEST_c_c (clog10, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 4.4163015461643576961232672330852798804976e-31L, 0.3564851427422832755956993418877523303529L),
6643     TEST_c_c (clog10, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 2.2081507730821788480616336165447731164865e-32L, 0.5484039935757001196548030312819898864760L),
6644     TEST_c_c (clog10, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -2.2583360179249556400630343805573865814771e-32L, 0.6639894257763289307423302343317622430835L),
6645 #endif
6646 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6647     TEST_c_c (clog10, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -5.1816837072162316773907242302011632570857e-37L, 0.5386167838952956925896424154370364458140L),
6648     TEST_c_c (clog10, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 2.7822833698845776001753149807484078521508e-37L, 0.3992725998539071066769046272515417679815L),
6649     TEST_c_c (clog10, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -1.0146400362652473358437501879334790111898e-37L, 0.5149047982335273098246594109614460842099L),
6650     TEST_c_c (clog10, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 1.0529283395205396881397407610630442563938e-37L, 0.4947949395762683446121140513971996916447L),
6651     TEST_c_c (clog10, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -4.3074341162203896332989394770760901408798e-39L, 0.5709443672155660428417571212549720987784L),
6652 #endif
6653 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6654     TEST_c_c (clog10, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -4.5643214291682663316715446865040356750881e-46L, 0.4564083863660793840592614609053162690362L),
6655     TEST_c_c (clog10, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 5.8575458340992751256451490143468457830297e-44L, 0.5103174273246635294300470585396890237265L),
6656     TEST_c_c (clog10, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -2.0748709499710785084693619097712106753591e-50L, 0.3645447681189598740620098186365764884771L),
6657     TEST_c_c (clog10, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 1.2333149003324592532859843519619084433953e-50L, 0.3973779298829931059309198145608711073016L),
6658     TEST_c_c (clog10, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -1.5221162575729652613635150540947625639689e-57L, 0.5795934880811949230121092882659698986043L),
6659     TEST_c_c (clog10, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 1.7850272475173865337808494725293124613817e-56L, 0.6338990862456906754888183278564382516852L),
6660     TEST_c_c (clog10, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -6.2023045024810589256360494043570293518879e-63L, 0.5938345819561308555003145899438513900776L),
6661     TEST_c_c (clog10, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 4.3548095442952115860848857519953610343042e-63L, 0.3558376234889641500775150477035448866763L),
6662     TEST_c_c (clog10, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -7.5879257211204444302994221436282805900756e-64L, 0.5119945461708707332160859198685423099187L),
6663     TEST_c_c (clog10, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 1.8804859395820231849002915747252695375405e-63L, 0.6404513901551516189871978418046651877394L),
6664 #endif
6665 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6666     TEST_c_c (clog10, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -5.0742964549782184008668435276046798273476e-67L, 0.5757527761596220360985719127090110408283L),
6667     TEST_c_c (clog10, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 6.5482587585671294601662599808612773010057e-66L, 0.5601289501766423782280643144987875760229L),
6668     TEST_c_c (clog10, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -3.1210950417524756037077807411854181477733e-67L, 0.3791463562379872585396164879981280044658L),
6669     TEST_c_c (clog10, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 2.8774482675253468630312378575186855052697e-66L, 0.4571561610046221605554903008571429975493L),
6670     TEST_c_c (clog10, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 1.9985076315737626043096596036300177494613e-67L, 0.5883569274304683249184005177865521205198L),
6671     TEST_c_c (clog10, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 1.1288799405048268615023706955013387413519e-67L, 0.6137587762850841972073301550420510507903L),
6672 #endif
6673     END_DATA (clog10)
6674   };
6675
6676 static void
6677 clog10_test (void)
6678 {
6679   errno = 0;
6680   FUNC(clog10) (BUILD_COMPLEX (0.7L, 1.2L));
6681   if (errno == ENOSYS)
6682     /* Function not implemented.  */
6683     return;
6684
6685   START (clog10);
6686   RUN_TEST_LOOP_c_c (clog10, clog10_test_data, );
6687   END (clog10, complex);
6688 }
6689
6690
6691 static const struct test_c_c_data conj_test_data[] =
6692   {
6693     START_DATA (conj),
6694     TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero),
6695     TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0),
6696     TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value),
6697     TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty),
6698     TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty),
6699     TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0),
6700     TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0),
6701     END_DATA (conj)
6702   };
6703
6704 static void
6705 conj_test (void)
6706 {
6707   START (conj);
6708   RUN_TEST_LOOP_c_c (conj, conj_test_data, );
6709   END (conj, complex);
6710 }
6711
6712
6713 static const struct test_ff_f_data copysign_test_data[] =
6714   {
6715     START_DATA (copysign),
6716     TEST_ff_f (copysign, 0, 4, 0),
6717     TEST_ff_f (copysign, 0, -4, minus_zero),
6718     TEST_ff_f (copysign, minus_zero, 4, 0),
6719     TEST_ff_f (copysign, minus_zero, -4, minus_zero),
6720
6721     TEST_ff_f (copysign, plus_infty, 0, plus_infty),
6722     TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty),
6723     TEST_ff_f (copysign, minus_infty, 0, plus_infty),
6724     TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty),
6725
6726     TEST_ff_f (copysign, 0, plus_infty, 0),
6727     TEST_ff_f (copysign, 0, minus_zero, minus_zero),
6728     TEST_ff_f (copysign, minus_zero, plus_infty, 0),
6729     TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero),
6730
6731     /* XXX More correctly we would have to check the sign of the NaN.  */
6732     TEST_ff_f (copysign, qnan_value, 0, qnan_value),
6733     TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value),
6734     TEST_ff_f (copysign, -qnan_value, 0, qnan_value),
6735     TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value),
6736     END_DATA (copysign)
6737   };
6738
6739 static void
6740 copysign_test (void)
6741 {
6742   START (copysign);
6743   RUN_TEST_LOOP_ff_f (copysign, copysign_test_data, );
6744   END (copysign);
6745 }
6746
6747
6748 static const struct test_f_f_data cos_test_data[] =
6749   {
6750     START_DATA (cos),
6751     TEST_f_f (cos, 0, 1),
6752     TEST_f_f (cos, minus_zero, 1),
6753     TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6754     TEST_f_f (cos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6755     TEST_f_f (cos, qnan_value, qnan_value, ERRNO_UNCHANGED),
6756
6757     TEST_f_f (cos, M_PI_6l * 2.0, 0.5),
6758     TEST_f_f (cos, M_PI_6l * 4.0, -0.5),
6759
6760     /* The value of M_PI_2l is never exactly PI/2, and therefore the
6761        answer is never exactly zero. The answer is equal to the error
6762        in rounding PI/2 for the type used.  Thus the answer is unique
6763        to each type.  */
6764 #ifdef TEST_FLOAT
6765     /* 32-bit float.  */
6766     TEST_f_f (cos, M_PI_2l, -0x1.777a5cp-25L),
6767 #endif
6768 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
6769     /* 64-bit double or 64-bit long double.  */
6770     TEST_f_f (cos, M_PI_2l, 0x1.1a62633145c07p-54L),
6771 #endif
6772 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
6773     /* 96-bit long double.  */
6774     TEST_f_f (cos, M_PI_2l, -0xe.ce675d1fc8f8cbbp-69L),
6775 #endif
6776 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
6777     /* 128-bit IBM long double.  */
6778     TEST_f_f (cos, M_PI_2l, 0x1.c1cd129024e088a67cc74020bcp-107L),
6779 #endif
6780 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
6781     /* 128-bit long double.  */
6782     TEST_f_f (cos, M_PI_2l, 0x1.cd129024e088a67cc74020bbea64p-115L),
6783 #endif
6784
6785     TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L),
6786
6787     TEST_f_f (cos, 0x1p65, 0.99888622066058013610642172179340364209972L),
6788     TEST_f_f (cos, -0x1p65, 0.99888622066058013610642172179340364209972L),
6789
6790 #ifdef TEST_DOUBLE
6791     TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473),
6792 #endif
6793
6794     TEST_f_f (cos, 0x1.442f74p+15, 2.4407839902314016628485779006274989801517e-06L),
6795
6796 #ifndef TEST_FLOAT
6797     TEST_f_f (cos, 1e22, 0.5232147853951389454975944733847094921409L),
6798     TEST_f_f (cos, 0x1p1023, -0.826369834614147994500785680811743734805L),
6799 #endif
6800
6801 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6802     TEST_f_f (cos, 0x1p16383L, 0.9210843909921906206874509522505756251609L),
6803 #endif
6804
6805     TEST_f_f (cos, 0x1p+120, -9.25879022854837867303861764107414946730833e-01L),
6806     TEST_f_f (cos, 0x1p+127, 7.81914638714960072263910298466369236613162e-01L),
6807     TEST_f_f (cos, 0x1.fffff8p+127, 9.98819362551949040703862043664101081064641e-01L),
6808     TEST_f_f (cos, 0x1.fffffep+127, 8.53021039830304158051791467692161107353094e-01L),
6809     TEST_f_f (cos, 0x1p+50, 8.68095904660550604334592502063501320395739e-01L),
6810     TEST_f_f (cos, 0x1p+28, -1.65568979490578758865468278195361551113358e-01L),
6811     END_DATA (cos)
6812   };
6813
6814 static void
6815 cos_test (void)
6816 {
6817   errno = 0;
6818   FUNC(cos) (0);
6819   if (errno == ENOSYS)
6820     /* Function not implemented.  */
6821     return;
6822
6823   START (cos);
6824   RUN_TEST_LOOP_f_f (cos, cos_test_data, );
6825   END (cos);
6826 }
6827
6828
6829 static const struct test_f_f_data cos_tonearest_test_data[] =
6830   {
6831     START_DATA (cos_tonearest),
6832     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6833     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6834     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6835     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6836     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6837     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6838     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6839     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6840     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6841     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6842     END_DATA (cos_tonearest)
6843   };
6844
6845 static void
6846 cos_test_tonearest (void)
6847 {
6848   errno = 0;
6849   FUNC(cos) (0);
6850   if (errno == ENOSYS)
6851     /* Function not implemented.  */
6852     return;
6853
6854   START (cos_tonearest);
6855   RUN_TEST_LOOP_f_f (cos, cos_tonearest_test_data, FE_TONEAREST);
6856   END (cos_tonearest);
6857 }
6858
6859
6860 static const struct test_f_f_data cos_towardzero_test_data[] =
6861   {
6862     START_DATA (cos_towardzero),
6863     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6864     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6865     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6866     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6867     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6868     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6869     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6870     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6871     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6872     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6873     END_DATA (cos_towardzero)
6874   };
6875
6876 static void
6877 cos_test_towardzero (void)
6878 {
6879   errno = 0;
6880   FUNC(cos) (0);
6881   if (errno == ENOSYS)
6882     /* Function not implemented.  */
6883     return;
6884
6885   START (cos_towardzero);
6886   RUN_TEST_LOOP_f_f (cos, cos_towardzero_test_data, FE_TOWARDZERO);
6887   END (cos_towardzero);
6888 }
6889
6890
6891 static const struct test_f_f_data cos_downward_test_data[] =
6892   {
6893     START_DATA (cos_downward),
6894     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6895     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6896     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6897     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6898     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6899     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6900     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6901     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6902     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6903     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6904     END_DATA (cos_downward)
6905   };
6906
6907 static void
6908 cos_test_downward (void)
6909 {
6910   errno = 0;
6911   FUNC(cos) (0);
6912   if (errno == ENOSYS)
6913     /* Function not implemented.  */
6914     return;
6915
6916   START (cos_downward);
6917   RUN_TEST_LOOP_f_f (cos, cos_downward_test_data, FE_DOWNWARD);
6918   END (cos_downward);
6919 }
6920
6921
6922 static const struct test_f_f_data cos_upward_test_data[] =
6923   {
6924     START_DATA (cos_upward),
6925     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6926     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6927     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6928     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6929     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6930     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6931     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6932     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6933     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6934     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6935     END_DATA (cos_upward)
6936   };
6937
6938 static void
6939 cos_test_upward (void)
6940 {
6941   errno = 0;
6942   FUNC(cos) (0);
6943   if (errno == ENOSYS)
6944     /* Function not implemented.  */
6945     return;
6946
6947   START (cos_upward);
6948   RUN_TEST_LOOP_f_f (cos, cos_upward_test_data, FE_UPWARD);
6949   END (cos_upward);
6950 }
6951
6952
6953 static const struct test_f_f_data cosh_test_data[] =
6954   {
6955     START_DATA (cosh),
6956     TEST_f_f (cosh, 0, 1),
6957     TEST_f_f (cosh, minus_zero, 1),
6958
6959 #ifndef TEST_INLINE
6960     TEST_f_f (cosh, plus_infty, plus_infty),
6961     TEST_f_f (cosh, minus_infty, plus_infty),
6962 #endif
6963     TEST_f_f (cosh, qnan_value, qnan_value),
6964
6965     TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L),
6966
6967 #ifndef TEST_FLOAT
6968     TEST_f_f (cosh, 709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6969     TEST_f_f (cosh, -709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6970 #endif
6971     END_DATA (cosh)
6972   };
6973
6974 static void
6975 cosh_test (void)
6976 {
6977   errno = 0;
6978   FUNC(cosh) (0.7L);
6979   if (errno == ENOSYS)
6980     /* Function not implemented.  */
6981     return;
6982
6983   START (cosh);
6984   RUN_TEST_LOOP_f_f (cosh, cosh_test_data, );
6985   END (cosh);
6986 }
6987
6988
6989 static const struct test_f_f_data cosh_tonearest_test_data[] =
6990   {
6991     START_DATA (cosh_tonearest),
6992     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6993     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6994     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6995     END_DATA (cosh_tonearest)
6996   };
6997
6998 static void
6999 cosh_test_tonearest (void)
7000 {
7001   errno = 0;
7002   FUNC(cosh) (0);
7003   if (errno == ENOSYS)
7004     /* Function not implemented.  */
7005     return;
7006
7007   START (cosh_tonearest);
7008   RUN_TEST_LOOP_f_f (cosh, cosh_tonearest_test_data, FE_TONEAREST);
7009   END (cosh_tonearest);
7010 }
7011
7012
7013 static const struct test_f_f_data cosh_towardzero_test_data[] =
7014   {
7015     START_DATA (cosh_towardzero),
7016     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
7017     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
7018     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
7019     END_DATA (cosh_towardzero)
7020   };
7021
7022 static void
7023 cosh_test_towardzero (void)
7024 {
7025   errno = 0;
7026   FUNC(cosh) (0);
7027   if (errno == ENOSYS)
7028     /* Function not implemented.  */
7029     return;
7030
7031   START (cosh_towardzero);
7032   RUN_TEST_LOOP_f_f (cosh, cosh_towardzero_test_data, FE_TOWARDZERO);
7033   END (cosh_towardzero);
7034 }
7035
7036
7037 static const struct test_f_f_data cosh_downward_test_data[] =
7038   {
7039     START_DATA (cosh_downward),
7040     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
7041     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
7042     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
7043     END_DATA (cosh_downward)
7044   };
7045
7046 static void
7047 cosh_test_downward (void)
7048 {
7049   errno = 0;
7050   FUNC(cosh) (0);
7051   if (errno == ENOSYS)
7052     /* Function not implemented.  */
7053     return;
7054
7055   START (cosh_downward);
7056   RUN_TEST_LOOP_f_f (cosh, cosh_downward_test_data, FE_DOWNWARD);
7057   END (cosh_downward);
7058 }
7059
7060
7061 static const struct test_f_f_data cosh_upward_test_data[] =
7062   {
7063     START_DATA (cosh_upward),
7064     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
7065     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
7066     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
7067     END_DATA (cosh_upward)
7068   };
7069
7070 static void
7071 cosh_test_upward (void)
7072 {
7073   errno = 0;
7074   FUNC(cosh) (0);
7075   if (errno == ENOSYS)
7076     /* Function not implemented.  */
7077     return;
7078
7079   START (cosh_upward);
7080   RUN_TEST_LOOP_f_f (cosh, cosh_upward_test_data, FE_UPWARD);
7081   END (cosh_upward);
7082 }
7083
7084
7085 static void
7086 cpow_test (void)
7087 {
7088   errno = 0;
7089   FUNC(cpow) (BUILD_COMPLEX (1, 0), BUILD_COMPLEX (0, 0));
7090   if (errno == ENOSYS)
7091     /* Function not implemented.  */
7092     return;
7093
7094   START (cpow);
7095
7096   TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0);
7097   TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0);
7098
7099   TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0);
7100   TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0);
7101
7102   TEST_cc_c (cpow, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value);
7103
7104   TEST_cc_c (cpow, 0.75L, 1.25L, 0.75L, 1.25L, 0.117506293914473555420279832210420483L, 0.346552747708338676483025352060418001L);
7105   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 1.0L, 0.0846958290317209430433805274189191353L, 0.513285749182902449043287190519090481L);
7106   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 0.0L, 0.75L, 1.25L);
7107   TEST_cc_c (cpow, 0.75L, 1.25L, 0.0L, 1.0L, 0.331825439177608832276067945276730566L, 0.131338600281188544930936345230903032L);
7108
7109   END (cpow, complex);
7110 }
7111
7112
7113 static const struct test_c_c_data cproj_test_data[] =
7114   {
7115     START_DATA (cproj),
7116     TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0),
7117     TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero),
7118     TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero),
7119     TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0),
7120
7121     TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value),
7122
7123     TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0),
7124     TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero),
7125     TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0),
7126     TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero),
7127
7128     TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0),
7129     TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0),
7130     END_DATA (cproj)
7131   };
7132
7133 static void
7134 cproj_test (void)
7135 {
7136   START (cproj);
7137   RUN_TEST_LOOP_c_c (cproj, cproj_test_data, );
7138   END (cproj, complex);
7139 }
7140
7141
7142 static const struct test_c_f_data creal_test_data[] =
7143   {
7144     START_DATA (creal);
7145     TEST_c_f (creal, 0.0, 1.0, 0.0),
7146     TEST_c_f (creal, minus_zero, 1.0, minus_zero),
7147     TEST_c_f (creal, qnan_value, 1.0, qnan_value),
7148     TEST_c_f (creal, qnan_value, qnan_value, qnan_value),
7149     TEST_c_f (creal, plus_infty, 1.0, plus_infty),
7150     TEST_c_f (creal, minus_infty, 1.0, minus_infty),
7151     TEST_c_f (creal, 2.0, 3.0, 2.0),
7152     END_DATA (creal);
7153   };
7154
7155 static void
7156 creal_test (void)
7157 {
7158   START (creal);
7159   RUN_TEST_LOOP_c_f (creal, creal_test_data, );
7160   END (creal);
7161 }
7162
7163 static const struct test_c_c_data csin_test_data[] =
7164   {
7165     START_DATA (csin),
7166     TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0),
7167     TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0),
7168     TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero),
7169     TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero),
7170
7171     TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty),
7172     TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty),
7173     TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty),
7174     TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty),
7175
7176     TEST_c_c (csin, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7177     TEST_c_c (csin, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7178     TEST_c_c (csin, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7179     TEST_c_c (csin, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7180
7181     TEST_c_c (csin, plus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7182     TEST_c_c (csin, minus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7183     TEST_c_c (csin, plus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7184     TEST_c_c (csin, minus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7185
7186     TEST_c_c (csin, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7187     TEST_c_c (csin, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7188     TEST_c_c (csin, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7189     TEST_c_c (csin, minus_infty, -6.75,  qnan_value, qnan_value, INVALID_EXCEPTION),
7190
7191     TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty),
7192     TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty),
7193     TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty),
7194     TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty),
7195
7196     TEST_c_c (csin, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7197     TEST_c_c (csin, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7198
7199     TEST_c_c (csin, qnan_value, plus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7200     TEST_c_c (csin, qnan_value, minus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7201
7202     TEST_c_c (csin, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7203     TEST_c_c (csin, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7204
7205     TEST_c_c (csin, 0.0, qnan_value, 0.0, qnan_value),
7206     TEST_c_c (csin, minus_zero, qnan_value, minus_zero, qnan_value),
7207
7208     TEST_c_c (csin, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7209     TEST_c_c (csin, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7210
7211     TEST_c_c (csin, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7212     TEST_c_c (csin, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7213
7214     TEST_c_c (csin, qnan_value, qnan_value, qnan_value, qnan_value),
7215
7216     TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L),
7217     TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L),
7218
7219     TEST_c_c (csin, 0.75, 89.5, 2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7220     TEST_c_c (csin, 0.75, -89.5, 2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7221     TEST_c_c (csin, -0.75, 89.5, -2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7222     TEST_c_c (csin, -0.75, -89.5, -2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7223
7224 #ifndef TEST_FLOAT
7225     TEST_c_c (csin, 0.75, 710.5, 1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7226     TEST_c_c (csin, 0.75, -710.5, 1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7227     TEST_c_c (csin, -0.75, 710.5, -1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7228     TEST_c_c (csin, -0.75, -710.5, -1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7229 #endif
7230
7231 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7232     TEST_c_c (csin, 0.75, 11357.25, 8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7233     TEST_c_c (csin, 0.75, -11357.25, 8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7234     TEST_c_c (csin, -0.75, 11357.25, -8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7235     TEST_c_c (csin, -0.75, -11357.25, -8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7236 #endif
7237
7238 #ifdef TEST_FLOAT
7239     TEST_c_c (csin, 0x1p-149, 180, 1.043535896672617552965983803453927655332e33L, plus_infty, OVERFLOW_EXCEPTION),
7240 #endif
7241
7242 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7243     TEST_c_c (csin, 0x1p-1074, 1440, 5.981479269486130556466515778180916082415e301L, plus_infty, OVERFLOW_EXCEPTION),
7244 #endif
7245
7246 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7247     TEST_c_c (csin, 0x1p-16434L, 22730, 1.217853148905605987081057582351152052687e4924L, plus_infty, OVERFLOW_EXCEPTION),
7248 #endif
7249
7250     TEST_c_c (csin, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7251     TEST_c_c (csin, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7252     END_DATA (csin)
7253   };
7254
7255 static void
7256 csin_test (void)
7257 {
7258   errno = 0;
7259   FUNC(csin) (BUILD_COMPLEX (0.7L, 1.2L));
7260   if (errno == ENOSYS)
7261     /* Function not implemented.  */
7262     return;
7263
7264   START (csin);
7265   RUN_TEST_LOOP_c_c (csin, csin_test_data, );
7266   END (csin, complex);
7267 }
7268
7269
7270 static const struct test_c_c_data csinh_test_data[] =
7271   {
7272     START_DATA (csinh),
7273     TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0),
7274     TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0),
7275     TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero),
7276     TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero),
7277
7278     TEST_c_c (csinh, 0.0, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7279     TEST_c_c (csinh, minus_zero, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7280     TEST_c_c (csinh, 0.0, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7281     TEST_c_c (csinh, minus_zero, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7282
7283     TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0),
7284     TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0),
7285     TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero),
7286     TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero),
7287
7288     TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7289     TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7290     TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7291     TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7292
7293     TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty),
7294     TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty),
7295     TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty),
7296     TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty),
7297
7298     TEST_c_c (csinh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7299     TEST_c_c (csinh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7300     TEST_c_c (csinh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7301     TEST_c_c (csinh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7302
7303     TEST_c_c (csinh, 0.0, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7304     TEST_c_c (csinh, minus_zero, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7305
7306     TEST_c_c (csinh, plus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7307     TEST_c_c (csinh, minus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7308
7309     TEST_c_c (csinh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7310     TEST_c_c (csinh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7311
7312     TEST_c_c (csinh, qnan_value, 0.0, qnan_value, 0.0),
7313     TEST_c_c (csinh, qnan_value, minus_zero, qnan_value, minus_zero),
7314
7315     TEST_c_c (csinh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7316     TEST_c_c (csinh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7317
7318     TEST_c_c (csinh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7319     TEST_c_c (csinh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7320
7321     TEST_c_c (csinh, qnan_value, qnan_value, qnan_value, qnan_value),
7322
7323     TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L),
7324     TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L),
7325
7326     TEST_c_c (csinh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7327     TEST_c_c (csinh, -89.5, 0.75, -2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7328     TEST_c_c (csinh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7329     TEST_c_c (csinh, -89.5, -0.75, -2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7330
7331 #ifndef TEST_FLOAT
7332     TEST_c_c (csinh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7333     TEST_c_c (csinh, -710.5, 0.75, -1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7334     TEST_c_c (csinh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7335     TEST_c_c (csinh, -710.5, -0.75, -1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7336 #endif
7337
7338 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7339     TEST_c_c (csinh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7340     TEST_c_c (csinh, -11357.25, 0.75, -9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7341     TEST_c_c (csinh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7342     TEST_c_c (csinh, -11357.25, -0.75, -9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7343 #endif
7344
7345 #ifdef TEST_FLOAT
7346     TEST_c_c (csinh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
7347 #endif
7348
7349 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7350     TEST_c_c (csinh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
7351 #endif
7352
7353 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7354     TEST_c_c (csinh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
7355 #endif
7356
7357     TEST_c_c (csinh, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7358     TEST_c_c (csinh, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7359     END_DATA (csinh)
7360   };
7361
7362 static void
7363 csinh_test (void)
7364 {
7365   errno = 0;
7366   FUNC(csinh) (BUILD_COMPLEX (0.7L, 1.2L));
7367   if (errno == ENOSYS)
7368     /* Function not implemented.  */
7369     return;
7370
7371   START (csinh);
7372   RUN_TEST_LOOP_c_c (csinh, csinh_test_data, );
7373   END (csinh, complex);
7374 }
7375
7376
7377 static const struct test_c_c_data csqrt_test_data[] =
7378   {
7379     START_DATA (csqrt),
7380     TEST_c_c (csqrt, 0, 0, 0.0, 0.0),
7381     TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero),
7382     TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0),
7383     TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero),
7384
7385     TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty),
7386     TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty),
7387     TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty),
7388     TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty),
7389
7390     TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0),
7391     TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0),
7392     TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero),
7393     TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero),
7394
7395     TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty),
7396     TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty),
7397     TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty),
7398     TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty),
7399     TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty),
7400     TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty),
7401     TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty),
7402     TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty),
7403     TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty),
7404     TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty),
7405     TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty),
7406     TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty),
7407
7408     TEST_c_c (csqrt, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7409
7410     TEST_c_c (csqrt, plus_infty, qnan_value, plus_infty, qnan_value),
7411
7412     TEST_c_c (csqrt, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7413     TEST_c_c (csqrt, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7414     TEST_c_c (csqrt, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7415     TEST_c_c (csqrt, -1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7416
7417     TEST_c_c (csqrt, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7418     TEST_c_c (csqrt, qnan_value, 8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7419     TEST_c_c (csqrt, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7420     TEST_c_c (csqrt, qnan_value, -8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7421
7422     TEST_c_c (csqrt, qnan_value, qnan_value, qnan_value, qnan_value),
7423
7424     TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0),
7425     TEST_c_c (csqrt, -1, 0, 0.0, 1.0),
7426     TEST_c_c (csqrt, 0, 2, 1.0, 1.0),
7427     TEST_c_c (csqrt, 119, 120, 12.0, 5.0),
7428     TEST_c_c (csqrt, 0.75L, 1.25L, 1.05065169626078392338656675760808326L, 0.594868882070379067881984030639932657L),
7429     TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L),
7430     TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L),
7431     /* Principal square root should be returned (i.e., non-negative real
7432        part).  */
7433     TEST_c_c (csqrt, 0, -1, M_SQRT1_2l, -M_SQRT1_2l),
7434
7435     TEST_c_c (csqrt, 0x1.fffffep+127L, 0x1.fffffep+127L, 2.026714405498316804978751017492482558075e+19L, 8.394925938143272988211878516208015586281e+18L),
7436     TEST_c_c (csqrt, 0x1.fffffep+127L, 1.0L, 1.844674352395372953599975585936590505260e+19L, 2.710505511993121390769065968615872097053e-20L),
7437     TEST_c_c (csqrt, 0x1p-149L, 0x1p-149L, 4.112805464342778798097003462770175200803e-23L, 1.703579802732953750368659735601389709551e-23L),
7438     TEST_c_c (csqrt, 0x1p-147L, 0x1p-147L, 8.225610928685557596194006925540350401606e-23L, 3.407159605465907500737319471202779419102e-23L),
7439
7440     TEST_c_c (csqrt, plus_zero, 0x1p-149L, 2.646977960169688559588507814623881131411e-23L, 2.646977960169688559588507814623881131411e-23L),
7441     TEST_c_c (csqrt, 0x1p-50L, 0x1p-149L, 2.980232238769531250000000000000000000000e-8L, 2.350988701644575015937473074444491355637e-38L),
7442 #ifdef TEST_FLOAT
7443     TEST_c_c (csqrt, 0x1p+127L, 0x1p-149L, 1.304381782533278221234957180625250836888e19L, plus_zero, UNDERFLOW_EXCEPTION),
7444 #endif
7445     TEST_c_c (csqrt, 0x1p-149L, 0x1p+127L, 9.223372036854775808000000000000000000000e18L, 9.223372036854775808000000000000000000000e18L),
7446     TEST_c_c (csqrt, 0x1.000002p-126L, 0x1.000002p-126L, 1.191195773697904627170323731331667740087e-19L, 4.934094449071842328766868579214125217132e-20L),
7447     TEST_c_c (csqrt, -0x1.000002p-126L, -0x1.000002p-126L, 4.934094449071842328766868579214125217132e-20L, -1.191195773697904627170323731331667740087e-19L),
7448
7449 #ifndef TEST_FLOAT
7450     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 1.473094556905565378990473658199034571917e+154L, 6.101757441282702188537080005372547713595e+153L),
7451     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 1.379778091031440685006200821918878702861e+154L, 3.257214233483129514781233066898042490248e+153L),
7452     TEST_c_c (csqrt, 0x1p-1074L, 0x1p-1074L, 2.442109726130830256743814843868934877597e-162L, 1.011554969366634726113090867589031782487e-162L),
7453     TEST_c_c (csqrt, 0x1p-1073L, 0x1p-1073L, 3.453664695497464982856905711457966660085e-162L, 1.430554756764195530630723976279903095110e-162L),
7454
7455     TEST_c_c (csqrt, plus_zero, 0x1p-1074L, 1.571727784702628688909515672805082228285e-162L, 1.571727784702628688909515672805082228285e-162L),
7456     TEST_c_c (csqrt, 0x1p-500L, 0x1p-1074L, 5.527147875260444560247265192192255725514e-76L, 4.469444793151709302716387622440056066334e-249L),
7457 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7458     TEST_c_c (csqrt, 0x1p+1023L, 0x1p-1074L, 9.480751908109176726832526455652159260085e153L, plus_zero, UNDERFLOW_EXCEPTION),
7459 #endif
7460     TEST_c_c (csqrt, 0x1p-1074L, 0x1p+1023L, 6.703903964971298549787012499102923063740e153L, 6.703903964971298549787012499102923063740e153L),
7461     TEST_c_c (csqrt, 0x1.0000000000001p-1022L, 0x1.0000000000001p-1022L, 1.638872094839911521020410942677082920935e-154L, 6.788430486774966350907249113759995429568e-155L),
7462     TEST_c_c (csqrt, -0x1.0000000000001p-1022L, -0x1.0000000000001p-1022L, 6.788430486774966350907249113759995429568e-155L, -1.638872094839911521020410942677082920935e-154L),
7463 #endif
7464
7465 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7466     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1.fp+16383L, 1.179514222452201722651836720466795901016e+2466L, 4.885707879516577666702435054303191575148e+2465L),
7467     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1p+16383L, 1.106698967236475180613254276996359485630e+2466L, 2.687568007603946993388538156299100955642e+2465L),
7468     TEST_c_c (csqrt, 0x1p-16440L, 0x1p-16441L, 3.514690655930285351254618340783294558136e-2475L,  8.297059146828716918029689466551384219370e-2476L),
7469
7470     TEST_c_c (csqrt, plus_zero, 0x1p-16445L, 4.269191686890197837775136325621239761720e-2476L, 4.269191686890197837775136325621239761720e-2476L),
7471     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16445L, 2.660791472672778409283210520357607795518e-753L, 6.849840675828785164910701384823702064234e-4199L),
7472     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16445L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7473     TEST_c_c (csqrt, 0x1p-16445L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7474     TEST_c_c (csqrt, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-16382L, 2.014551439675644900131815801350165472778e-2466L, 8.344545284118961664300307045791497724440e-2467L),
7475     TEST_c_c (csqrt, -0x1.0000000000000002p-16382L, -0x1.0000000000000002p-16382L, 8.344545284118961664300307045791497724440e-2467L, -2.014551439675644900131815801350165472778e-2466L),
7476
7477 # if LDBL_MANT_DIG >= 113
7478     TEST_c_c (csqrt, plus_zero, 0x1p-16494L, 1.799329752913293143453817328207572571442e-2483L, 1.799329752913293143453817328207572571442e-2483L),
7479     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16494L, 2.660791472672778409283210520357607795518e-753L, 1.216776133331049643422030716668249905907e-4213L),
7480     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16494L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7481     TEST_c_c (csqrt, 0x1p-16494L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7482     TEST_c_c (csqrt, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-16382L, 2.014551439675644900022606748976158925145e-2466L, 8.344545284118961663847948339519226074126e-2467L),
7483     TEST_c_c (csqrt, -0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-16382L, 8.344545284118961663847948339519226074126e-2467L, -2.014551439675644900022606748976158925145e-2466L),
7484 # endif
7485 #endif
7486     END_DATA (csqrt)
7487   };
7488
7489 static void
7490 csqrt_test (void)
7491 {
7492   errno = 0;
7493   FUNC(csqrt) (BUILD_COMPLEX (-1, 0));
7494   if (errno == ENOSYS)
7495     /* Function not implemented.  */
7496     return;
7497
7498   START (csqrt);
7499   RUN_TEST_LOOP_c_c (csqrt, csqrt_test_data, );
7500   END (csqrt, complex);
7501 }
7502
7503 static const struct test_c_c_data ctan_test_data[] =
7504   {
7505     START_DATA (ctan),
7506     TEST_c_c (ctan, 0, 0, 0.0, 0.0),
7507     TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero),
7508     TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0),
7509     TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero),
7510
7511     TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0),
7512     TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0),
7513     TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0),
7514     TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0),
7515
7516     TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0),
7517     TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0),
7518     TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0),
7519     TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0),
7520
7521     TEST_c_c (ctan, plus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7522     TEST_c_c (ctan, plus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7523     TEST_c_c (ctan, minus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7524     TEST_c_c (ctan, minus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7525     TEST_c_c (ctan, plus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7526     TEST_c_c (ctan, plus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7527     TEST_c_c (ctan, minus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7528     TEST_c_c (ctan, minus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7529
7530     TEST_c_c (ctan, qnan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN),
7531     TEST_c_c (ctan, qnan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN),
7532
7533     TEST_c_c (ctan, 0, qnan_value, 0.0, qnan_value),
7534     TEST_c_c (ctan, minus_zero, qnan_value, minus_zero, qnan_value),
7535
7536     TEST_c_c (ctan, 0.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7537     TEST_c_c (ctan, -4.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7538
7539     TEST_c_c (ctan, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7540     TEST_c_c (ctan, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7541     TEST_c_c (ctan, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7542     TEST_c_c (ctan, qnan_value, -0.25, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7543
7544     TEST_c_c (ctan, qnan_value, qnan_value, qnan_value, qnan_value),
7545
7546     TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L),
7547     TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L),
7548
7549     TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L, UNDERFLOW_EXCEPTION_FLOAT),
7550     TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0, UNDERFLOW_EXCEPTION_FLOAT),
7551
7552 #ifndef TEST_FLOAT
7553     TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7554     TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7555 #endif
7556
7557 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7558     TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0, UNDERFLOW_EXCEPTION),
7559     TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0, UNDERFLOW_EXCEPTION),
7560 #endif
7561
7562     TEST_c_c (ctan, 0x3.243f6cp-1, 0, -2.287733242885645987394874673945769518150e7L, 0.0),
7563
7564     TEST_c_c (ctan, 0x1p127, 1, 0.2446359391192790896381501310437708987204L, 0.9101334047676183761532873794426475906201L),
7565
7566 #ifndef TEST_FLOAT
7567     TEST_c_c (ctan, 0x1p1023, 1, -0.2254627924997545057926782581695274244229L, 0.8786063118883068695462540226219865087189L),
7568 #endif
7569
7570 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7571     TEST_c_c (ctan, 0x1p16383L, 1, 0.1608598776370396607204448234354670036772L, 0.8133818522051542536316746743877629761488L),
7572 #endif
7573
7574     TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0, UNDERFLOW_EXCEPTION),
7575     TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0, UNDERFLOW_EXCEPTION),
7576     TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0, UNDERFLOW_EXCEPTION),
7577     TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0, UNDERFLOW_EXCEPTION),
7578     END_DATA (ctan)
7579   };
7580
7581 static void
7582 ctan_test (void)
7583 {
7584   errno = 0;
7585   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7586   if (errno == ENOSYS)
7587     /* Function not implemented.  */
7588     return;
7589
7590   START (ctan);
7591   RUN_TEST_LOOP_c_c (ctan, ctan_test_data, );
7592   END (ctan, complex);
7593 }
7594
7595
7596 static const struct test_c_c_data ctan_tonearest_test_data[] =
7597   {
7598     START_DATA (ctan_tonearest),
7599     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7600
7601 #ifndef TEST_FLOAT
7602     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7603 #endif
7604
7605 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7606     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7607 #endif
7608     END_DATA (ctan_tonearest)
7609   };
7610
7611 static void
7612 ctan_test_tonearest (void)
7613 {
7614   errno = 0;
7615   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7616   if (errno == ENOSYS)
7617     /* Function not implemented.  */
7618     return;
7619
7620   START (ctan_tonearest);
7621   RUN_TEST_LOOP_c_c (ctan, ctan_tonearest_test_data, FE_TONEAREST);
7622   END (ctan_tonearest, complex);
7623 }
7624
7625
7626 static const struct test_c_c_data ctan_towardzero_test_data[] =
7627   {
7628     START_DATA (ctan_towardzero),
7629     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7630
7631 #ifndef TEST_FLOAT
7632     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7633 #endif
7634
7635 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7636     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7637 #endif
7638     END_DATA (ctan_towardzero)
7639   };
7640
7641 static void
7642 ctan_test_towardzero (void)
7643 {
7644   errno = 0;
7645   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7646   if (errno == ENOSYS)
7647     /* Function not implemented.  */
7648     return;
7649
7650   START (ctan_towardzero);
7651   RUN_TEST_LOOP_c_c (ctan, ctan_towardzero_test_data, FE_TOWARDZERO);
7652   END (ctan_towardzero, complex);
7653 }
7654
7655
7656 static const struct test_c_c_data ctan_downward_test_data[] =
7657   {
7658     START_DATA (ctan_downward),
7659     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7660
7661 #ifndef TEST_FLOAT
7662     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7663 #endif
7664
7665 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7666     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7667 #endif
7668     END_DATA (ctan_downward)
7669   };
7670
7671 static void
7672 ctan_test_downward (void)
7673 {
7674   errno = 0;
7675   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7676   if (errno == ENOSYS)
7677     /* Function not implemented.  */
7678     return;
7679
7680   START (ctan_downward);
7681   RUN_TEST_LOOP_c_c (ctan, ctan_downward_test_data, FE_DOWNWARD);
7682   END (ctan_downward, complex);
7683 }
7684
7685
7686 static const struct test_c_c_data ctan_upward_test_data[] =
7687   {
7688     START_DATA (ctan_upward),
7689     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7690
7691 #ifndef TEST_FLOAT
7692     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7693 #endif
7694
7695 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7696     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7697 #endif
7698     END_DATA (ctan_upward)
7699   };
7700
7701 static void
7702 ctan_test_upward (void)
7703 {
7704   errno = 0;
7705   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7706   if (errno == ENOSYS)
7707     /* Function not implemented.  */
7708     return;
7709
7710   START (ctan_upward);
7711   RUN_TEST_LOOP_c_c (ctan, ctan_upward_test_data, FE_UPWARD);
7712   END (ctan_upward, complex);
7713 }
7714
7715
7716 static const struct test_c_c_data ctanh_test_data[] =
7717   {
7718     START_DATA (ctanh),
7719     TEST_c_c (ctanh, 0, 0, 0.0, 0.0),
7720     TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero),
7721     TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0),
7722     TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero),
7723
7724     TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0),
7725     TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0),
7726     TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero),
7727     TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero),
7728     TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0),
7729     TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0),
7730     TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero),
7731     TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero),
7732
7733     TEST_c_c (ctanh, 0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7734     TEST_c_c (ctanh, 2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7735     TEST_c_c (ctanh, 0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7736     TEST_c_c (ctanh, 2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7737     TEST_c_c (ctanh, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7738     TEST_c_c (ctanh, -2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7739     TEST_c_c (ctanh, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7740     TEST_c_c (ctanh, -2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7741
7742     TEST_c_c (ctanh, plus_infty, qnan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7743     TEST_c_c (ctanh, minus_infty, qnan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7744
7745     TEST_c_c (ctanh, qnan_value, 0, qnan_value, 0.0),
7746     TEST_c_c (ctanh, qnan_value, minus_zero, qnan_value, minus_zero),
7747
7748     TEST_c_c (ctanh, qnan_value, 0.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7749     TEST_c_c (ctanh, qnan_value, -4.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7750
7751     TEST_c_c (ctanh, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7752     TEST_c_c (ctanh, 5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7753     TEST_c_c (ctanh, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7754     TEST_c_c (ctanh, -0.25, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7755
7756     TEST_c_c (ctanh, qnan_value, qnan_value, qnan_value, qnan_value),
7757
7758     TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0),
7759
7760     TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L),
7761     TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L),
7762
7763     TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L, UNDERFLOW_EXCEPTION_FLOAT),
7764     TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L, UNDERFLOW_EXCEPTION_FLOAT),
7765
7766 #ifndef TEST_FLOAT
7767     TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
7768     TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L, UNDERFLOW_EXCEPTION_DOUBLE),
7769 #endif
7770
7771 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7772     TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L, UNDERFLOW_EXCEPTION),
7773     TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L, UNDERFLOW_EXCEPTION),
7774 #endif
7775
7776     TEST_c_c (ctanh, 0, 0x3.243f6cp-1, 0.0, -2.287733242885645987394874673945769518150e7L),
7777
7778     TEST_c_c (ctanh, 1, 0x1p127, 0.9101334047676183761532873794426475906201L, 0.2446359391192790896381501310437708987204L),
7779
7780 #ifndef TEST_FLOAT
7781     TEST_c_c (ctanh, 1, 0x1p1023, 0.8786063118883068695462540226219865087189L, -0.2254627924997545057926782581695274244229L),
7782 #endif
7783
7784 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7785     TEST_c_c (ctanh, 1, 0x1p16383L, 0.8133818522051542536316746743877629761488L, 0.1608598776370396607204448234354670036772L),
7786 #endif
7787
7788     TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero, UNDERFLOW_EXCEPTION),
7789     TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero, UNDERFLOW_EXCEPTION),
7790     TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero, UNDERFLOW_EXCEPTION),
7791     TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero, UNDERFLOW_EXCEPTION),
7792     END_DATA (ctanh)
7793   };
7794
7795 static void
7796 ctanh_test (void)
7797 {
7798   errno = 0;
7799   FUNC(ctanh) (BUILD_COMPLEX (0, 0));
7800   if (errno == ENOSYS)
7801     /* Function not implemented.  */
7802     return;
7803
7804   START (ctanh);
7805   RUN_TEST_LOOP_c_c (ctanh, ctanh_test_data, );
7806   END (ctanh, complex);
7807 }
7808
7809
7810 static const struct test_c_c_data ctanh_tonearest_test_data[] =
7811   {
7812     START_DATA (ctanh_tonearest),
7813     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7814
7815 #ifndef TEST_FLOAT
7816     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7817 #endif
7818
7819 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7820     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7821 #endif
7822     END_DATA (ctanh_tonearest)
7823   };
7824
7825 static void
7826 ctanh_test_tonearest (void)
7827 {
7828   errno = 0;
7829   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7830   if (errno == ENOSYS)
7831     /* Function not implemented.  */
7832     return;
7833
7834   START (ctanh_tonearest);
7835   RUN_TEST_LOOP_c_c (ctanh, ctanh_tonearest_test_data, FE_TONEAREST);
7836   END (ctanh_tonearest, complex);
7837 }
7838
7839
7840 static const struct test_c_c_data ctanh_towardzero_test_data[] =
7841   {
7842     START_DATA (ctanh_towardzero),
7843     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7844
7845 #ifndef TEST_FLOAT
7846     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7847 #endif
7848
7849 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7850     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7851 #endif
7852     END_DATA (ctanh_towardzero)
7853   };
7854
7855 static void
7856 ctanh_test_towardzero (void)
7857 {
7858   errno = 0;
7859   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7860   if (errno == ENOSYS)
7861     /* Function not implemented.  */
7862     return;
7863
7864   START (ctanh_towardzero);
7865   RUN_TEST_LOOP_c_c (ctanh, ctanh_towardzero_test_data, FE_TOWARDZERO);
7866   END (ctanh_towardzero, complex);
7867 }
7868
7869
7870 static const struct test_c_c_data ctanh_downward_test_data[] =
7871   {
7872     START_DATA (ctanh_downward),
7873     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7874
7875 #ifndef TEST_FLOAT
7876     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7877 #endif
7878
7879 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7880     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7881 #endif
7882     END_DATA (ctanh_downward)
7883   };
7884
7885 static void
7886 ctanh_test_downward (void)
7887 {
7888   errno = 0;
7889   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7890   if (errno == ENOSYS)
7891     /* Function not implemented.  */
7892     return;
7893
7894   START (ctanh_downward);
7895   RUN_TEST_LOOP_c_c (ctanh, ctanh_downward_test_data, FE_DOWNWARD);
7896   END (ctanh_downward, complex);
7897 }
7898
7899
7900 static const struct test_c_c_data ctanh_upward_test_data[] =
7901   {
7902     START_DATA (ctanh_upward),
7903     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7904
7905 #ifndef TEST_FLOAT
7906     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7907 #endif
7908
7909 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7910     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7911 #endif
7912     END_DATA (ctanh_upward)
7913   };
7914
7915 static void
7916 ctanh_test_upward (void)
7917 {
7918   errno = 0;
7919   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7920   if (errno == ENOSYS)
7921     /* Function not implemented.  */
7922     return;
7923
7924   START (ctanh_upward);
7925   RUN_TEST_LOOP_c_c (ctanh, ctanh_upward_test_data, FE_UPWARD);
7926   END (ctanh_upward, complex);
7927 }
7928
7929
7930 static const struct test_f_f_data erf_test_data[] =
7931   {
7932     START_DATA (erf),
7933     TEST_f_f (erf, 0, 0),
7934     TEST_f_f (erf, minus_zero, minus_zero),
7935     TEST_f_f (erf, plus_infty, 1),
7936     TEST_f_f (erf, minus_infty, -1),
7937     TEST_f_f (erf, qnan_value, qnan_value),
7938
7939     TEST_f_f (erf, 0.125L, 0.140316204801333817393029446521623398L),
7940     TEST_f_f (erf, 0.75L, 0.711155633653515131598937834591410777L),
7941     TEST_f_f (erf, 1.25L, 0.922900128256458230136523481197281140L),
7942     TEST_f_f (erf, 2.0L, 0.995322265018952734162069256367252929L),
7943     TEST_f_f (erf, 4.125L, 0.999999994576599200434933994687765914L),
7944     TEST_f_f (erf, 27.0L, 1.0L),
7945     END_DATA (erf)
7946   };
7947
7948 static void
7949 erf_test (void)
7950 {
7951   errno = 0;
7952   FUNC(erf) (0);
7953   if (errno == ENOSYS)
7954     /* Function not implemented.  */
7955     return;
7956
7957   START (erf);
7958   RUN_TEST_LOOP_f_f (erf, erf_test_data, );
7959   END (erf);
7960 }
7961
7962
7963 static const struct test_f_f_data erfc_test_data[] =
7964   {
7965     START_DATA (erfc),
7966     TEST_f_f (erfc, plus_infty, 0.0),
7967     TEST_f_f (erfc, minus_infty, 2.0),
7968     TEST_f_f (erfc, 0.0, 1.0),
7969     TEST_f_f (erfc, minus_zero, 1.0),
7970     TEST_f_f (erfc, qnan_value, qnan_value),
7971
7972     TEST_f_f (erfc, 0.125L, 0.859683795198666182606970553478376602L),
7973     TEST_f_f (erfc, 0.75L, 0.288844366346484868401062165408589223L),
7974     TEST_f_f (erfc, 1.25L, 0.0770998717435417698634765188027188596L),
7975     TEST_f_f (erfc, 2.0L, 0.00467773498104726583793074363274707139L),
7976     TEST_f_f (erfc, 0x1.f7303cp+1L, 2.705500297238986897105236321218861842255e-8L),
7977     TEST_f_f (erfc, 4.125L, 0.542340079956506600531223408575531062e-8L),
7978     TEST_f_f (erfc, 0x1.ffa002p+2L, 1.233585992097580296336099501489175967033e-29L),
7979     TEST_f_f (erfc, 0x1.ffffc8p+2L, 1.122671365033056305522366683719541099329e-29L),
7980 #ifdef TEST_LDOUBLE
7981     /* The result can only be represented in long double.  */
7982 # if LDBL_MIN_10_EXP < -319
7983     TEST_f_f (erfc, 27.0L, 0.523704892378925568501606768284954709e-318L),
7984 # endif
7985 # if LDBL_MANT_DIG >= 106
7986     TEST_f_f (erfc, 0x1.ffff56789abcdef0123456789a8p+2L, 1.123161416304655390092138725253789378459e-29L),
7987 # endif
7988 #endif
7989     END_DATA (erfc)
7990   };
7991
7992 static void
7993 erfc_test (void)
7994 {
7995   errno = 0;
7996   FUNC(erfc) (0);
7997   if (errno == ENOSYS)
7998     /* Function not implemented.  */
7999     return;
8000
8001   START (erfc);
8002   RUN_TEST_LOOP_f_f (erfc, erfc_test_data, );
8003   END (erfc);
8004 }
8005
8006
8007 static const struct test_f_f_data exp_test_data[] =
8008   {
8009     START_DATA (exp),
8010     TEST_f_f (exp, 0, 1),
8011     TEST_f_f (exp, minus_zero, 1),
8012
8013 #ifndef TEST_INLINE
8014     TEST_f_f (exp, plus_infty, plus_infty),
8015     TEST_f_f (exp, minus_infty, 0),
8016 #endif
8017     TEST_f_f (exp, qnan_value, qnan_value),
8018     TEST_f_f (exp, 1, M_El),
8019
8020     TEST_f_f (exp, 2, M_E2l),
8021     TEST_f_f (exp, 3, M_E3l),
8022     TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L),
8023     TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L),
8024     TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L),
8025 #ifndef TEST_FLOAT
8026     TEST_f_f (exp, 709.75L, 1.739836873264160557698252711673830393864768e+308L),
8027 #endif
8028 #if defined TEST_LDOUBLE && __LDBL_MAX_EXP__ > 1024
8029     /* The result can only be represented in sane long double.  */
8030     TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L),
8031 #endif
8032
8033 #if !(defined TEST_LDOUBLE && LDBL_MAX_EXP > 1024)
8034     TEST_f_f (exp, 710, plus_infty, OVERFLOW_EXCEPTION),
8035     TEST_f_f (exp, -1234, plus_zero, UNDERFLOW_EXCEPTION),
8036 #endif
8037     TEST_f_f (exp, 1e5, plus_infty, OVERFLOW_EXCEPTION),
8038     TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION),
8039     TEST_f_f (exp, -max_value, 0, UNDERFLOW_EXCEPTION),
8040     END_DATA (exp)
8041   };
8042
8043 static void
8044 exp_test (void)
8045 {
8046   errno = 0;
8047   FUNC(exp) (0);
8048   if (errno == ENOSYS)
8049     /* Function not implemented.  */
8050     return;
8051
8052   START (exp);
8053   RUN_TEST_LOOP_f_f (exp, exp_test_data, );
8054   END (exp);
8055 }
8056
8057
8058 static const struct test_f_f_data exp_tonearest_test_data[] =
8059   {
8060     START_DATA (exp_tonearest),
8061     TEST_f_f (exp, 1, M_El),
8062     TEST_f_f (exp, 2, M_E2l),
8063     TEST_f_f (exp, 3, M_E3l),
8064     END_DATA (exp_tonearest)
8065   };
8066
8067 static void
8068 exp_test_tonearest (void)
8069 {
8070   errno = 0;
8071   FUNC(exp) (0);
8072   if (errno == ENOSYS)
8073     /* Function not implemented.  */
8074     return;
8075
8076   START (exp_tonearest);
8077   RUN_TEST_LOOP_f_f (exp, exp_tonearest_test_data, FE_TONEAREST);
8078   END (exp_tonearest);
8079 }
8080
8081
8082 static const struct test_f_f_data exp_towardzero_test_data[] =
8083   {
8084     START_DATA (exp_towardzero),
8085     TEST_f_f (exp, 1, M_El),
8086     TEST_f_f (exp, 2, M_E2l),
8087     TEST_f_f (exp, 3, M_E3l),
8088     END_DATA (exp_towardzero)
8089   };
8090
8091 static void
8092 exp_test_towardzero (void)
8093 {
8094   errno = 0;
8095   FUNC(exp) (0);
8096   if (errno == ENOSYS)
8097     /* Function not implemented.  */
8098     return;
8099
8100   START (exp_towardzero);
8101   RUN_TEST_LOOP_f_f (exp, exp_towardzero_test_data, FE_TOWARDZERO);
8102   END (exp_towardzero);
8103 }
8104
8105
8106 static const struct test_f_f_data exp_downward_test_data[] =
8107   {
8108     START_DATA (exp_downward),
8109     TEST_f_f (exp, 1, M_El),
8110     TEST_f_f (exp, 2, M_E2l),
8111     TEST_f_f (exp, 3, M_E3l),
8112     END_DATA (exp_downward)
8113   };
8114
8115 static void
8116 exp_test_downward (void)
8117 {
8118   errno = 0;
8119   FUNC(exp) (0);
8120   if (errno == ENOSYS)
8121     /* Function not implemented.  */
8122     return;
8123
8124   START (exp_downward);
8125   RUN_TEST_LOOP_f_f (exp, exp_downward_test_data, FE_DOWNWARD);
8126   END (exp_downward);
8127 }
8128
8129
8130 static const struct test_f_f_data exp_upward_test_data[] =
8131   {
8132     START_DATA (exp_upward),
8133     TEST_f_f (exp, 1, M_El),
8134     TEST_f_f (exp, 2, M_E2l),
8135     TEST_f_f (exp, 3, M_E3l),
8136     END_DATA (exp_upward)
8137   };
8138
8139 static void
8140 exp_test_upward (void)
8141 {
8142   errno = 0;
8143   FUNC(exp) (0);
8144   if (errno == ENOSYS)
8145     /* Function not implemented.  */
8146     return;
8147
8148   START (exp_upward);
8149   RUN_TEST_LOOP_f_f (exp, exp_upward_test_data, FE_UPWARD);
8150   END (exp_upward);
8151 }
8152
8153
8154 static const struct test_f_f_data exp10_test_data[] =
8155   {
8156     START_DATA (exp10),
8157     TEST_f_f (exp10, 0, 1),
8158     TEST_f_f (exp10, minus_zero, 1),
8159
8160     TEST_f_f (exp10, plus_infty, plus_infty),
8161     TEST_f_f (exp10, minus_infty, 0),
8162     TEST_f_f (exp10, qnan_value, qnan_value),
8163     TEST_f_f (exp10, 3, 1000),
8164     TEST_f_f (exp10, -1, 0.1L),
8165     TEST_f_f (exp10, 36, 1.0e36L),
8166     TEST_f_f (exp10, -36, 1.0e-36L),
8167 #ifndef TEST_FLOAT
8168     TEST_f_f (exp10, 305, 1.0e305L),
8169     TEST_f_f (exp10, -305, 1.0e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
8170 #endif
8171 #if defined TEST_LDOUBLE && LDBL_MAX_10_EXP >= 4932
8172     TEST_f_f (exp10, 4932, 1.0e4932L),
8173     TEST_f_f (exp10, -4932, 1.0e-4932L, UNDERFLOW_EXCEPTION),
8174 #endif
8175     TEST_f_f (exp10, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8176     TEST_f_f (exp10, -1e6, 0, UNDERFLOW_EXCEPTION),
8177     TEST_f_f (exp10, max_value, plus_infty, OVERFLOW_EXCEPTION),
8178     TEST_f_f (exp10, -max_value, 0, UNDERFLOW_EXCEPTION),
8179     TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L),
8180     END_DATA (exp10)
8181   };
8182
8183 static void
8184 exp10_test (void)
8185 {
8186   errno = 0;
8187   FUNC(exp10) (0);
8188   if (errno == ENOSYS)
8189     /* Function not implemented.  */
8190     return;
8191
8192   START (exp10);
8193   RUN_TEST_LOOP_f_f (exp10, exp10_test_data, );
8194   END (exp10);
8195 }
8196
8197
8198 static const struct test_f_f_data exp2_test_data[] =
8199   {
8200     START_DATA (exp2),
8201     TEST_f_f (exp2, 0, 1),
8202     TEST_f_f (exp2, minus_zero, 1),
8203     TEST_f_f (exp2, plus_infty, plus_infty),
8204     TEST_f_f (exp2, minus_infty, 0),
8205     TEST_f_f (exp2, qnan_value, qnan_value),
8206
8207     TEST_f_f (exp2, 10, 1024),
8208     TEST_f_f (exp2, -1, 0.5),
8209     TEST_f_f (exp2, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8210     TEST_f_f (exp2, -1e6, 0, UNDERFLOW_EXCEPTION),
8211     TEST_f_f (exp2, max_value, plus_infty, OVERFLOW_EXCEPTION),
8212     TEST_f_f (exp2, -max_value, 0, UNDERFLOW_EXCEPTION),
8213     TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L),
8214
8215     TEST_f_f (exp2, 100.5, 1.792728671193156477399422023278661496394e+30L),
8216     TEST_f_f (exp2, 127, 0x1p127),
8217     TEST_f_f (exp2, -149, 0x1p-149),
8218
8219 #ifndef TEST_FLOAT
8220     TEST_f_f (exp2, 1000.25, 1.274245659452564874772384918171765416737e+301L),
8221     TEST_f_f (exp2, 1023, 0x1p1023),
8222     TEST_f_f (exp2, -1074, 0x1p-1074),
8223 #endif
8224
8225 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8226     TEST_f_f (exp2, 16383, 0x1p16383L),
8227     TEST_f_f (exp2, -16400, 0x1p-16400L),
8228 #endif
8229     END_DATA (exp2)
8230   };
8231
8232 static void
8233 exp2_test (void)
8234 {
8235   errno = 0;
8236   FUNC(exp2) (0);
8237   if (errno == ENOSYS)
8238     /* Function not implemented.  */
8239     return;
8240
8241   START (exp2);
8242   RUN_TEST_LOOP_f_f (exp2, exp2_test_data, );
8243   END (exp2);
8244 }
8245
8246
8247 static const struct test_f_f_data expm1_test_data[] =
8248   {
8249     START_DATA (expm1),
8250     TEST_f_f (expm1, 0, 0),
8251     TEST_f_f (expm1, minus_zero, minus_zero),
8252
8253 #ifndef TEST_INLINE
8254     TEST_f_f (expm1, plus_infty, plus_infty),
8255     TEST_f_f (expm1, minus_infty, -1),
8256 #endif
8257     TEST_f_f (expm1, qnan_value, qnan_value),
8258
8259     TEST_f_f (expm1, 1, M_El - 1.0),
8260     TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L),
8261
8262     TEST_f_f (expm1, 50.0L, 5.1847055285870724640864533229334853848275e+21L),
8263
8264 #ifndef TEST_FLOAT
8265     TEST_f_f (expm1, 127.0L, 1.4302079958348104463583671072905261080748e+55L),
8266     TEST_f_f (expm1, 500.0L, 1.4035922178528374107397703328409120821806e+217L),
8267 #endif
8268
8269 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8270     TEST_f_f (expm1, 11356.25L, 9.05128237311923300051376115753226014206e+4931L),
8271 #endif
8272
8273     TEST_f_f (expm1, -10.0, -0.9999546000702375151484644084844394493898L),
8274     TEST_f_f (expm1, -16.0, -0.9999998874648252807408854862248209398728L),
8275     TEST_f_f (expm1, -17.0, -0.9999999586006228121483334034897228104472L),
8276     TEST_f_f (expm1, -18.0, -0.9999999847700202552873715638633707664826L),
8277     TEST_f_f (expm1, -36.0, -0.9999999999999997680477169756430611687736L),
8278     TEST_f_f (expm1, -37.0, -0.9999999999999999146695237425593420572195L),
8279     TEST_f_f (expm1, -38.0, -0.9999999999999999686086720795197037129104L),
8280     TEST_f_f (expm1, -44.0, -0.9999999999999999999221886775886620348429L),
8281     TEST_f_f (expm1, -45.0, -0.9999999999999999999713748141945060635553L),
8282     TEST_f_f (expm1, -46.0, -0.9999999999999999999894693826424461876212L),
8283     TEST_f_f (expm1, -73.0, -0.9999999999999999999999999999999802074012L),
8284     TEST_f_f (expm1, -74.0, -0.9999999999999999999999999999999927187098L),
8285     TEST_f_f (expm1, -75.0, -0.9999999999999999999999999999999973213630L),
8286     TEST_f_f (expm1, -78.0, -0.9999999999999999999999999999999998666385L),
8287     TEST_f_f (expm1, -79.0, -0.9999999999999999999999999999999999509391L),
8288     TEST_f_f (expm1, -80.0, -0.9999999999999999999999999999999999819515L),
8289     TEST_f_f (expm1, -100.0, -1.0),
8290     TEST_f_f (expm1, -1000.0, -1.0),
8291     TEST_f_f (expm1, -10000.0, -1.0),
8292     TEST_f_f (expm1, -100000.0, -1.0),
8293
8294     TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8295     TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION),
8296     TEST_f_f (expm1, -max_value, -1),
8297     END_DATA (expm1)
8298   };
8299
8300 static void
8301 expm1_test (void)
8302 {
8303   errno = 0;
8304   FUNC(expm1) (0);
8305   if (errno == ENOSYS)
8306     /* Function not implemented.  */
8307     return;
8308
8309   START (expm1);
8310   RUN_TEST_LOOP_f_f (expm1, expm1_test_data, );
8311   END (expm1);
8312 }
8313
8314
8315 static const struct test_f_f_data fabs_test_data[] =
8316   {
8317     START_DATA (fabs),
8318     TEST_f_f (fabs, 0, 0),
8319     TEST_f_f (fabs, minus_zero, 0),
8320
8321     TEST_f_f (fabs, plus_infty, plus_infty),
8322     TEST_f_f (fabs, minus_infty, plus_infty),
8323     TEST_f_f (fabs, qnan_value, qnan_value),
8324
8325     TEST_f_f (fabs, 38.0, 38.0),
8326     TEST_f_f (fabs, -M_El, M_El),
8327     END_DATA (fabs)
8328   };
8329
8330 static void
8331 fabs_test (void)
8332 {
8333   START (fabs);
8334   RUN_TEST_LOOP_f_f (fabs, fabs_test_data, );
8335   END (fabs);
8336 }
8337
8338
8339 static const struct test_ff_f_data fdim_test_data[] =
8340   {
8341     START_DATA (fdim),
8342     TEST_ff_f (fdim, 0, 0, 0),
8343     TEST_ff_f (fdim, 9, 0, 9),
8344     TEST_ff_f (fdim, 0, 9, 0),
8345     TEST_ff_f (fdim, -9, 0, 0),
8346     TEST_ff_f (fdim, 0, -9, 9),
8347
8348     TEST_ff_f (fdim, plus_infty, 9, plus_infty),
8349     TEST_ff_f (fdim, plus_infty, -9, plus_infty),
8350     TEST_ff_f (fdim, minus_infty, 9, 0),
8351     TEST_ff_f (fdim, minus_infty, -9, 0),
8352     TEST_ff_f (fdim, 9, minus_infty, plus_infty),
8353     TEST_ff_f (fdim, -9, minus_infty, plus_infty),
8354     TEST_ff_f (fdim, 9, plus_infty, 0),
8355     TEST_ff_f (fdim, -9, plus_infty, 0),
8356
8357     TEST_ff_f (fdim, 0, qnan_value, qnan_value),
8358     TEST_ff_f (fdim, 9, qnan_value, qnan_value),
8359     TEST_ff_f (fdim, -9, qnan_value, qnan_value),
8360     TEST_ff_f (fdim, qnan_value, 9, qnan_value),
8361     TEST_ff_f (fdim, qnan_value, -9, qnan_value),
8362     TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value),
8363     TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value),
8364     TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value),
8365     TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value),
8366     TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value),
8367
8368     TEST_ff_f (fdim, plus_infty, plus_infty, 0),
8369     END_DATA (fdim)
8370   };
8371
8372 static void
8373 fdim_test (void)
8374 {
8375   START (fdim);
8376   RUN_TEST_LOOP_ff_f (fdim, fdim_test_data, );
8377   END (fdim);
8378 }
8379
8380
8381 static void
8382 finite_test (void)
8383 {
8384   START (finite);
8385
8386   TEST_f_b (finite, 0, 1);
8387   TEST_f_b (finite, minus_zero, 1);
8388   TEST_f_b (finite, 10, 1);
8389   TEST_f_b (finite, min_subnorm_value, 1);
8390   TEST_f_b (finite, plus_infty, 0);
8391   TEST_f_b (finite, minus_infty, 0);
8392   TEST_f_b (finite, qnan_value, 0);
8393
8394   END (finite);
8395 }
8396
8397
8398 static const struct test_f_f_data floor_test_data[] =
8399   {
8400     START_DATA (floor),
8401     TEST_f_f (floor, 0.0, 0.0),
8402     TEST_f_f (floor, minus_zero, minus_zero),
8403     TEST_f_f (floor, plus_infty, plus_infty),
8404     TEST_f_f (floor, minus_infty, minus_infty),
8405     TEST_f_f (floor, qnan_value, qnan_value),
8406
8407     TEST_f_f (floor, M_PIl, 3.0),
8408     TEST_f_f (floor, -M_PIl, -4.0),
8409
8410     TEST_f_f (floor, 0.1, 0.0),
8411     TEST_f_f (floor, 0.25, 0.0),
8412     TEST_f_f (floor, 0.625, 0.0),
8413     TEST_f_f (floor, -0.1, -1.0),
8414     TEST_f_f (floor, -0.25, -1.0),
8415     TEST_f_f (floor, -0.625, -1.0),
8416
8417 #ifdef TEST_LDOUBLE
8418     /* The result can only be represented in long double.  */
8419     TEST_f_f (floor, 4503599627370495.5L, 4503599627370495.0L),
8420     TEST_f_f (floor, 4503599627370496.25L, 4503599627370496.0L),
8421     TEST_f_f (floor, 4503599627370496.5L, 4503599627370496.0L),
8422     TEST_f_f (floor, 4503599627370496.75L, 4503599627370496.0L),
8423     TEST_f_f (floor, 4503599627370497.5L, 4503599627370497.0L),
8424 # if LDBL_MANT_DIG > 100
8425     TEST_f_f (floor, 4503599627370494.5000000000001L, 4503599627370494.0L),
8426     TEST_f_f (floor, 4503599627370495.5000000000001L, 4503599627370495.0L),
8427     TEST_f_f (floor, 4503599627370496.5000000000001L, 4503599627370496.0L),
8428 # endif
8429
8430     TEST_f_f (floor, -4503599627370495.5L, -4503599627370496.0L),
8431     TEST_f_f (floor, -4503599627370496.25L, -4503599627370497.0L),
8432     TEST_f_f (floor, -4503599627370496.5L, -4503599627370497.0L),
8433     TEST_f_f (floor, -4503599627370496.75L, -4503599627370497.0L),
8434     TEST_f_f (floor, -4503599627370497.5L, -4503599627370498.0L),
8435 # if LDBL_MANT_DIG > 100
8436     TEST_f_f (floor, -4503599627370494.5000000000001L, -4503599627370495.0L),
8437     TEST_f_f (floor, -4503599627370495.5000000000001L, -4503599627370496.0L),
8438     TEST_f_f (floor, -4503599627370496.5000000000001L, -4503599627370497.0L),
8439 # endif
8440
8441     TEST_f_f (floor, 9007199254740991.5L, 9007199254740991.0L),
8442     TEST_f_f (floor, 9007199254740992.25L, 9007199254740992.0L),
8443     TEST_f_f (floor, 9007199254740992.5L, 9007199254740992.0L),
8444     TEST_f_f (floor, 9007199254740992.75L, 9007199254740992.0L),
8445     TEST_f_f (floor, 9007199254740993.5L, 9007199254740993.0L),
8446
8447 # if LDBL_MANT_DIG > 100
8448     TEST_f_f (floor, 9007199254740991.0000000000001L, 9007199254740991.0L),
8449     TEST_f_f (floor, 9007199254740992.0000000000001L, 9007199254740992.0L),
8450     TEST_f_f (floor, 9007199254740993.0000000000001L, 9007199254740993.0L),
8451     TEST_f_f (floor, 9007199254740991.5000000000001L, 9007199254740991.0L),
8452     TEST_f_f (floor, 9007199254740992.5000000000001L, 9007199254740992.0L),
8453     TEST_f_f (floor, 9007199254740993.5000000000001L, 9007199254740993.0L),
8454 # endif
8455
8456     TEST_f_f (floor, -9007199254740991.5L, -9007199254740992.0L),
8457     TEST_f_f (floor, -9007199254740992.25L, -9007199254740993.0L),
8458     TEST_f_f (floor, -9007199254740992.5L, -9007199254740993.0L),
8459     TEST_f_f (floor, -9007199254740992.75L, -9007199254740993.0L),
8460     TEST_f_f (floor, -9007199254740993.5L, -9007199254740994.0L),
8461
8462 # if LDBL_MANT_DIG > 100
8463     TEST_f_f (floor, -9007199254740991.0000000000001L, -9007199254740992.0L),
8464     TEST_f_f (floor, -9007199254740992.0000000000001L, -9007199254740993.0L),
8465     TEST_f_f (floor, -9007199254740993.0000000000001L, -9007199254740994.0L),
8466     TEST_f_f (floor, -9007199254740991.5000000000001L, -9007199254740992.0L),
8467     TEST_f_f (floor, -9007199254740992.5000000000001L, -9007199254740993.0L),
8468     TEST_f_f (floor, -9007199254740993.5000000000001L, -9007199254740994.0L),
8469 # endif
8470
8471     TEST_f_f (floor, 72057594037927935.5L, 72057594037927935.0L),
8472     TEST_f_f (floor, 72057594037927936.25L, 72057594037927936.0L),
8473     TEST_f_f (floor, 72057594037927936.5L, 72057594037927936.0L),
8474     TEST_f_f (floor, 72057594037927936.75L, 72057594037927936.0L),
8475     TEST_f_f (floor, 72057594037927937.5L, 72057594037927937.0L),
8476
8477     TEST_f_f (floor, -72057594037927935.5L, -72057594037927936.0L),
8478     TEST_f_f (floor, -72057594037927936.25L, -72057594037927937.0L),
8479     TEST_f_f (floor, -72057594037927936.5L, -72057594037927937.0L),
8480     TEST_f_f (floor, -72057594037927936.75L, -72057594037927937.0L),
8481     TEST_f_f (floor, -72057594037927937.5L, -72057594037927938.0L),
8482
8483     TEST_f_f (floor, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
8484     TEST_f_f (floor, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
8485     TEST_f_f (floor, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
8486     TEST_f_f (floor, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
8487     TEST_f_f (floor, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
8488
8489     TEST_f_f (floor, 0xf.ffffffffffffff8p+47L, 0xf.fffffffffffep+47L),
8490     TEST_f_f (floor, -0x8.000000000000004p+48L, -0x8.000000000001p+48L),
8491 #endif
8492     END_DATA (floor)
8493   };
8494
8495 static void
8496 floor_test (void)
8497 {
8498   START (floor);
8499   RUN_TEST_LOOP_f_f (floor, floor_test_data, );
8500   END (floor);
8501 }
8502
8503
8504 static const struct test_fff_f_data fma_test_data[] =
8505   {
8506     START_DATA (fma),
8507     TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0),
8508     TEST_fff_f (fma, qnan_value, 2.0, 3.0, qnan_value),
8509     TEST_fff_f (fma, 1.0, qnan_value, 3.0, qnan_value),
8510     TEST_fff_f (fma, 1.0, 2.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8511     TEST_fff_f (fma, plus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8512     TEST_fff_f (fma, minus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8513     TEST_fff_f (fma, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8514     TEST_fff_f (fma, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8515     TEST_fff_f (fma, plus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8516     TEST_fff_f (fma, minus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8517     TEST_fff_f (fma, 0.0, plus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8518     TEST_fff_f (fma, 0.0, minus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8519
8520     TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8521     TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8522     TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8523     TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8524     TEST_fff_f (fma, plus_infty, 3.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8525     TEST_fff_f (fma, minus_infty, -7.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8526     TEST_fff_f (fma, -13.5L, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8527     TEST_fff_f (fma, minus_infty, 7.5L, plus_infty, qnan_value, INVALID_EXCEPTION),
8528
8529     TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L),
8530
8531     TEST_fff_f (fma, -max_value, -max_value, minus_infty, minus_infty),
8532     TEST_fff_f (fma, max_value / 2, max_value / 2, minus_infty, minus_infty),
8533     TEST_fff_f (fma, -max_value, max_value, plus_infty, plus_infty),
8534     TEST_fff_f (fma, max_value / 2, -max_value / 4, plus_infty, plus_infty),
8535     TEST_fff_f (fma, plus_infty, 4, plus_infty, plus_infty),
8536     TEST_fff_f (fma, 2, minus_infty, minus_infty, minus_infty),
8537     TEST_fff_f (fma, minus_infty, minus_infty, plus_infty, plus_infty),
8538     TEST_fff_f (fma, plus_infty, minus_infty, minus_infty, minus_infty),
8539
8540     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8541     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8542     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8543     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8544     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8545     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8546     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8547     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8548     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8549     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8550     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8551     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8552     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8553     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8554     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8555     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8556     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8557     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8558     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8559     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8560     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8561     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8562     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8563     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8564
8565     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8566     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8567     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8568     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8569
8570     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8571     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8572     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8573     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8574     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8575     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8576     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8577     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8578
8579     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8580     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8581     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8582     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8583     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8584     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8585     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8586     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8587
8588 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8589     TEST_fff_f (fma, 0x1.7ff8p+13, 0x1.000002p+0, 0x1.ffffp-24, 0x1.7ff802p+13),
8590     TEST_fff_f (fma, 0x1.fffp+0, 0x1.00001p+0, -0x1.fffp+0, 0x1.fffp-20),
8591     TEST_fff_f (fma, 0x1.9abcdep+127, 0x0.9abcdep-126, -0x1.f08948p+0, 0x1.bb421p-25),
8592     TEST_fff_f (fma, 0x1.9abcdep+100, 0x0.9abcdep-126, -0x1.f08948p-27, 0x1.bb421p-52),
8593     TEST_fff_f (fma, 0x1.fffffep+127, 0x1.001p+0, -0x1.fffffep+127, 0x1.fffffep+115),
8594     TEST_fff_f (fma, -0x1.fffffep+127, 0x1.fffffep+0, 0x1.fffffep+127, -0x1.fffffap+127),
8595     TEST_fff_f (fma, 0x1.fffffep+127, 2.0, -0x1.fffffep+127, 0x1.fffffep+127),
8596     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8597     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8598     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8599     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8600     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8601     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8602     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8603     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8604     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8605     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
8606     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8607     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8608     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8609     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8610     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8611     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8612     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8613     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8614     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8615     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8616     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8617     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8618     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8619     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8620     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8621     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8622     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8623     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8624     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8625     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
8626     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8627     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8628     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8629     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
8630     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8631     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8632 #endif
8633 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8634     TEST_fff_f (fma, 0x1.7fp+13, 0x1.0000000000001p+0, 0x1.ffep-48, 0x1.7f00000000001p+13),
8635     TEST_fff_f (fma, 0x1.fffp+0, 0x1.0000000000001p+0, -0x1.fffp+0, 0x1.fffp-52),
8636     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, 0x1p-300, 1.0),
8637     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, -0x1p-300, 0x1.fffffffffffffp-1),
8638     TEST_fff_f (fma, 0x1.deadbeef2feedp+1023, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp+1, 0x1.0989687bc9da4p-53),
8639     TEST_fff_f (fma, 0x1.deadbeef2feedp+900, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp-122, 0x1.0989687bc9da4p-176),
8640     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 0x1.001p+0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1011),
8641     TEST_fff_f (fma, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+0, 0x1.fffffffffffffp+1023, -0x1.ffffffffffffdp+1023),
8642     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 2.0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023),
8643     TEST_fff_f (fma, 0x1.6a09e667f3bccp-538, 0x1.6a09e667f3bccp-538, 0.0, 0.0, UNDERFLOW_EXCEPTION),
8644     TEST_fff_f (fma, 0x1.deadbeef2feedp-495, 0x1.deadbeef2feedp-495, -0x1.bf86a5786a574p-989, 0x0.0000042625a1fp-1022, UNDERFLOW_EXCEPTION),
8645     TEST_fff_f (fma, 0x1.deadbeef2feedp-503, 0x1.deadbeef2feedp-503, -0x1.bf86a5786a574p-1005, 0x0.0000000004262p-1022, UNDERFLOW_EXCEPTION),
8646     TEST_fff_f (fma, 0x1p-537, 0x1p-538, 0x1p-1074, 0x0.0000000000002p-1022, UNDERFLOW_EXCEPTION),
8647     TEST_fff_f (fma, 0x1.7fffff8p-968, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000001p-1022, UNDERFLOW_EXCEPTION),
8648     TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022, UNDERFLOW_EXCEPTION),
8649     TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022, UNDERFLOW_EXCEPTION),
8650     TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022, UNDERFLOW_EXCEPTION),
8651     TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION),
8652     TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022, UNDERFLOW_EXCEPTION),
8653     TEST_fff_f (fma, -0x1.fffffffffffffp-711, 0x1.fffffffffffffp-275, 0x1.fffffe00007ffp-983, 0x1.7ffffe00007ffp-983),
8654     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8655     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8656     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8657     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8658     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8659     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8660     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8661     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8662     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8663     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
8664     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
8665     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8666     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8667     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8668     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8669     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8670     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8671     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8672     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8673     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8674     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8675     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8676     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8677     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8678     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8679     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8680     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8681     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8682     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8683     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8684     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8685     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8686     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8687     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
8688     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
8689     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8690 #endif
8691 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8692     TEST_fff_f (fma, -0x8.03fcp+3696L, 0xf.fffffffffffffffp-6140L, 0x8.3ffffffffffffffp-2450L, -0x8.01ecp-2440L),
8693     TEST_fff_f (fma, 0x9.fcp+2033L, -0x8.000e1f000ff800fp-3613L, -0xf.fffffffffffc0ffp-1579L, -0xd.fc119fb093ed092p-1577L),
8694     TEST_fff_f (fma, 0xc.7fc000003ffffffp-1194L, 0x8.1e0003fffffffffp+15327L, -0x8.fffep+14072L, 0xc.ae9f164020effffp+14136L),
8695     TEST_fff_f (fma, -0x8.0001fc000000003p+1798L, 0xcp-2230L, 0x8.f7e000000000007p-468L, -0xc.0002f9ffee10404p-429L),
8696     TEST_fff_f (fma, 0xc.0000000000007ffp+10130L, -0x8.000000000000001p+4430L, 0xc.07000000001ffffp+14513L, -0xb.fffffffffffd7e4p+14563L),
8697     TEST_fff_f (fma, 0xb.ffffp-4777L, 0x8.000000fffffffffp-11612L, -0x0.3800fff8p-16385L, 0x5.c7fe80c7ffeffffp-16385L, UNDERFLOW_EXCEPTION),
8698     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8699     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8700     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8701     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8702     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8703     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8704     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8705     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8706     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8707     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
8708     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
8709     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8710     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8711     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8712     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8713     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8714     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8715     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8716     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8717     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8718     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8719     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8720     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8721     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8722     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8723     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8724     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8725     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8726     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8727     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8728     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8729     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8730     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8731     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8732     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8733     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8734 #endif
8735 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8736     TEST_fff_f (fma, 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584L, -0x1.6b500daf0580d987f1bc0cadfcddp-13777L, 0x1.613cd91d9fed34b33820e5ab9d8dp-16378L, -0x1.3a79fb50eb9ce887cffa0f09bd9fp-16360L),
8737     TEST_fff_f (fma, -0x1.f949b880cacb0f0c61540105321dp-5954L, -0x1.3876cec84b4140f3bd6198731b7ep-10525L, -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382L, -0x0.a5dc1c6cfbc498c54fb0b5038abbp-16382L, UNDERFLOW_EXCEPTION),
8738     TEST_fff_f (fma, -0x1.0000fffffffffp-16221L, 0x1.0000001fffff8007fep-239L, 0x0.ff87ffffffffffffe000003fffffp-16382L, 0x0.ff87ffffffffffffdffc003bff7fp-16382L, UNDERFLOW_EXCEPTION),
8739     TEST_fff_f (fma, -0x1.ac79c9376ef447f3827c9e9de008p-2228L, -0x1.5ba830022b6139e21fbe7270cad8p-6314L, 0x1.e8282b6a26bb6a9daf5c8e73e9f9p-8616L, 0x1.22f14a0253878a730cd1aee373adp-8541L),
8740     TEST_fff_f (fma, -0x1.c69749ec574caaa2ab8e97ddb9f3p+2652L, 0x1.f34235ff9d095449c29b4831b62dp+3311L, 0x1.fbe4302df23354dbd0c4d3cfe606p+5879L, -0x1.bb473bfdfb7a6e18886ce6e57eafp+5964L),
8741     TEST_fff_f (fma, -0x1.ca8835fc6ecfb5398625fc891be5p-1686L, 0x1.621e1972bbe2180e5be9dd7d8df5p-7671L, -0x1.7d2d21b73b52cf20dec2a83902a4p-9395L, -0x1.3d2322191c9c88bc68a62ab8042cp-9356L),
8742     TEST_fff_f (fma, -0x1.55cff679ec49c2541fab41fc843ep-11819L, 0x1.e60e9f464f9e8df0509647c7c971p+12325L, 0x1.eaa2a7649d765c2f564f7a5beca7p+454L, -0x1.447e29fa7e406a285f4e350fcf86p+507L),
8743     TEST_fff_f (fma, 0x1.f0e7b1454908576f2537d863cf9bp+11432L, 0x1.cdce52f09d4ca76e68706f34b5d5p-1417L, -0x1.2e986187c70f146235ea2066e486p+9979L, 0x1.c030dad3cc5643f3dd0f5619f661p+10016L),
8744     TEST_fff_f (fma, 0x1.f102f7da4a57a3a4aab620e29452p-3098L, -0x1.cc06a4ff40248f9e2dcc4b6afd84p-11727L, 0x1.d512a11126b5ac8ed8973b8580c8p-14849L, -0x1.be8f1cf737ab4d1c31c54f5ec23bp-14824L),
8745     TEST_fff_f (fma, -0x1.fc47ac7434b993cd8dcb2b431f25p-3816L, 0x1.fbc9750da8468852d84558e1db6dp-5773L, -0x1.00a98abf783f75c40fe5b7a37d86p-9607L, -0x1.f81917b166f45e763cfcc057e2adp-9588L),
8746     TEST_fff_f (fma, 0x1.00000000000007ffffffffffffffp-9045L, -0x1.ffffffffffff80000001ffffffffp+4773L, -0x1.f8p-4316L, -0x1.00000000000f88000000fffffdffp-4271L),
8747     TEST_fff_f (fma, 0x1.4e922764c90701d4a2f21d01893dp-8683L, -0x1.955a12e2d7c9447c27fa022fc865p+212L, -0x1.e9634462eaef96528b90b6944578p-8521L, -0x1.08e1783184a371943d3598e10865p-8470L),
8748     TEST_fff_f (fma, 0x1.801181509c03bdbef10d6165588cp-15131L, 0x1.ad86f8e57d3d40bfa8007780af63p-368L, -0x1.6e9df0dab1c9f1d7a6043c390741p-15507L, 0x1.417c9b2b15e2ad57dc9e0e920844p-15498L),
8749     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8750     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8751     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8752     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8753     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8754     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8755     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8756     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8757     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8758     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
8759     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
8760     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8761     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8762     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8763     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8764     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8765     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8766     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8767     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8768     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8769     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8770     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8771     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8772     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8773     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8774     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8775     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8776     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8777     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8778     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8779     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8780     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8781     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8782     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8783     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8784     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8785 #endif
8786     END_DATA (fma)
8787   };
8788
8789 static void
8790 fma_test (void)
8791 {
8792   START (fma);
8793   RUN_TEST_LOOP_fff_f (fma, fma_test_data, );
8794   END (fma);
8795 }
8796
8797
8798 static const struct test_fff_f_data fma_towardzero_test_data[] =
8799   {
8800     START_DATA (fma_towardzero),
8801     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8802     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8803     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8804     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8805     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8806     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8807     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8808     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8809     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8810     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8811     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8812     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8813     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8814     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8815     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8816     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8817     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8818     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8819     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8820     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8821     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8822     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8823     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8824     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8825
8826     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8827     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8828     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8829     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8830
8831     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8832     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8833     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8834     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8835     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8836     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8837     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8838     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8839
8840 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8841     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8842     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8843     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8844     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8845     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8846     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8847     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8848     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8849 #endif
8850
8851 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8852     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8853     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8854     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8855     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8856     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8857     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8858     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8859     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8860     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8861     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8862     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
8863     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8864     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8865     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8866     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8867     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8868     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8869     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8870     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8871     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8872     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8873     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8874     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
8875     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8876     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8877     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8878     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8879     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8880     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8881     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8882     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
8883     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8884     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8885     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8886     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
8887     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8888 #endif
8889 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8890     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8891     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8892     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8893     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8894     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8895     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8896     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8897     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8898     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8899     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
8900     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
8901     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8902     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8903     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8904     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8905     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8906     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8907     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8908     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8909     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8910     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8911     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
8912     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
8913     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8914     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8915     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8916     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8917     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8918     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8919     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
8920     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
8921     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8922     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8923     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
8924     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
8925     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8926 #endif
8927 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8928     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8929     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8930     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8931     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8932     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8933     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8934     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8935     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8936     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8937     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8938     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8939     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8940     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8941     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8942     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8943     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8944     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8945     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8946     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8947     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8948     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8949     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
8950     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
8951     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8952     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8953     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8954     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8955     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8956     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8957     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8958     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8959     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8960     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8961     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
8962     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
8963     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8964 #endif
8965 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8966     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8967     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8968     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8969     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8970     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8971     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8972     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8973     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8974     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8975     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8976     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8977     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8978     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8979     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8980     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8981     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8982     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8983     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8984     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8985     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8986     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8987     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
8988     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
8989     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8990     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8991     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8992     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8993     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8994     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8995     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8996     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8997     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8998     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8999     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
9000     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
9001     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9002 #endif
9003     END_DATA (fma_towardzero)
9004   };
9005
9006 static void
9007 fma_test_towardzero (void)
9008 {
9009   START (fma_towardzero);
9010   RUN_TEST_LOOP_fff_f (fma, fma_towardzero_test_data, FE_TOWARDZERO);
9011   END (fma_towardzero);
9012 }
9013
9014
9015 static const struct test_fff_f_data fma_downward_test_data[] =
9016   {
9017     START_DATA (fma_downward),
9018     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
9019     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, minus_zero),
9020     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, minus_zero),
9021     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
9022     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, minus_zero),
9023     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
9024     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
9025     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, minus_zero),
9026     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
9027     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, minus_zero),
9028     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, minus_zero),
9029     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
9030     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, minus_zero),
9031     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
9032     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
9033     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, minus_zero),
9034     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
9035     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, minus_zero),
9036     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, minus_zero),
9037     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
9038     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, minus_zero),
9039     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
9040     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
9041     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, minus_zero),
9042
9043     TEST_fff_f (fma, 1.0, 1.0, -1.0, minus_zero),
9044     TEST_fff_f (fma, 1.0, -1.0, 1.0, minus_zero),
9045     TEST_fff_f (fma, -1.0, 1.0, 1.0, minus_zero),
9046     TEST_fff_f (fma, -1.0, -1.0, -1.0, minus_zero),
9047
9048     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
9049     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
9050     TEST_fff_f (fma, min_value, -min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
9051     TEST_fff_f (fma, min_value, -min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
9052     TEST_fff_f (fma, -min_value, min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
9053     TEST_fff_f (fma, -min_value, min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
9054     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
9055     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
9056
9057 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
9058     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
9059     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
9060     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
9061     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
9062     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
9063     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
9064     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
9065     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
9066 #endif
9067
9068 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
9069     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
9070     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00008p-127, UNDERFLOW_EXCEPTION),
9071     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9072     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9073     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9074     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
9075     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9076     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9077     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
9078     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
9079     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
9080     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1.000002p127),
9081     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
9082     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9083     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9084     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1.000002p-126),
9085     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9086     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
9087     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9088     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
9089     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
9090     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
9091     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
9092     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-148, UNDERFLOW_EXCEPTION),
9093     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
9094     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
9095     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
9096     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
9097     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
9098     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
9099     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
9100     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1.000002p127),
9101     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
9102     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
9103     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
9104     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1.000002p103),
9105 #endif
9106 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
9107     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
9108     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
9109     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9110     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9111     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9112     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
9113     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9114     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9115     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
9116     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
9117     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
9118     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1.0000000000001p1023),
9119     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
9120     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9121     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9122     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1.0000000000001p-1022),
9123     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9124     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9125     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9126     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
9127     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9128     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
9129     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9130     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1073, UNDERFLOW_EXCEPTION),
9131     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9132     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9133     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9134     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9135     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9136     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
9137     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9138     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1.0000000000001p1023),
9139     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
9140     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
9141     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
9142     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1.0000000000001p970),
9143 #endif
9144 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9145     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9146     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9147     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9148     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9149     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9150     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9151     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9152     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9153     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
9154     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
9155     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
9156     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1.0000000000000002p16383L),
9157     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
9158     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9159     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9160     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1.0000000000000002p-16382L),
9161     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9162     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9163     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9164     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9165     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9166     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
9167     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9168     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16444L, UNDERFLOW_EXCEPTION),
9169     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9170     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9171     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9172     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9173     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9174     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
9175     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9176     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1.0000000000000002p16383L),
9177     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9178     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
9179     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9180     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1.0000000000000002p16319L),
9181 #endif
9182 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9183     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9184     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9185     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9186     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9187     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9188     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9189     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9190     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9191     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
9192     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9193     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
9194     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9195     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
9196     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9197     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9198     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1.0000000000000000000000000001p-16382L),
9199     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9200     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9201     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9202     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9203     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9204     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
9205     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9206     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16493L, UNDERFLOW_EXCEPTION),
9207     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9208     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9209     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9210     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9211     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9212     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9213     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9214     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9215     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9216     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
9217     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9218     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1.0000000000000000000000000001p16319L),
9219 #endif
9220     END_DATA (fma_downward)
9221   };
9222
9223 static void
9224 fma_test_downward (void)
9225 {
9226   START (fma_downward);
9227   RUN_TEST_LOOP_fff_f (fma, fma_downward_test_data, FE_DOWNWARD);
9228   END (fma_downward);
9229 }
9230
9231
9232 static const struct test_fff_f_data fma_upward_test_data[] =
9233   {
9234     START_DATA (fma_upward),
9235     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
9236     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
9237     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
9238     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
9239     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
9240     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
9241     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
9242     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
9243     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
9244     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
9245     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
9246     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
9247     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
9248     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
9249     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
9250     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
9251     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
9252     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
9253     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
9254     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
9255     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
9256     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
9257     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
9258     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
9259
9260     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
9261     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
9262     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
9263     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
9264
9265     TEST_fff_f (fma, min_value, min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9266     TEST_fff_f (fma, min_value, min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9267     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9268     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9269     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9270     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9271     TEST_fff_f (fma, -min_value, -min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9272     TEST_fff_f (fma, -min_value, -min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9273
9274 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
9275     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9276     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9277     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9278     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9279     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9280     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9281     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9282     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9283 #endif
9284
9285 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
9286     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00008p-127, UNDERFLOW_EXCEPTION),
9287     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
9288     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9289     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9290     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9291     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9292     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9293     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9294     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1.000002p127),
9295     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
9296     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
9297     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
9298     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1.000002p-126),
9299     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9300     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9301     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
9302     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9303     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9304     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
9305     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9306     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-148, UNDERFLOW_EXCEPTION),
9307     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
9308     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
9309     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
9310     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
9311     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
9312     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
9313     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
9314     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1.000002p127),
9315     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
9316     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
9317     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
9318     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1.000002p103),
9319     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
9320     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
9321     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
9322 #endif
9323 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
9324     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
9325     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
9326     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9327     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9328     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9329     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9330     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9331     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9332     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1.0000000000001p1023),
9333     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
9334     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
9335     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
9336     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1.0000000000001p-1022),
9337     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9338     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9339     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
9340     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9341     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9342     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9343     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9344     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1073, UNDERFLOW_EXCEPTION),
9345     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9346     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
9347     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9348     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9349     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9350     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9351     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9352     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1.0000000000001p1023),
9353     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9354     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
9355     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9356     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1.0000000000001p970),
9357     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
9358     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
9359     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
9360 #endif
9361 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9362     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9363     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9364     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9365     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9366     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9367     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9368     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9369     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9370     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1.0000000000000002p16383L),
9371     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
9372     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9373     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
9374     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1.0000000000000002p-16382L),
9375     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9376     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9377     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
9378     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9379     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9380     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9381     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9382     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16444L, UNDERFLOW_EXCEPTION),
9383     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9384     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
9385     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9386     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9387     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9388     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9389     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9390     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1.0000000000000002p16383L),
9391     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9392     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9393     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9394     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1.0000000000000002p16319L),
9395     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9396     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
9397     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9398 #endif
9399 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9400     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9401     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9402     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9403     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9404     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9405     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9406     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9407     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9408     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9409     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
9410     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9411     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
9412     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1.0000000000000000000000000001p-16382L),
9413     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9414     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9415     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
9416     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9417     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9418     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9419     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9420     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16493L, UNDERFLOW_EXCEPTION),
9421     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9422     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
9423     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9424     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9425     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9426     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9427     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9428     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9429     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9430     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9431     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9432     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1.0000000000000000000000000001p16319L),
9433     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9434     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
9435     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9436 #endif
9437     END_DATA (fma_upward)
9438   };
9439
9440 static void
9441 fma_test_upward (void)
9442 {
9443   START (fma_upward);
9444   RUN_TEST_LOOP_fff_f (fma, fma_upward_test_data, FE_UPWARD);
9445   END (fma_upward);
9446 }
9447
9448
9449 static const struct test_ff_f_data fmax_test_data[] =
9450   {
9451     START_DATA (fmax),
9452     TEST_ff_f (fmax, 0, 0, 0),
9453     TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero),
9454     TEST_ff_f (fmax, 9, 0, 9),
9455     TEST_ff_f (fmax, 0, 9, 9),
9456     TEST_ff_f (fmax, -9, 0, 0),
9457     TEST_ff_f (fmax, 0, -9, 0),
9458
9459     TEST_ff_f (fmax, plus_infty, 9, plus_infty),
9460     TEST_ff_f (fmax, 0, plus_infty, plus_infty),
9461     TEST_ff_f (fmax, -9, plus_infty, plus_infty),
9462     TEST_ff_f (fmax, plus_infty, -9, plus_infty),
9463
9464     TEST_ff_f (fmax, minus_infty, 9, 9),
9465     TEST_ff_f (fmax, minus_infty, -9, -9),
9466     TEST_ff_f (fmax, 9, minus_infty, 9),
9467     TEST_ff_f (fmax, -9, minus_infty, -9),
9468
9469     TEST_ff_f (fmax, 0, qnan_value, 0),
9470     TEST_ff_f (fmax, 9, qnan_value, 9),
9471     TEST_ff_f (fmax, -9, qnan_value, -9),
9472     TEST_ff_f (fmax, qnan_value, 0, 0),
9473     TEST_ff_f (fmax, qnan_value, 9, 9),
9474     TEST_ff_f (fmax, qnan_value, -9, -9),
9475     TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty),
9476     TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty),
9477     TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty),
9478     TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty),
9479     TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value),
9480     END_DATA (fmax)
9481   };
9482
9483 static void
9484 fmax_test (void)
9485 {
9486   START (fmax);
9487   RUN_TEST_LOOP_ff_f (fmax, fmax_test_data, );
9488   END (fmax);
9489 }
9490
9491
9492 static const struct test_ff_f_data fmin_test_data[] =
9493   {
9494     START_DATA (fmin),
9495     TEST_ff_f (fmin, 0, 0, 0),
9496     TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero),
9497     TEST_ff_f (fmin, 9, 0, 0),
9498     TEST_ff_f (fmin, 0, 9, 0),
9499     TEST_ff_f (fmin, -9, 0, -9),
9500     TEST_ff_f (fmin, 0, -9, -9),
9501
9502     TEST_ff_f (fmin, plus_infty, 9, 9),
9503     TEST_ff_f (fmin, 9, plus_infty, 9),
9504     TEST_ff_f (fmin, plus_infty, -9, -9),
9505     TEST_ff_f (fmin, -9, plus_infty, -9),
9506     TEST_ff_f (fmin, minus_infty, 9, minus_infty),
9507     TEST_ff_f (fmin, minus_infty, -9, minus_infty),
9508     TEST_ff_f (fmin, 9, minus_infty, minus_infty),
9509     TEST_ff_f (fmin, -9, minus_infty, minus_infty),
9510
9511     TEST_ff_f (fmin, 0, qnan_value, 0),
9512     TEST_ff_f (fmin, 9, qnan_value, 9),
9513     TEST_ff_f (fmin, -9, qnan_value, -9),
9514     TEST_ff_f (fmin, qnan_value, 0, 0),
9515     TEST_ff_f (fmin, qnan_value, 9, 9),
9516     TEST_ff_f (fmin, qnan_value, -9, -9),
9517     TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty),
9518     TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty),
9519     TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty),
9520     TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty),
9521     TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value),
9522     END_DATA (fmin)
9523   };
9524
9525 static void
9526 fmin_test (void)
9527 {
9528   START (fmin);
9529   RUN_TEST_LOOP_ff_f (fmin, fmin_test_data, );
9530   END (fmin);
9531 }
9532
9533
9534 static const struct test_ff_f_data fmod_test_data[] =
9535   {
9536     START_DATA (fmod),
9537     /* fmod (+0, y) == +0 for y != 0.  */
9538     TEST_ff_f (fmod, 0, 3, 0),
9539
9540     /* fmod (-0, y) == -0 for y != 0.  */
9541     TEST_ff_f (fmod, minus_zero, 3, minus_zero),
9542
9543     /* fmod (+inf, y) == qNaN plus invalid exception.  */
9544     TEST_ff_f (fmod, plus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9545     /* fmod (-inf, y) == qNaN plus invalid exception.  */
9546     TEST_ff_f (fmod, minus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9547     /* fmod (x, +0) == qNaN plus invalid exception.  */
9548     TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9549     /* fmod (x, -0) == qNaN plus invalid exception.  */
9550     TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION),
9551
9552     /* fmod (x, +inf) == x for x not infinite.  */
9553     TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
9554     /* fmod (x, -inf) == x for x not infinite.  */
9555     TEST_ff_f (fmod, 3.0, minus_infty, 3.0),
9556
9557     TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value),
9558
9559     TEST_ff_f (fmod, 6.5, 2.25L, 2.0L),
9560     TEST_ff_f (fmod, -6.5, 2.25L, -2.0L),
9561     TEST_ff_f (fmod, 6.5, -2.25L, 2.0L),
9562     TEST_ff_f (fmod, -6.5, -2.25L, -2.0L),
9563
9564     TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero),
9565 #ifndef TEST_FLOAT
9566     TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero),
9567 #endif
9568 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
9569     TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero),
9570 #endif
9571     END_DATA (fmod)
9572   };
9573
9574 static void
9575 fmod_test (void)
9576 {
9577   errno = 0;
9578   FUNC(fmod) (6.5, 2.3L);
9579   if (errno == ENOSYS)
9580     /* Function not implemented.  */
9581     return;
9582
9583   START (fmod);
9584   RUN_TEST_LOOP_ff_f (fmod, fmod_test_data, );
9585   END (fmod);
9586 }
9587
9588
9589 static const struct test_f_i_data fpclassify_test_data[] =
9590   {
9591     START_DATA (fpclassify),
9592     TEST_f_i (fpclassify, qnan_value, FP_NAN),
9593     TEST_f_i (fpclassify, plus_infty, FP_INFINITE),
9594     TEST_f_i (fpclassify, minus_infty, FP_INFINITE),
9595     TEST_f_i (fpclassify, plus_zero, FP_ZERO),
9596     TEST_f_i (fpclassify, minus_zero, FP_ZERO),
9597     TEST_f_i (fpclassify, 1000, FP_NORMAL),
9598     TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL),
9599     END_DATA (fpclassify)
9600   };
9601
9602 static void
9603 fpclassify_test (void)
9604 {
9605   START (fpclassify);
9606   RUN_TEST_LOOP_f_i_tg (fpclassify, fpclassify_test_data, );
9607   END (fpclassify);
9608 }
9609
9610
9611 static const struct test_f_f1_data frexp_test_data[] =
9612   {
9613     START_DATA (frexp),
9614     TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE),
9615     TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE),
9616     TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE),
9617
9618     TEST_fI_f1 (frexp, 0.0, 0.0, 0.0),
9619     TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0),
9620
9621     TEST_fI_f1 (frexp, 12.8L, 0.8L, 4),
9622     TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5),
9623     END_DATA (frexp)
9624   };
9625
9626 static void
9627 frexp_test (void)
9628 {
9629   int x;
9630
9631   START (frexp);
9632   RUN_TEST_LOOP_fI_f1 (frexp, frexp_test_data, , x);
9633   END (frexp);
9634 }
9635
9636
9637 static const struct test_f_f1_data gamma_test_data[] =
9638   {
9639     START_DATA (gamma),
9640     TEST_f_f1 (gamma, plus_infty, plus_infty, 1),
9641     TEST_f_f1 (gamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION),
9642     TEST_f_f1 (gamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION),
9643     TEST_f_f1 (gamma, minus_infty, plus_infty, IGNORE),
9644     TEST_f_f1 (gamma, qnan_value, qnan_value, IGNORE),
9645
9646     TEST_f_f1 (gamma, 1, 0, 1),
9647     TEST_f_f1 (gamma, 3, M_LN2l, 1),
9648
9649     TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1),
9650     TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1),
9651     END_DATA (gamma)
9652   };
9653
9654 static void
9655 gamma_test (void)
9656 {
9657   errno = 0;
9658   FUNC(gamma) (1);
9659
9660   if (errno == ENOSYS)
9661     /* Function not implemented.  */
9662     return;
9663
9664   START (gamma);
9665   RUN_TEST_LOOP_f_f1 (gamma, gamma_test_data, , signgam);
9666   END (gamma);
9667 }
9668
9669 static const struct test_ff_f_data hypot_test_data[] =
9670   {
9671     START_DATA (hypot),
9672     TEST_ff_f (hypot, plus_infty, 1, plus_infty),
9673     TEST_ff_f (hypot, minus_infty, 1, plus_infty),
9674
9675 #ifndef TEST_INLINE
9676     TEST_ff_f (hypot, plus_infty, qnan_value, plus_infty),
9677     TEST_ff_f (hypot, minus_infty, qnan_value, plus_infty),
9678     TEST_ff_f (hypot, qnan_value, plus_infty, plus_infty),
9679     TEST_ff_f (hypot, qnan_value, minus_infty, plus_infty),
9680 #endif
9681
9682     TEST_ff_f (hypot, qnan_value, qnan_value, qnan_value),
9683
9684     /* hypot (x,y) == hypot (+-x, +-y)  */
9685     TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L),
9686     TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L),
9687     TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L),
9688     TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L),
9689     TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L),
9690     TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L),
9691     TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L),
9692     TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L),
9693
9694     /*  hypot (x,0) == fabs (x)  */
9695     TEST_ff_f (hypot, 0.75L, 0, 0.75L),
9696     TEST_ff_f (hypot, -0.75L, 0, 0.75L),
9697     TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L),
9698
9699     TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
9700
9701     TEST_ff_f (hypot, 1.0L, 0x1p-61L, 1.0L),
9702     TEST_ff_f (hypot, 0x1p+0L, 0x1.fp-129L, 0x1p+0L),
9703 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
9704     TEST_ff_f (hypot, 0x1.23456789abcdef0123456789ab8p-500L, 0x1.23456789abcdef0123456789ab8p-500L, 4.9155782399407039128612180934736799735113e-151L),
9705 #endif
9706
9707 #if !(defined TEST_FLOAT && defined TEST_INLINE)
9708     TEST_ff_f (hypot, 0x3p125L, 0x4p125L, 0x5p125L),
9709     TEST_ff_f (hypot, 0x1.234566p-126L, 0x1.234566p-126L, 1.891441686191081936598531534017449451173e-38L),
9710 #endif
9711
9712 #if !defined TEST_FLOAT && !(defined TEST_DOUBLE && defined TEST_INLINE)
9713     TEST_ff_f (hypot, 0x3p1021L, 0x4p1021L, 0x5p1021L),
9714     TEST_ff_f (hypot, 0x1p+0L, 0x0.3ep-1022L, 0x1p+0L),
9715 #endif
9716
9717 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 && !defined TEST_INLINE
9718     TEST_ff_f (hypot, 0x3p16381L, 0x4p16381L, 0x5p16381L),
9719 #endif
9720     END_DATA (hypot)
9721   };
9722
9723 static void
9724 hypot_test (void)
9725 {
9726   errno = 0;
9727   FUNC(hypot) (0.7L, 12.4L);
9728   if (errno == ENOSYS)
9729     /* Function not implemented.  */
9730     return;
9731
9732   START (hypot);
9733   RUN_TEST_LOOP_ff_f (hypot, hypot_test_data, );
9734   END (hypot);
9735 }
9736
9737
9738 static const struct test_f_i_data ilogb_test_data[] =
9739   {
9740     START_DATA (ilogb),
9741     TEST_f_i (ilogb, 1, 0),
9742     TEST_f_i (ilogb, M_El, 1),
9743     TEST_f_i (ilogb, 1024, 10),
9744     TEST_f_i (ilogb, -2000, 10),
9745
9746     /* ilogb (0.0) == FP_ILOGB0 plus invalid exception  */
9747     TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION|ERRNO_EDOM),
9748     /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception  */
9749     TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION|ERRNO_EDOM),
9750     /* ilogb (inf) == INT_MAX plus invalid exception  */
9751     TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM),
9752     /* ilogb (-inf) == INT_MAX plus invalid exception  */
9753     TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM),
9754     END_DATA (ilogb)
9755   };
9756
9757 static void
9758 ilogb_test (void)
9759 {
9760   START (ilogb);
9761   RUN_TEST_LOOP_f_i (ilogb, ilogb_test_data, );
9762   END (ilogb);
9763 }
9764
9765 static void
9766 isfinite_test (void)
9767 {
9768   START (isfinite);
9769
9770   TEST_f_b (isfinite, 0, 1);
9771   TEST_f_b (isfinite, minus_zero, 1);
9772   TEST_f_b (isfinite, 10, 1);
9773   TEST_f_b (isfinite, min_subnorm_value, 1);
9774   TEST_f_b (isfinite, plus_infty, 0);
9775   TEST_f_b (isfinite, minus_infty, 0);
9776   TEST_f_b (isfinite, qnan_value, 0);
9777
9778   END (isfinite);
9779 }
9780
9781 static void
9782 isgreater_test (void)
9783 {
9784   START (isgreater);
9785
9786   TEST_ff_i (isgreater, minus_zero, minus_zero, 0);
9787   TEST_ff_i (isgreater, minus_zero, plus_zero, 0);
9788   TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0);
9789   TEST_ff_i (isgreater, minus_zero, qnan_value, 0);
9790   TEST_ff_i (isgreater, plus_zero, minus_zero, 0);
9791   TEST_ff_i (isgreater, plus_zero, plus_zero, 0);
9792   TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0);
9793   TEST_ff_i (isgreater, plus_zero, qnan_value, 0);
9794   TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1);
9795   TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1);
9796   TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0);
9797   TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0);
9798   TEST_ff_i (isgreater, qnan_value, minus_zero, 0);
9799   TEST_ff_i (isgreater, qnan_value, plus_zero, 0);
9800   TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0);
9801   TEST_ff_i (isgreater, qnan_value, qnan_value, 0);
9802
9803   END (isgreater);
9804 }
9805
9806 static void
9807 isgreaterequal_test (void)
9808 {
9809   START (isgreaterequal);
9810
9811   TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1);
9812   TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1);
9813   TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0);
9814   TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0);
9815   TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1);
9816   TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1);
9817   TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0);
9818   TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0);
9819   TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1);
9820   TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1);
9821   TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1);
9822   TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0);
9823   TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0);
9824   TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0);
9825   TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0);
9826   TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0);
9827
9828   END (isgreaterequal);
9829 }
9830
9831 static void
9832 isinf_test (void)
9833 {
9834   START (isinf);
9835
9836   TEST_f_b (isinf, 0, 0);
9837   TEST_f_b (isinf, minus_zero, 0);
9838   TEST_f_b (isinf, 10, 0);
9839   TEST_f_b (isinf, min_subnorm_value, 0);
9840   TEST_f_b (isinf, plus_infty, 1);
9841   TEST_f_b (isinf, minus_infty, 1);
9842   TEST_f_b (isinf, qnan_value, 0);
9843
9844   END (isinf);
9845 }
9846
9847 static void
9848 isless_test (void)
9849 {
9850   START (isless);
9851
9852   TEST_ff_i (isless, minus_zero, minus_zero, 0);
9853   TEST_ff_i (isless, minus_zero, plus_zero, 0);
9854   TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1);
9855   TEST_ff_i (isless, minus_zero, qnan_value, 0);
9856   TEST_ff_i (isless, plus_zero, minus_zero, 0);
9857   TEST_ff_i (isless, plus_zero, plus_zero, 0);
9858   TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1);
9859   TEST_ff_i (isless, plus_zero, qnan_value, 0);
9860   TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0);
9861   TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0);
9862   TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0);
9863   TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0);
9864   TEST_ff_i (isless, qnan_value, minus_zero, 0);
9865   TEST_ff_i (isless, qnan_value, plus_zero, 0);
9866   TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0);
9867   TEST_ff_i (isless, qnan_value, qnan_value, 0);
9868
9869   END (isless);
9870 }
9871
9872 static void
9873 islessequal_test (void)
9874 {
9875   START (islessequal);
9876
9877   TEST_ff_i (islessequal, minus_zero, minus_zero, 1);
9878   TEST_ff_i (islessequal, minus_zero, plus_zero, 1);
9879   TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1);
9880   TEST_ff_i (islessequal, minus_zero, qnan_value, 0);
9881   TEST_ff_i (islessequal, plus_zero, minus_zero, 1);
9882   TEST_ff_i (islessequal, plus_zero, plus_zero, 1);
9883   TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1);
9884   TEST_ff_i (islessequal, plus_zero, qnan_value, 0);
9885   TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0);
9886   TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0);
9887   TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1);
9888   TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0);
9889   TEST_ff_i (islessequal, qnan_value, minus_zero, 0);
9890   TEST_ff_i (islessequal, qnan_value, plus_zero, 0);
9891   TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0);
9892   TEST_ff_i (islessequal, qnan_value, qnan_value, 0);
9893
9894   END (islessequal);
9895 }
9896
9897 static void
9898 islessgreater_test (void)
9899 {
9900   START (islessgreater);
9901
9902   TEST_ff_i (islessgreater, minus_zero, minus_zero, 0);
9903   TEST_ff_i (islessgreater, minus_zero, plus_zero, 0);
9904   TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1);
9905   TEST_ff_i (islessgreater, minus_zero, qnan_value, 0);
9906   TEST_ff_i (islessgreater, plus_zero, minus_zero, 0);
9907   TEST_ff_i (islessgreater, plus_zero, plus_zero, 0);
9908   TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1);
9909   TEST_ff_i (islessgreater, plus_zero, qnan_value, 0);
9910   TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1);
9911   TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1);
9912   TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0);
9913   TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0);
9914   TEST_ff_i (islessgreater, qnan_value, minus_zero, 0);
9915   TEST_ff_i (islessgreater, qnan_value, plus_zero, 0);
9916   TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0);
9917   TEST_ff_i (islessgreater, qnan_value, qnan_value, 0);
9918
9919   END (islessgreater);
9920 }
9921
9922 static void
9923 isnan_test (void)
9924 {
9925   START (isnan);
9926
9927   TEST_f_b (isnan, 0, 0);
9928   TEST_f_b (isnan, minus_zero, 0);
9929   TEST_f_b (isnan, 10, 0);
9930   TEST_f_b (isnan, min_subnorm_value, 0);
9931   TEST_f_b (isnan, plus_infty, 0);
9932   TEST_f_b (isnan, minus_infty, 0);
9933   TEST_f_b (isnan, qnan_value, 1);
9934
9935   END (isnan);
9936 }
9937
9938 static void
9939 isnormal_test (void)
9940 {
9941   START (isnormal);
9942
9943   TEST_f_b (isnormal, 0, 0);
9944   TEST_f_b (isnormal, minus_zero, 0);
9945   TEST_f_b (isnormal, 10, 1);
9946   TEST_f_b (isnormal, min_subnorm_value, 0);
9947   TEST_f_b (isnormal, plus_infty, 0);
9948   TEST_f_b (isnormal, minus_infty, 0);
9949   TEST_f_b (isnormal, qnan_value, 0);
9950
9951   END (isnormal);
9952 }
9953
9954 static void
9955 issignaling_test (void)
9956 {
9957   START (issignaling);
9958
9959   TEST_f_b (issignaling, 0, 0);
9960   TEST_f_b (issignaling, minus_zero, 0);
9961   TEST_f_b (issignaling, 10, 0);
9962   TEST_f_b (issignaling, min_subnorm_value, 0);
9963   TEST_f_b (issignaling, plus_infty, 0);
9964   TEST_f_b (issignaling, minus_infty, 0);
9965   TEST_f_b (issignaling, qnan_value, 0);
9966
9967   END (issignaling);
9968 }
9969
9970 static void
9971 isunordered_test (void)
9972 {
9973   START (isunordered);
9974
9975   TEST_ff_i (isunordered, minus_zero, minus_zero, 0);
9976   TEST_ff_i (isunordered, minus_zero, plus_zero, 0);
9977   TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0);
9978   TEST_ff_i (isunordered, minus_zero, qnan_value, 1);
9979   TEST_ff_i (isunordered, plus_zero, minus_zero, 0);
9980   TEST_ff_i (isunordered, plus_zero, plus_zero, 0);
9981   TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0);
9982   TEST_ff_i (isunordered, plus_zero, qnan_value, 1);
9983   TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0);
9984   TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0);
9985   TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0);
9986   TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1);
9987   TEST_ff_i (isunordered, qnan_value, minus_zero, 1);
9988   TEST_ff_i (isunordered, qnan_value, plus_zero, 1);
9989   TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1);
9990   TEST_ff_i (isunordered, qnan_value, qnan_value, 1);
9991
9992   END (isunordered);
9993 }
9994
9995 static const struct test_f_f_data j0_test_data[] =
9996   {
9997     START_DATA (j0),
9998     /* j0 is the Bessel function of the first kind of order 0 */
9999     TEST_f_f (j0, qnan_value, qnan_value),
10000     TEST_f_f (j0, plus_infty, 0),
10001     TEST_f_f (j0, -1.0, 0.765197686557966551449717526102663221L),
10002     TEST_f_f (j0, 0.0, 1.0),
10003     TEST_f_f (j0, 0.125L, 0.996097563041985204620768999453174712L),
10004     TEST_f_f (j0, 0.75L, 0.864242275166648623555731103820923211L),
10005     TEST_f_f (j0, 1.0, 0.765197686557966551449717526102663221L),
10006     TEST_f_f (j0, 1.5, 0.511827671735918128749051744283411720L),
10007     TEST_f_f (j0, 2.0, 0.223890779141235668051827454649948626L),
10008     TEST_f_f (j0, 8.0, 0.171650807137553906090869407851972001L),
10009     TEST_f_f (j0, 10.0, -0.245935764451348335197760862485328754L),
10010     TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
10011     TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
10012
10013     TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L),
10014
10015 #ifndef TEST_FLOAT
10016     TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L),
10017     TEST_f_f (j0, 0x1p1023L, -1.5665258060609012834424478437196679802783e-155L),
10018 #endif
10019
10020 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
10021     TEST_f_f (j0, 0x1p16382L, -1.2193782500509000574176799046642541129387e-2466L),
10022     TEST_f_f (j0, 0x1p16383L, 9.5859502826270374691362975419147645151233e-2467L),
10023 #endif
10024     END_DATA (j0)
10025   };
10026
10027 static void
10028 j0_test (void)
10029 {
10030   FLOAT s, c;
10031   errno = 0;
10032   FUNC (sincos) (0, &s, &c);
10033   if (errno == ENOSYS)
10034     /* Required function not implemented.  */
10035     return;
10036   FUNC(j0) (0);
10037   if (errno == ENOSYS)
10038     /* Function not implemented.  */
10039     return;
10040
10041   START (j0);
10042   RUN_TEST_LOOP_f_f (j0, j0_test_data, );
10043   END (j0);
10044 }
10045
10046
10047 static const struct test_f_f_data j1_test_data[] =
10048   {
10049     START_DATA (j1),
10050     /* j1 is the Bessel function of the first kind of order 1 */
10051     TEST_f_f (j1, qnan_value, qnan_value),
10052     TEST_f_f (j1, plus_infty, 0),
10053
10054     TEST_f_f (j1, -1.0, -0.440050585744933515959682203718914913L),
10055     TEST_f_f (j1, 0.0, 0.0),
10056     TEST_f_f (j1, 0.125L, 0.0623780091344946810942311355879361177L),
10057     TEST_f_f (j1, 0.75L, 0.349243602174862192523281016426251335L),
10058     TEST_f_f (j1, 1.0, 0.440050585744933515959682203718914913L),
10059     TEST_f_f (j1, 1.5, 0.557936507910099641990121213156089400L),
10060     TEST_f_f (j1, 2.0, 0.576724807756873387202448242269137087L),
10061     TEST_f_f (j1, 8.0, 0.234636346853914624381276651590454612L),
10062     TEST_f_f (j1, 10.0, 0.0434727461688614366697487680258592883L),
10063
10064     TEST_f_f (j1, 0x1.3ffp+74L, 1.818984347516051243459364437186082741567e-12L),
10065
10066 #ifndef TEST_FLOAT
10067     TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
10068     TEST_f_f (j1, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
10069 #endif
10070
10071 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
10072     TEST_f_f (j1, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
10073     TEST_f_f (j1, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
10074 #endif
10075     END_DATA (j1)
10076   };
10077
10078 static void
10079 j1_test (void)
10080 {
10081   FLOAT s, c;
10082   errno = 0;
10083   FUNC (sincos) (0, &s, &c);
10084   if (errno == ENOSYS)
10085     /* Required function not implemented.  */
10086     return;
10087   FUNC(j1) (0);
10088   if (errno == ENOSYS)
10089     /* Function not implemented.  */
10090     return;
10091
10092   START (j1);
10093   RUN_TEST_LOOP_f_f (j1, j1_test_data, );
10094   END (j1);
10095 }
10096
10097 static const struct test_if_f_data jn_test_data[] =
10098   {
10099     START_DATA (jn),
10100     /* jn is the Bessel function of the first kind of order n.  */
10101     /* jn (0, x) == j0 (x)  */
10102     TEST_if_f (jn, 0, qnan_value, qnan_value),
10103     TEST_if_f (jn, 0, plus_infty, 0),
10104     TEST_if_f (jn, 0, -1.0, 0.765197686557966551449717526102663221L),
10105     TEST_if_f (jn, 0, 0.0, 1.0),
10106     TEST_if_f (jn, 0, 0.125L, 0.996097563041985204620768999453174712L),
10107     TEST_if_f (jn, 0, 0.75L, 0.864242275166648623555731103820923211L),
10108     TEST_if_f (jn, 0, 1.0, 0.765197686557966551449717526102663221L),
10109     TEST_if_f (jn, 0, 1.5, 0.511827671735918128749051744283411720L),
10110     TEST_if_f (jn, 0, 2.0, 0.223890779141235668051827454649948626L),
10111     TEST_if_f (jn, 0, 8.0, 0.171650807137553906090869407851972001L),
10112     TEST_if_f (jn, 0, 10.0, -0.245935764451348335197760862485328754L),
10113     TEST_if_f (jn, 0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
10114     TEST_if_f (jn, 0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
10115
10116     /* jn (1, x) == j1 (x)  */
10117     TEST_if_f (jn, 1, qnan_value, qnan_value),
10118     TEST_if_f (jn, 1, plus_infty, 0),
10119     TEST_if_f (jn, 1, -1.0, -0.440050585744933515959682203718914913L),
10120     TEST_if_f (jn, 1, 0.0, 0.0),
10121     TEST_if_f (jn, 1, 0.125L, 0.0623780091344946810942311355879361177L),
10122     TEST_if_f (jn, 1, 0.75L, 0.349243602174862192523281016426251335L),
10123     TEST_if_f (jn, 1, 1.0, 0.440050585744933515959682203718914913L),
10124     TEST_if_f (jn, 1, 1.5, 0.557936507910099641990121213156089400L),
10125     TEST_if_f (jn, 1, 2.0, 0.576724807756873387202448242269137087L),
10126     TEST_if_f (jn, 1, 8.0, 0.234636346853914624381276651590454612L),
10127     TEST_if_f (jn, 1, 10.0, 0.0434727461688614366697487680258592883L),
10128
10129     /* jn (3, x)  */
10130     TEST_if_f (jn, 3, qnan_value, qnan_value),
10131     TEST_if_f (jn, 3, plus_infty, 0),
10132
10133     TEST_if_f (jn, 3, -1.0, -0.0195633539826684059189053216217515083L),
10134     TEST_if_f (jn, 3, 0.0, 0.0),
10135     TEST_if_f (jn, 3, 0.125L, 0.406503832554912875023029337653442868e-4L),
10136     TEST_if_f (jn, 3, 0.75L, 0.848438342327410884392755236884386804e-2L),
10137     TEST_if_f (jn, 3, 1.0, 0.0195633539826684059189053216217515083L),
10138     TEST_if_f (jn, 3, 2.0, 0.128943249474402051098793332969239835L),
10139     TEST_if_f (jn, 3, 10.0, 0.0583793793051868123429354784103409563L),
10140
10141     /*  jn (10, x)  */
10142     TEST_if_f (jn, 10, qnan_value, qnan_value),
10143     TEST_if_f (jn, 10, plus_infty, 0),
10144
10145     TEST_if_f (jn, 10, -1.0, 0.263061512368745320699785368779050294e-9L),
10146     TEST_if_f (jn, 10, 0.0, 0.0),
10147     TEST_if_f (jn, 10, 0.125L, 0.250543369809369890173993791865771547e-18L),
10148     TEST_if_f (jn, 10, 0.75L, 0.149621713117596814698712483621682835e-10L),
10149     TEST_if_f (jn, 10, 1.0, 0.263061512368745320699785368779050294e-9L),
10150     TEST_if_f (jn, 10, 2.0, 0.251538628271673670963516093751820639e-6L),
10151     TEST_if_f (jn, 10, 10.0, 0.207486106633358857697278723518753428L),
10152
10153     /* BZ #11589 .*/
10154     TEST_if_f (jn, 2, 2.4048255576957729L, 0.43175480701968038399746111312430703L),
10155     TEST_if_f (jn, 3, 2.4048255576957729L, 0.19899990535769083404042146764530813L),
10156     TEST_if_f (jn, 4, 2.4048255576957729L, 0.647466661641779720084932282551219891E-1L),
10157     TEST_if_f (jn, 5, 2.4048255576957729L, 0.163892432048058525099230549946147698E-1L),
10158     TEST_if_f (jn, 6, 2.4048255576957729L, 0.34048184720278336646673682895929161E-2L),
10159     TEST_if_f (jn, 7, 2.4048255576957729L, 0.60068836573295394221291569249883076E-3L),
10160     TEST_if_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L),
10161     TEST_if_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L),
10162
10163     /* Bug 14155: spurious exception may occur.  */
10164     TEST_if_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L, UNDERFLOW_EXCEPTION_OK),
10165     END_DATA (jn)
10166   };
10167
10168 static void
10169 jn_test (void)
10170 {
10171   FLOAT s, c;
10172   errno = 0;
10173   FUNC (sincos) (0, &s, &c);
10174   if (errno == ENOSYS)
10175     /* Required function not implemented.  */
10176     return;
10177   FUNC(jn) (1, 1);
10178   if (errno == ENOSYS)
10179     /* Function not implemented.  */
10180     return;
10181
10182   START (jn);
10183   RUN_TEST_LOOP_if_f (jn, jn_test_data, );
10184   END (jn);
10185 }
10186
10187
10188 static const struct test_fi_f_data ldexp_test_data[] =
10189   {
10190     START_DATA (ldexp),
10191     TEST_fi_f (ldexp, 0, 0, 0),
10192     TEST_fi_f (ldexp, minus_zero, 0, minus_zero),
10193
10194     TEST_fi_f (ldexp, plus_infty, 1, plus_infty),
10195     TEST_fi_f (ldexp, minus_infty, 1, minus_infty),
10196     TEST_fi_f (ldexp, qnan_value, 1, qnan_value),
10197
10198     TEST_fi_f (ldexp, 0.8L, 4, 12.8L),
10199     TEST_fi_f (ldexp, -0.854375L, 5, -27.34L),
10200
10201     /* ldexp (x, 0) == x.  */
10202     TEST_fi_f (ldexp, 1.0L, 0L, 1.0L),
10203     END_DATA (ldexp)
10204   };
10205
10206 static void
10207 ldexp_test (void)
10208 {
10209   START (ldexp);
10210   RUN_TEST_LOOP_fi_f (ldexp, ldexp_test_data, );
10211   END (ldexp);
10212 }
10213
10214
10215 static const struct test_f_f1_data lgamma_test_data[] =
10216   {
10217     START_DATA (lgamma),
10218     TEST_f_f1 (lgamma, plus_infty, plus_infty, 1),
10219     TEST_f_f1 (lgamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION),
10220     TEST_f_f1 (lgamma, minus_zero, plus_infty, -1, DIVIDE_BY_ZERO_EXCEPTION),
10221     TEST_f_f1 (lgamma, qnan_value, qnan_value, IGNORE),
10222
10223     /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0.  */
10224     TEST_f_f1 (lgamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
10225     TEST_f_f1 (lgamma, minus_infty, plus_infty, IGNORE),
10226     TEST_f_f1 (lgamma, -max_value, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION),
10227     TEST_f_f1 (lgamma, max_value, plus_infty, 1, OVERFLOW_EXCEPTION),
10228
10229     TEST_f_f1 (lgamma, 1, 0, 1),
10230
10231     TEST_f_f1 (lgamma, 3, M_LN2l, 1),
10232
10233     TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1),
10234     TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1),
10235     TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1),
10236     TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1),
10237     END_DATA (lgamma)
10238   };
10239
10240 static void
10241 lgamma_test (void)
10242 {
10243   errno = 0;
10244   FUNC(lgamma) (0);
10245   if (errno == ENOSYS)
10246     /* Function not implemented.  */
10247     return;
10248
10249   START (lgamma);
10250   RUN_TEST_LOOP_f_f1 (lgamma, lgamma_test_data, , signgam);
10251   END (lgamma);
10252 }
10253
10254
10255 static void
10256 lrint_test (void)
10257 {
10258   /* XXX this test is incomplete.  We need to have a way to specifiy
10259      the rounding method and test the critical cases.  So far, only
10260      unproblematic numbers are tested.  */
10261   /* TODO: missing +/-Inf as well as qNaN tests.  */
10262
10263   START (lrint);
10264
10265   TEST_f_l (lrint, 0.0, 0);
10266   TEST_f_l (lrint, minus_zero, 0);
10267   TEST_f_l (lrint, 0.2L, 0);
10268   TEST_f_l (lrint, -0.2L, 0);
10269
10270   TEST_f_l (lrint, 1.4L, 1);
10271   TEST_f_l (lrint, -1.4L, -1);
10272
10273   TEST_f_l (lrint, 8388600.3L, 8388600);
10274   TEST_f_l (lrint, -8388600.3L, -8388600);
10275
10276   TEST_f_l (lrint, 1071930.0008, 1071930);
10277 #ifndef TEST_FLOAT
10278   TEST_f_l (lrint, 1073741824.01, 1073741824);
10279 # if LONG_MAX > 281474976710656
10280   TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10281 # endif
10282 #endif
10283
10284   END (lrint);
10285 }
10286
10287
10288 static void
10289 lrint_test_tonearest (void)
10290 {
10291   int save_round_mode;
10292   START (lrint_tonearest);
10293
10294   save_round_mode = fegetround ();
10295
10296   if (!fesetround (FE_TONEAREST))
10297     {
10298       TEST_f_l (lrint, 0.0, 0);
10299       TEST_f_l (lrint, minus_zero, 0);
10300       TEST_f_l (lrint, 0.2L, 0);
10301       TEST_f_l (lrint, -0.2L, 0);
10302       TEST_f_l (lrint, 0.5L, 0);
10303       TEST_f_l (lrint, -0.5L, 0);
10304       TEST_f_l (lrint, 0.8L, 1);
10305       TEST_f_l (lrint, -0.8L, -1);
10306
10307       TEST_f_l (lrint, 1.4L, 1);
10308       TEST_f_l (lrint, -1.4L, -1);
10309
10310       TEST_f_l (lrint, 8388600.3L, 8388600);
10311       TEST_f_l (lrint, -8388600.3L, -8388600);
10312
10313       TEST_f_l (lrint, 1071930.0008, 1071930);
10314 #ifndef TEST_FLOAT
10315       TEST_f_l (lrint, 1073741824.01, 1073741824);
10316 # if LONG_MAX > 281474976710656
10317       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10318 # endif
10319 #endif
10320     }
10321
10322   fesetround (save_round_mode);
10323
10324   END (lrint_tonearest);
10325 }
10326
10327
10328 static void
10329 lrint_test_towardzero (void)
10330 {
10331   int save_round_mode;
10332   START (lrint_towardzero);
10333
10334   save_round_mode = fegetround ();
10335
10336   if (!fesetround (FE_TOWARDZERO))
10337     {
10338       TEST_f_l (lrint, 0.0, 0);
10339       TEST_f_l (lrint, minus_zero, 0);
10340       TEST_f_l (lrint, 0.2L, 0);
10341       TEST_f_l (lrint, -0.2L, 0);
10342       TEST_f_l (lrint, 0.5L, 0);
10343       TEST_f_l (lrint, -0.5L, 0);
10344       TEST_f_l (lrint, 0.8L, 0);
10345       TEST_f_l (lrint, -0.8L, 0);
10346
10347       TEST_f_l (lrint, 1.4L, 1);
10348       TEST_f_l (lrint, -1.4L, -1);
10349
10350       TEST_f_l (lrint, 8388600.3L, 8388600);
10351       TEST_f_l (lrint, -8388600.3L, -8388600);
10352
10353       TEST_f_l (lrint, 1071930.0008, 1071930);
10354 #ifndef TEST_FLOAT
10355       TEST_f_l (lrint, 1073741824.01, 1073741824);
10356 # if LONG_MAX > 281474976710656
10357       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10358 # endif
10359 #endif
10360     }
10361
10362   fesetround (save_round_mode);
10363
10364   END (lrint_towardzero);
10365 }
10366
10367
10368 static void
10369 lrint_test_downward (void)
10370 {
10371   int save_round_mode;
10372   START (lrint_downward);
10373
10374   save_round_mode = fegetround ();
10375
10376   if (!fesetround (FE_DOWNWARD))
10377     {
10378       TEST_f_l (lrint, 0.0, 0);
10379       TEST_f_l (lrint, minus_zero, 0);
10380       TEST_f_l (lrint, 0.2L, 0);
10381       TEST_f_l (lrint, -0.2L, -1);
10382       TEST_f_l (lrint, 0.5L, 0);
10383       TEST_f_l (lrint, -0.5L, -1);
10384       TEST_f_l (lrint, 0.8L, 0);
10385       TEST_f_l (lrint, -0.8L, -1);
10386
10387       TEST_f_l (lrint, 1.4L, 1);
10388       TEST_f_l (lrint, -1.4L, -2);
10389
10390       TEST_f_l (lrint, 8388600.3L, 8388600);
10391       TEST_f_l (lrint, -8388600.3L, -8388601);
10392
10393       TEST_f_l (lrint, 1071930.0008, 1071930);
10394 #ifndef TEST_FLOAT
10395       TEST_f_l (lrint, 1073741824.01, 1073741824);
10396 # if LONG_MAX > 281474976710656
10397       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10398 # endif
10399 #endif
10400     }
10401
10402   fesetround (save_round_mode);
10403
10404   END (lrint_downward);
10405 }
10406
10407
10408 static void
10409 lrint_test_upward (void)
10410 {
10411   int save_round_mode;
10412   START (lrint_upward);
10413
10414   save_round_mode = fegetround ();
10415
10416   if (!fesetround (FE_UPWARD))
10417     {
10418       TEST_f_l (lrint, 0.0, 0);
10419       TEST_f_l (lrint, minus_zero, 0);
10420       TEST_f_l (lrint, 0.2L, 1);
10421       TEST_f_l (lrint, -0.2L, 0);
10422       TEST_f_l (lrint, 0.5L, 1);
10423       TEST_f_l (lrint, -0.5L, 0);
10424       TEST_f_l (lrint, 0.8L, 1);
10425       TEST_f_l (lrint, -0.8L, 0);
10426
10427       TEST_f_l (lrint, 1.4L, 2);
10428       TEST_f_l (lrint, -1.4L, -1);
10429
10430       TEST_f_l (lrint, 8388600.3L, 8388601);
10431       TEST_f_l (lrint, -8388600.3L, -8388600);
10432
10433 #ifndef TEST_FLOAT
10434       TEST_f_l (lrint, 1071930.0008, 1071931);
10435       TEST_f_l (lrint, 1073741824.01, 1073741825);
10436 # if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
10437       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10438 # endif
10439 #endif
10440     }
10441
10442   fesetround (save_round_mode);
10443
10444   END (lrint_upward);
10445 }
10446
10447
10448 static void
10449 llrint_test (void)
10450 {
10451   /* XXX this test is incomplete.  We need to have a way to specifiy
10452      the rounding method and test the critical cases.  So far, only
10453      unproblematic numbers are tested.  */
10454   /* TODO: missing +/-Inf as well as qNaN tests.  */
10455
10456   START (llrint);
10457
10458   TEST_f_L (llrint, 0.0, 0);
10459   TEST_f_L (llrint, minus_zero, 0);
10460   TEST_f_L (llrint, 0.2L, 0);
10461   TEST_f_L (llrint, -0.2L, 0);
10462
10463   TEST_f_L (llrint, 1.4L, 1);
10464   TEST_f_L (llrint, -1.4L, -1);
10465
10466   TEST_f_L (llrint, 8388600.3L, 8388600);
10467   TEST_f_L (llrint, -8388600.3L, -8388600);
10468
10469   TEST_f_l (llrint, 1071930.0008, 1071930);
10470
10471   /* Test boundary conditions.  */
10472   /* 0x1FFFFF */
10473   TEST_f_L (llrint, 2097151.0,2097151LL);
10474   /* 0x800000 */
10475   TEST_f_L (llrint, 8388608.0, 8388608LL);
10476   /* 0x1000000 */
10477   TEST_f_L (llrint, 16777216.0, 16777216LL);
10478   /* 0x20000000000 */
10479   TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10480   /* 0x40000000000 */
10481   TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10482   /* 0x1000000000000 */
10483   TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10484   /* 0x10000000000000 */
10485   TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10486   /* 0x10000080000000 */
10487   TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10488   /* 0x20000000000000 */
10489   TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10490   /* 0x80000000000000 */
10491   TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10492   /* 0x100000000000000 */
10493   TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10494 #ifdef TEST_LDOUBLE
10495   /* The input can only be represented in long double.  */
10496   TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10497   TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10498   TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10499   TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10500   TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10501
10502   TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10503   TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10504   TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10505   TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10506   TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10507
10508 # if LDBL_MANT_DIG > 100
10509   TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10510   TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10511   TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10512   TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10513   TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10514   TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10515
10516   TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10517   TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10518   TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10519   TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10520   TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10521   TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10522 #endif
10523
10524   TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10525   TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10526   TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10527   TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10528   TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10529
10530   TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10531   TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10532   TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10533   TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10534   TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10535
10536 # if LDBL_MANT_DIG > 100
10537   TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10538   TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10539   TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10540   TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10541   TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10542   TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10543
10544   TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10545   TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10546   TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10547   TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10548   TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10549   TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10550 #endif
10551
10552   TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10553   TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10554   TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10555   TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10556   TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10557
10558   TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10559   TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10560   TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10561   TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10562   TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10563
10564 # if LDBL_MANT_DIG > 100
10565   TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10566   TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10567   TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10568   TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10569   TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10570   TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10571   TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10572   TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10573   TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10574   TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10575   TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10576   TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10577 # endif
10578 #endif
10579
10580   END (llrint);
10581 }
10582
10583 static void
10584 llrint_test_tonearest (void)
10585 {
10586   int save_round_mode;
10587   START (llrint_tonearest);
10588
10589   save_round_mode = fegetround ();
10590
10591   if (!fesetround (FE_TONEAREST))
10592     {
10593       TEST_f_L (llrint, 0.0, 0);
10594       TEST_f_L (llrint, minus_zero, 0);
10595       TEST_f_L (llrint, 0.2L, 0);
10596       TEST_f_L (llrint, -0.2L, 0);
10597
10598       TEST_f_L (llrint, 1.4L, 1);
10599       TEST_f_L (llrint, -1.4L, -1);
10600
10601       TEST_f_L (llrint, 8388600.3L, 8388600);
10602       TEST_f_L (llrint, -8388600.3L, -8388600);
10603
10604       TEST_f_l (llrint, 1071930.0008, 1071930);
10605
10606       /* Test boundary conditions.  */
10607       /* 0x1FFFFF */
10608       TEST_f_L (llrint, 2097151.0,2097151LL);
10609       /* 0x800000 */
10610       TEST_f_L (llrint, 8388608.0, 8388608LL);
10611       /* 0x1000000 */
10612       TEST_f_L (llrint, 16777216.0, 16777216LL);
10613       /* 0x20000000000 */
10614       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10615       /* 0x40000000000 */
10616       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10617       /* 0x1000000000000 */
10618       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10619       /* 0x10000000000000 */
10620       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10621       /* 0x10000080000000 */
10622       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10623       /* 0x20000000000000 */
10624       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10625       /* 0x80000000000000 */
10626       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10627       /* 0x100000000000000 */
10628       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10629 #ifdef TEST_LDOUBLE
10630       /* The input can only be represented in long double.  */
10631       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10632       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10633       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10634       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10635       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10636
10637       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10638       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10639       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10640       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10641       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10642
10643 # if LDBL_MANT_DIG > 100
10644       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10645       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10646       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10647       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10648       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10649       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10650
10651       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10652       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10653       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10654       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10655       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10656       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10657 #endif
10658
10659       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10660       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10661       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10662       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10663       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10664
10665       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10666       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10667       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10668       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10669       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10670
10671 # if LDBL_MANT_DIG > 100
10672       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10673       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10674       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10675       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10676       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10677       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10678
10679       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10680       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10681       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10682       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10683       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10684       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10685 #endif
10686
10687       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10688       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10689       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10690       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10691       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10692
10693       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10694       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10695       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10696       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10697       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10698
10699 # if LDBL_MANT_DIG > 100
10700       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10701       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10702       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10703       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10704       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10705       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10706       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10707       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10708       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10709       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10710       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10711       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10712 # endif
10713 #endif
10714     }
10715
10716   fesetround (save_round_mode);
10717
10718   END (llrint_tonearest);
10719 }
10720
10721 static void
10722 llrint_test_towardzero (void)
10723 {
10724   int save_round_mode;
10725   START (llrint_towardzero);
10726
10727   save_round_mode = fegetround ();
10728
10729   if (!fesetround (FE_TOWARDZERO))
10730     {
10731       TEST_f_L (llrint, 0.0, 0);
10732       TEST_f_L (llrint, minus_zero, 0);
10733       TEST_f_L (llrint, 0.2L, 0);
10734       TEST_f_L (llrint, -0.2L, 0);
10735
10736       TEST_f_L (llrint, 1.4L, 1);
10737       TEST_f_L (llrint, -1.4L, -1);
10738
10739       TEST_f_L (llrint, 8388600.3L, 8388600);
10740       TEST_f_L (llrint, -8388600.3L, -8388600);
10741
10742       TEST_f_l (llrint, 1071930.0008, 1071930);
10743
10744       /* Test boundary conditions.  */
10745       /* 0x1FFFFF */
10746       TEST_f_L (llrint, 2097151.0,2097151LL);
10747       /* 0x800000 */
10748       TEST_f_L (llrint, 8388608.0, 8388608LL);
10749       /* 0x1000000 */
10750       TEST_f_L (llrint, 16777216.0, 16777216LL);
10751       /* 0x20000000000 */
10752       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10753       /* 0x40000000000 */
10754       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10755       /* 0x1000000000000 */
10756       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10757       /* 0x10000000000000 */
10758       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10759       /* 0x10000080000000 */
10760       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10761       /* 0x20000000000000 */
10762       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10763       /* 0x80000000000000 */
10764       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10765       /* 0x100000000000000 */
10766       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10767 #ifdef TEST_LDOUBLE
10768       /* The input can only be represented in long double.  */
10769       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10770       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10771       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10772       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10773       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10774
10775       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10776       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10777       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10778       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10779       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10780
10781 # if LDBL_MANT_DIG > 100
10782       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10783       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10784       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10785       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10786       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10787       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10788
10789       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10790       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10791       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10792       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10793       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10794       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10795 #endif
10796
10797       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10798       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10799       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10800       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10801       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10802
10803       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10804       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10805       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10806       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10807       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10808
10809 # if LDBL_MANT_DIG > 100
10810       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10811       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10812       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10813       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10814       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10815       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10816
10817       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10818       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10819       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10820       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10821       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10822       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10823 #endif
10824
10825       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10826       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10827       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10828       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10829       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10830
10831       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10832       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10833       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10834       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10835       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10836
10837 # if LDBL_MANT_DIG > 100
10838       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10839       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10840       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10841       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10842       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10843       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10844       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10845       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10846       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10847       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10848       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10849       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10850 # endif
10851 #endif
10852     }
10853
10854   fesetround (save_round_mode);
10855
10856   END (llrint_towardzero);
10857 }
10858
10859 static void
10860 llrint_test_downward (void)
10861 {
10862   int save_round_mode;
10863   START (llrint_downward);
10864
10865   save_round_mode = fegetround ();
10866
10867   if (!fesetround (FE_DOWNWARD))
10868     {
10869       TEST_f_L (llrint, 0.0, 0);
10870       TEST_f_L (llrint, minus_zero, 0);
10871       TEST_f_L (llrint, 0.2L, 0);
10872       TEST_f_L (llrint, -0.2L, -1);
10873
10874       TEST_f_L (llrint, 1.4L, 1);
10875       TEST_f_L (llrint, -1.4L, -2);
10876
10877       TEST_f_L (llrint, 8388600.3L, 8388600);
10878       TEST_f_L (llrint, -8388600.3L, -8388601);
10879
10880       TEST_f_l (llrint, 1071930.0008, 1071930);
10881
10882       /* Test boundary conditions.  */
10883       /* 0x1FFFFF */
10884       TEST_f_L (llrint, 2097151.0,2097151LL);
10885       /* 0x800000 */
10886       TEST_f_L (llrint, 8388608.0, 8388608LL);
10887       /* 0x1000000 */
10888       TEST_f_L (llrint, 16777216.0, 16777216LL);
10889       /* 0x20000000000 */
10890       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10891       /* 0x40000000000 */
10892       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10893       /* 0x1000000000000 */
10894       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10895       /* 0x10000000000000 */
10896       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10897       /* 0x10000080000000 */
10898       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10899       /* 0x20000000000000 */
10900       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10901       /* 0x80000000000000 */
10902       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10903       /* 0x100000000000000 */
10904       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10905 #ifdef TEST_LDOUBLE
10906       /* The input can only be represented in long double.  */
10907       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10908       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10909       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10910       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10911       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10912
10913       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10914       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10915       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10916       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10917       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10918       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10919
10920       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10921       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370497LL);
10922       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370497LL);
10923       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10924       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10925
10926       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370496LL);
10927       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370497LL);
10928       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370498LL);
10929       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10930       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10931       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10932
10933       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10934       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10935       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10936       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10937       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10938
10939       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10940       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10941       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10942       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10943       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10944       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10945
10946       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10947       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740993LL);
10948       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740993LL);
10949       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10950       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10951
10952       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740992LL);
10953       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740993LL);
10954       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740994LL);
10955       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10956       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10957       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10958
10959       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10960       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10961       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10962       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10963       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10964
10965       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10966       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927937LL);
10967       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927937LL);
10968       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10969       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10970
10971 # if LDBL_MANT_DIG > 100
10972       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10973       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10974       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10975       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10976       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10977       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775807LL);
10978       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10979       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775807LL);
10980       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10981       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10982       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10983       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10984 # endif
10985 #endif
10986     }
10987
10988   fesetround (save_round_mode);
10989
10990   END (llrint_downward);
10991 }
10992
10993 static void
10994 llrint_test_upward (void)
10995 {
10996   int save_round_mode;
10997   START (llrint_upward);
10998
10999   save_round_mode = fegetround ();
11000
11001   if (!fesetround (FE_UPWARD))
11002     {
11003       TEST_f_L (llrint, 0.0, 0);
11004       TEST_f_L (llrint, minus_zero, 0);
11005       TEST_f_L (llrint, 0.2L, 1);
11006       TEST_f_L (llrint, -0.2L, 0);
11007
11008       TEST_f_L (llrint, 1.4L, 2);
11009       TEST_f_L (llrint, -1.4L, -1);
11010
11011       TEST_f_L (llrint, 8388600.3L, 8388601);
11012       TEST_f_L (llrint, -8388600.3L, -8388600);
11013 #ifndef TEST_FLOAT
11014       TEST_f_l (llrint, 1071930.0008, 1071931);
11015 #endif
11016       /* Test boundary conditions.  */
11017       /* 0x1FFFFF */
11018       TEST_f_L (llrint, 2097151.0,2097151LL);
11019       /* 0x800000 */
11020       TEST_f_L (llrint, 8388608.0, 8388608LL);
11021       /* 0x1000000 */
11022       TEST_f_L (llrint, 16777216.0, 16777216LL);
11023       /* 0x20000000000 */
11024       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
11025       /* 0x40000000000 */
11026       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
11027       /* 0x1000000000000 */
11028       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
11029       /* 0x10000000000000 */
11030       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
11031       /* 0x10000080000000 */
11032       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
11033       /* 0x20000000000000 */
11034       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
11035       /* 0x80000000000000 */
11036       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
11037       /* 0x100000000000000 */
11038       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
11039 #ifdef TEST_LDOUBLE
11040       /* The input can only be represented in long double.  */
11041       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
11042       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370497LL);
11043       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370497LL);
11044       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
11045       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
11046
11047       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370496LL);
11048       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370497LL);
11049       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370498LL);
11050       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
11051       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
11052       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
11053
11054       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
11055       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
11056       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
11057       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
11058       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
11059
11060       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
11061       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
11062       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
11063       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
11064       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
11065       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
11066
11067       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
11068       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740993LL);
11069       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740993LL);
11070       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
11071       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
11072
11073       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740992LL);
11074       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740993LL);
11075       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740994LL);
11076       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
11077       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
11078       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
11079
11080       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
11081       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
11082       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
11083       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
11084       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
11085
11086       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
11087       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
11088       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
11089       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
11090       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
11091       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
11092
11093       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
11094       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927937LL);
11095       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927937LL);
11096       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
11097       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
11098
11099       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
11100       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
11101       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
11102       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
11103       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
11104
11105 # if LDBL_MANT_DIG > 100
11106       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
11107       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
11108       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
11109       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
11110       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775807LL);
11111       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
11112       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775807L);
11113       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
11114       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
11115       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
11116       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
11117       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
11118 # endif
11119 #endif
11120     }
11121
11122   fesetround (save_round_mode);
11123
11124   END (llrint_upward);
11125 }
11126
11127
11128 static const struct test_f_f_data log_test_data[] =
11129   {
11130     START_DATA (log),
11131     TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11132     TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11133
11134     TEST_f_f (log, 1, 0),
11135
11136     TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION),
11137     TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION),
11138     TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION),
11139     TEST_f_f (log, plus_infty, plus_infty),
11140     TEST_f_f (log, qnan_value, qnan_value),
11141
11142     TEST_f_f (log, M_El, 1),
11143     TEST_f_f (log, M_1_DIV_El, -1),
11144     TEST_f_f (log, 2, M_LN2l),
11145     TEST_f_f (log, 10, M_LN10l),
11146     TEST_f_f (log, 0.75L, -0.287682072451780927439219005993827432L),
11147     END_DATA (log)
11148   };
11149
11150 static void
11151 log_test (void)
11152 {
11153   errno = 0;
11154   FUNC(log) (1);
11155   if (errno == ENOSYS)
11156     /* Function not implemented.  */
11157     return;
11158   START (log);
11159   RUN_TEST_LOOP_f_f (log, log_test_data, );
11160   END (log);
11161 }
11162
11163
11164 static const struct test_f_f_data log10_test_data[] =
11165   {
11166     START_DATA (log10),
11167     TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11168     TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11169
11170     TEST_f_f (log10, 1, 0),
11171
11172     /* log10 (x) == qNaN plus invalid exception if x < 0.  */
11173     TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION),
11174     TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION),
11175     TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION),
11176
11177     TEST_f_f (log10, plus_infty, plus_infty),
11178     TEST_f_f (log10, qnan_value, qnan_value),
11179
11180     TEST_f_f (log10, 0.1L, -1),
11181     TEST_f_f (log10, 10.0, 1),
11182     TEST_f_f (log10, 100.0, 2),
11183     TEST_f_f (log10, 10000.0, 4),
11184     TEST_f_f (log10, M_El, M_LOG10El),
11185     TEST_f_f (log10, 0.75L, -0.124938736608299953132449886193870744L),
11186     END_DATA (log10)
11187   };
11188
11189 static void
11190 log10_test (void)
11191 {
11192   errno = 0;
11193   FUNC(log10) (1);
11194   if (errno == ENOSYS)
11195     /* Function not implemented.  */
11196     return;
11197
11198   START (log10);
11199   RUN_TEST_LOOP_f_f (log10, log10_test_data, );
11200   END (log10);
11201 }
11202
11203
11204 static const struct test_f_f_data log1p_test_data[] =
11205   {
11206     START_DATA (log1p),
11207     TEST_f_f (log1p, 0, 0),
11208     TEST_f_f (log1p, minus_zero, minus_zero),
11209
11210     TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11211     TEST_f_f (log1p, -2, qnan_value, INVALID_EXCEPTION),
11212     TEST_f_f (log1p, -max_value, qnan_value, INVALID_EXCEPTION),
11213     TEST_f_f (log1p, minus_infty, qnan_value, INVALID_EXCEPTION),
11214
11215     TEST_f_f (log1p, plus_infty, plus_infty),
11216     TEST_f_f (log1p, qnan_value, qnan_value),
11217
11218     TEST_f_f (log1p, M_El - 1.0, 1),
11219
11220     TEST_f_f (log1p, -0.25L, -0.287682072451780927439219005993827432L),
11221     TEST_f_f (log1p, -0.875, -2.07944154167983592825169636437452970L),
11222     END_DATA (log1p)
11223   };
11224
11225 static void
11226 log1p_test (void)
11227 {
11228   errno = 0;
11229   FUNC(log1p) (0);
11230   if (errno == ENOSYS)
11231     /* Function not implemented.  */
11232     return;
11233
11234   START (log1p);
11235   RUN_TEST_LOOP_f_f (log1p, log1p_test_data, );
11236   END (log1p);
11237 }
11238
11239
11240 static const struct test_f_f_data log2_test_data[] =
11241   {
11242     START_DATA (log2),
11243     TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11244     TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11245
11246     TEST_f_f (log2, 1, 0),
11247
11248     TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION),
11249     TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION),
11250     TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION),
11251
11252     TEST_f_f (log2, plus_infty, plus_infty),
11253     TEST_f_f (log2, qnan_value, qnan_value),
11254
11255     TEST_f_f (log2, M_El, M_LOG2El),
11256     TEST_f_f (log2, 2.0, 1),
11257     TEST_f_f (log2, 16.0, 4),
11258     TEST_f_f (log2, 256.0, 8),
11259     TEST_f_f (log2, 0.75L, -.415037499278843818546261056052183492L),
11260     END_DATA (log2)
11261   };
11262
11263 static void
11264 log2_test (void)
11265 {
11266   errno = 0;
11267   FUNC(log2) (1);
11268   if (errno == ENOSYS)
11269     /* Function not implemented.  */
11270     return;
11271
11272   START (log2);
11273   RUN_TEST_LOOP_f_f (log2, log2_test_data, );
11274   END (log2);
11275 }
11276
11277
11278 static const struct test_f_f_data logb_test_data[] =
11279   {
11280     START_DATA (logb),
11281     TEST_f_f (logb, plus_infty, plus_infty),
11282     TEST_f_f (logb, minus_infty, plus_infty),
11283
11284     TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11285
11286     TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11287     TEST_f_f (logb, qnan_value, qnan_value),
11288
11289     TEST_f_f (logb, 1, 0),
11290     TEST_f_f (logb, M_El, 1),
11291     TEST_f_f (logb, 1024, 10),
11292     TEST_f_f (logb, -2000, 10),
11293
11294     TEST_f_f (logb, 0x0.1p-127, -131),
11295     TEST_f_f (logb, 0x0.01p-127, -135),
11296     TEST_f_f (logb, 0x0.011p-127, -135),
11297 #ifndef TEST_FLOAT
11298     TEST_f_f (logb, 0x0.8p-1022, -1023),
11299     TEST_f_f (logb, 0x0.1p-1022, -1026),
11300     TEST_f_f (logb, 0x0.00111p-1022, -1034),
11301     TEST_f_f (logb, 0x0.00001p-1022, -1042),
11302     TEST_f_f (logb, 0x0.000011p-1022, -1042),
11303     TEST_f_f (logb, 0x0.0000000000001p-1022, -1074),
11304 #endif
11305 #if defined TEST_LDOUBLE && LDBL_MIN_EXP - LDBL_MANT_DIG <= -16400
11306     TEST_f_f (logb, 0x1p-16400L, -16400),
11307     TEST_f_f (logb, 0x.00000000001p-16382L, -16426),
11308 #endif
11309     END_DATA (logb)
11310   };
11311
11312 static void
11313 logb_test (void)
11314 {
11315   START (logb);
11316   RUN_TEST_LOOP_f_f (logb, logb_test_data, );
11317   END (logb);
11318 }
11319
11320 static const struct test_f_f_data logb_downward_test_data[] =
11321   {
11322     START_DATA (logb_downward),
11323     /* IEEE 754-2008 says (section 5.3.3) that "logB(1) is +0.".  Libm
11324        should not return -0 from logb in any rounding mode.  PowerPC32 has
11325        failed with this test for power4 logb (and logbl on all PowerPC
11326        platforms) in the past due to instruction selection.  GCC PR 52775
11327        provides the availability of the fcfid insn in 32-bit mode which
11328        eliminates the use of fsub in this instance and prevents the negative
11329        signed 0.0.  */
11330
11331     /* BZ #887  */
11332     TEST_f_f (logb, 1.000e+0, plus_zero),
11333     END_DATA (logb_downward)
11334   };
11335
11336 static void
11337 logb_test_downward (void)
11338 {
11339   errno = 0;
11340
11341   FUNC(logb) (0);
11342   if (errno == ENOSYS)
11343     /* Function not implemented.  */
11344     return;
11345
11346   START (logb_downward);
11347   RUN_TEST_LOOP_f_f (logb, logb_downward_test_data, FE_DOWNWARD);
11348   END (logb_downward);
11349 }
11350
11351 static void
11352 lround_test (void)
11353 {
11354   /* TODO: missing +/-Inf as well as qNaN tests.  */
11355
11356   START (lround);
11357
11358   TEST_f_l (lround, 0, 0);
11359   TEST_f_l (lround, minus_zero, 0);
11360   TEST_f_l (lround, 0.2L, 0.0);
11361   TEST_f_l (lround, -0.2L, 0);
11362   TEST_f_l (lround, 0.5, 1);
11363   TEST_f_l (lround, -0.5, -1);
11364   TEST_f_l (lround, 0.8L, 1);
11365   TEST_f_l (lround, -0.8L, -1);
11366   TEST_f_l (lround, 1.5, 2);
11367   TEST_f_l (lround, -1.5, -2);
11368   TEST_f_l (lround, 22514.5, 22515);
11369   TEST_f_l (lround, -22514.5, -22515);
11370   TEST_f_l (lround, 1071930.0008, 1071930);
11371 #ifndef TEST_FLOAT
11372   TEST_f_l (lround, 1073741824.01, 1073741824);
11373 # if LONG_MAX > 281474976710656
11374   TEST_f_l (lround, 281474976710656.025, 281474976710656);
11375   TEST_f_l (lround, 18014398509481974, 18014398509481974);
11376 # endif
11377   TEST_f_l (lround, 2097152.5, 2097153);
11378   TEST_f_l (lround, -2097152.5, -2097153);
11379   /* nextafter(0.5,-1)  */
11380   TEST_f_l (lround, 0x1.fffffffffffffp-2, 0);
11381   /* nextafter(-0.5,1)  */
11382   TEST_f_l (lround, -0x1.fffffffffffffp-2, 0);
11383 #else
11384   /* nextafter(0.5,-1)  */
11385   TEST_f_l (lround, 0x1.fffffp-2, 0);
11386   /* nextafter(-0.5,1)  */
11387   TEST_f_l (lround, -0x1.fffffp-2, 0);
11388   TEST_f_l (lround, 0x1.fffffep+23, 16777215);
11389   TEST_f_l (lround, -0x1.fffffep+23, -16777215);
11390 #endif
11391   END (lround);
11392 }
11393
11394
11395 static void
11396 llround_test (void)
11397 {
11398   /* TODO: missing +/-Inf as well as qNaN tests.  */
11399
11400   START (llround);
11401
11402   TEST_f_L (llround, 0, 0);
11403   TEST_f_L (llround, minus_zero, 0);
11404   TEST_f_L (llround, 0.2L, 0.0);
11405   TEST_f_L (llround, -0.2L, 0);
11406   TEST_f_L (llround, 0.5, 1);
11407   TEST_f_L (llround, -0.5, -1);
11408   TEST_f_L (llround, 0.8L, 1);
11409   TEST_f_L (llround, -0.8L, -1);
11410   TEST_f_L (llround, 1.5, 2);
11411   TEST_f_L (llround, -1.5, -2);
11412   TEST_f_L (llround, 22514.5, 22515);
11413   TEST_f_L (llround, -22514.5, -22515);
11414   TEST_f_l (llround, 1071930.0008, 1071930);
11415 #ifndef TEST_FLOAT
11416   TEST_f_L (llround, 2097152.5, 2097153);
11417   TEST_f_L (llround, -2097152.5, -2097153);
11418   TEST_f_L (llround, 34359738368.5, 34359738369ll);
11419   TEST_f_L (llround, -34359738368.5, -34359738369ll);
11420   TEST_f_L (llround, -3.65309740835E17, -365309740835000000LL);
11421 #endif
11422
11423   /* Test boundary conditions.  */
11424   /* 0x1FFFFF */
11425   TEST_f_L (llround, 2097151.0, 2097151LL);
11426   /* 0x800000 */
11427   TEST_f_L (llround, 8388608.0, 8388608LL);
11428   /* 0x1000000 */
11429   TEST_f_L (llround, 16777216.0, 16777216LL);
11430   /* 0x20000000000 */
11431   TEST_f_L (llround, 2199023255552.0, 2199023255552LL);
11432   /* 0x40000000000 */
11433   TEST_f_L (llround, 4398046511104.0, 4398046511104LL);
11434   /* 0x1000000000000 */
11435   TEST_f_L (llround, 281474976710656.0, 281474976710656LL);
11436   /* 0x10000000000000 */
11437   TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL);
11438   /* 0x10000080000000 */
11439   TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL);
11440   /* 0x20000000000000 */
11441   TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL);
11442   /* 0x80000000000000 */
11443   TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL);
11444   /* 0x100000000000000 */
11445   TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL);
11446
11447 #ifndef TEST_FLOAT
11448   /* 0x100000000 */
11449   TEST_f_L (llround, 4294967295.5, 4294967296LL);
11450   /* 0x200000000 */
11451   TEST_f_L (llround, 8589934591.5, 8589934592LL);
11452
11453   /* nextafter(0.5,-1)  */
11454   TEST_f_L (llround, 0x1.fffffffffffffp-2, 0);
11455   /* nextafter(-0.5,1)  */
11456   TEST_f_L (llround, -0x1.fffffffffffffp-2, 0);
11457   /* On PowerPC an exponent of '52' is the largest incrementally
11458    * representable sequence of whole-numbers in the 'double' range.  We test
11459    * lround to make sure that a guard bit set during the lround operation
11460    * hasn't forced an erroneous shift giving us an incorrect result.  The odd
11461    * numbers between +-(2^52+1 and 2^53-1) are affected since they have the
11462    * rightmost bit set.  */
11463   /* +-(2^52+1)  */
11464   TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL);
11465   TEST_f_L (llround, -0x1.0000000000001p+52,-4503599627370497LL);
11466   /* +-(2^53-1): Input is the last (positive and negative) incrementally
11467    * representable whole-number in the 'double' range that might round
11468    * erroneously.  */
11469   TEST_f_L (llround, 0x1.fffffffffffffp+52, 9007199254740991LL);
11470   TEST_f_L (llround, -0x1.fffffffffffffp+52, -9007199254740991LL);
11471 #else
11472   /* nextafter(0.5,-1)  */
11473   TEST_f_L (llround, 0x1.fffffep-2, 0);
11474   /* nextafter(-0.5,1)  */
11475   TEST_f_L (llround, -0x1.fffffep-2, 0);
11476   /* As above, on PowerPC an exponent of '23' is the largest incrementally
11477    * representable sequence of whole-numbers in the 'float' range.
11478    * Likewise, numbers between +-(2^23+1 and 2^24-1) are affected.  */
11479   TEST_f_L (llround, 0x1.000002p+23,8388609);
11480   TEST_f_L (llround, -0x1.000002p+23,-8388609);
11481   TEST_f_L (llround, 0x1.fffffep+23, 16777215);
11482   TEST_f_L (llround, -0x1.fffffep+23, -16777215);
11483 #endif
11484
11485
11486 #ifdef TEST_LDOUBLE
11487   /* The input can only be represented in long double.  */
11488   TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL);
11489   TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL);
11490   TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL);
11491   TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL);
11492   TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL);
11493
11494 # if LDBL_MANT_DIG > 100
11495   TEST_f_L (llround, 4503599627370495.4999999999999L, 4503599627370495LL);
11496   TEST_f_L (llround, 4503599627370496.4999999999999L, 4503599627370496LL);
11497   TEST_f_L (llround, 4503599627370497.4999999999999L, 4503599627370497LL);
11498   TEST_f_L (llround, 4503599627370494.5000000000001L, 4503599627370495LL);
11499   TEST_f_L (llround, 4503599627370495.5000000000001L, 4503599627370496LL);
11500   TEST_f_L (llround, 4503599627370496.5000000000001L, 4503599627370497LL);
11501
11502   TEST_f_L (llround, -4503599627370495.4999999999999L, -4503599627370495LL);
11503   TEST_f_L (llround, -4503599627370496.4999999999999L, -4503599627370496LL);
11504   TEST_f_L (llround, -4503599627370497.4999999999999L, -4503599627370497LL);
11505   TEST_f_L (llround, -4503599627370494.5000000000001L, -4503599627370495LL);
11506   TEST_f_L (llround, -4503599627370495.5000000000001L, -4503599627370496LL);
11507   TEST_f_L (llround, -4503599627370496.5000000000001L, -4503599627370497LL);
11508 # endif
11509
11510   TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL);
11511   TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL);
11512   TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL);
11513   TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL);
11514   TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL);
11515
11516   TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL);
11517   TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL);
11518   TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL);
11519   TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL);
11520   TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL);
11521
11522 # if LDBL_MANT_DIG > 100
11523   TEST_f_L (llround, 9007199254740991.4999999999999L, 9007199254740991LL);
11524   TEST_f_L (llround, 9007199254740992.4999999999999L, 9007199254740992LL);
11525   TEST_f_L (llround, 9007199254740993.4999999999999L, 9007199254740993LL);
11526   TEST_f_L (llround, 9007199254740991.5000000000001L, 9007199254740992LL);
11527   TEST_f_L (llround, 9007199254740992.5000000000001L, 9007199254740993LL);
11528   TEST_f_L (llround, 9007199254740993.5000000000001L, 9007199254740994LL);
11529
11530   TEST_f_L (llround, -9007199254740991.4999999999999L, -9007199254740991LL);
11531   TEST_f_L (llround, -9007199254740992.4999999999999L, -9007199254740992LL);
11532   TEST_f_L (llround, -9007199254740993.4999999999999L, -9007199254740993LL);
11533   TEST_f_L (llround, -9007199254740991.5000000000001L, -9007199254740992LL);
11534   TEST_f_L (llround, -9007199254740992.5000000000001L, -9007199254740993LL);
11535   TEST_f_L (llround, -9007199254740993.5000000000001L, -9007199254740994LL);
11536 # endif
11537
11538   TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL);
11539   TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL);
11540   TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL);
11541   TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL);
11542   TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL);
11543
11544   TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL);
11545   TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL);
11546   TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL);
11547   TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL);
11548   TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL);
11549
11550   TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL);
11551   TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL);
11552   TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL);
11553   TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL);
11554   TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL);
11555
11556   TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL);
11557   TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL);
11558   TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL);
11559   TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL);
11560   TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL);
11561   TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL);
11562 #endif
11563
11564   END (llround);
11565 }
11566
11567 static const struct test_fF_f1_data modf_test_data[] =
11568   {
11569     START_DATA (modf),
11570     TEST_fF_f1 (modf, plus_infty, 0, plus_infty),
11571     TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty),
11572     TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value),
11573     TEST_fF_f1 (modf, 0, 0, 0),
11574     TEST_fF_f1 (modf, 1.5, 0.5, 1),
11575     TEST_fF_f1 (modf, 2.5, 0.5, 2),
11576     TEST_fF_f1 (modf, -2.5, -0.5, -2),
11577     TEST_fF_f1 (modf, 20, 0, 20),
11578     TEST_fF_f1 (modf, 21, 0, 21),
11579     TEST_fF_f1 (modf, 89.5, 0.5, 89),
11580     END_DATA (modf)
11581   };
11582
11583 static void
11584 modf_test (void)
11585 {
11586   FLOAT x;
11587
11588   START (modf);
11589   RUN_TEST_LOOP_fF_f1 (modf, modf_test_data, , x);
11590   END (modf);
11591 }
11592
11593
11594 static const struct test_f_f_data nearbyint_test_data[] =
11595   {
11596     START_DATA (nearbyint),
11597
11598     TEST_f_f (nearbyint, 0.0, 0.0),
11599     TEST_f_f (nearbyint, minus_zero, minus_zero),
11600     TEST_f_f (nearbyint, plus_infty, plus_infty),
11601     TEST_f_f (nearbyint, minus_infty, minus_infty),
11602     TEST_f_f (nearbyint, qnan_value, qnan_value),
11603
11604     /* Subnormal values */
11605     TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307),
11606     TEST_f_f (nearbyint, -4.45015e-308, minus_zero),
11607
11608     /* Default rounding mode is round to nearest.  */
11609     TEST_f_f (nearbyint, 0.5, 0.0),
11610     TEST_f_f (nearbyint, 1.5, 2.0),
11611     TEST_f_f (nearbyint, -0.5, minus_zero),
11612     TEST_f_f (nearbyint, -1.5, -2.0),
11613
11614     TEST_f_f (nearbyint, 262144.75, 262145.0),
11615     TEST_f_f (nearbyint, 262142.75, 262143.0),
11616     TEST_f_f (nearbyint, 524286.75, 524287.0),
11617     TEST_f_f (nearbyint, 524288.75, 524289.0),
11618
11619     TEST_f_f (nearbyint, 1048576.75, 1048577.0),
11620     TEST_f_f (nearbyint, 2097152.75, 2097153.0),
11621     TEST_f_f (nearbyint, 2492472.75, 2492473.0),
11622     TEST_f_f (nearbyint, 2886220.75, 2886221.0),
11623     TEST_f_f (nearbyint, 3058792.75, 3058793.0),
11624     TEST_f_f (nearbyint, -1048576.75, -1048577.0),
11625     TEST_f_f (nearbyint, -2097152.75, -2097153.0),
11626     TEST_f_f (nearbyint, -2492472.75, -2492473.0),
11627     TEST_f_f (nearbyint, -2886220.75, -2886221.0),
11628     TEST_f_f (nearbyint, -3058792.75, -3058793.0),
11629 #ifndef TEST_FLOAT
11630     TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0),
11631     TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0),
11632     TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0),
11633     TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0),
11634     TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0),
11635     TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0),
11636     TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0),
11637     TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0),
11638     TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0),
11639     TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0),
11640 #endif
11641
11642     END_DATA (nearbyint)
11643   };
11644
11645 static void
11646 nearbyint_test (void)
11647 {
11648   START (nearbyint);
11649   RUN_TEST_LOOP_f_f (nearbyint, nearbyint_test_data, );
11650   END (nearbyint);
11651 }
11652
11653 static const struct test_ff_f_data nextafter_test_data[] =
11654   {
11655     START_DATA (nextafter),
11656
11657     TEST_ff_f (nextafter, 0, 0, 0),
11658     TEST_ff_f (nextafter, minus_zero, 0, 0),
11659     TEST_ff_f (nextafter, 0, minus_zero, minus_zero),
11660     TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero),
11661
11662     TEST_ff_f (nextafter, 9, 9, 9),
11663     TEST_ff_f (nextafter, -9, -9, -9),
11664     TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty),
11665     TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty),
11666
11667     TEST_ff_f (nextafter, qnan_value, 1.1L, qnan_value),
11668     TEST_ff_f (nextafter, 1.1L, qnan_value, qnan_value),
11669     TEST_ff_f (nextafter, qnan_value, qnan_value, qnan_value),
11670
11671     TEST_ff_f (nextafter, max_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
11672     TEST_ff_f (nextafter, -max_value, minus_infty, minus_infty, OVERFLOW_EXCEPTION),
11673
11674 #ifdef TEST_LDOUBLE
11675     // XXX Enable once gcc is fixed.
11676     //TEST_ff_f (nextafter, 0x0.00000040000000000000p-16385L, -0.1L, 0x0.0000003ffffffff00000p-16385L),
11677 #endif
11678
11679     /* XXX We need the hexadecimal FP number representation here for further
11680        tests.  */
11681     END_DATA (nextafter)
11682   };
11683
11684 static void
11685 nextafter_test (void)
11686 {
11687
11688   START (nextafter);
11689   RUN_TEST_LOOP_ff_f (nextafter, nextafter_test_data, );
11690   END (nextafter);
11691 }
11692
11693
11694 static const struct test_ff_f_data_nexttoward nexttoward_test_data[] =
11695   {
11696     START_DATA (nexttoward),
11697     TEST_ff_f (nexttoward, 0, 0, 0),
11698     TEST_ff_f (nexttoward, minus_zero, 0, 0),
11699     TEST_ff_f (nexttoward, 0, minus_zero, minus_zero),
11700     TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero),
11701
11702     TEST_ff_f (nexttoward, 9, 9, 9),
11703     TEST_ff_f (nexttoward, -9, -9, -9),
11704     TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty),
11705     TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty),
11706
11707     TEST_ff_f (nexttoward, qnan_value, 1.1L, qnan_value),
11708     TEST_ff_f (nexttoward, 1.1L, qnan_value, qnan_value),
11709     TEST_ff_f (nexttoward, qnan_value, qnan_value, qnan_value),
11710
11711 #ifdef TEST_FLOAT
11712     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.000002p0),
11713     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.000002p0),
11714     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.000002p0),
11715     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.ffffffp0),
11716     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.ffffffp0),
11717     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.ffffffp0),
11718     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.000002p0),
11719     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.000002p0),
11720     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.000002p0),
11721     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.ffffffp0),
11722     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.ffffffp0),
11723     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.ffffffp0),
11724     TEST_ff_f (nexttoward, -0x1.3p-145, -0xap-148L, -0x1.4p-145, UNDERFLOW_EXCEPTION),
11725 # if LDBL_MANT_DIG >= 64
11726     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.000002p0),
11727     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.ffffffp0),
11728     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.000002p0),
11729     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.ffffffp0),
11730 # endif
11731 # if LDBL_MANT_DIG >= 106
11732     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.000002p0),
11733     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.ffffffp0),
11734     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.000002p0),
11735     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.ffffffp0),
11736 # endif
11737 # if LDBL_MANT_DIG >= 113
11738     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.000002p0),
11739     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffp0),
11740     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.000002p0),
11741     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffp0),
11742 # endif
11743 #endif
11744 #ifdef TEST_DOUBLE
11745     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.0000000000001p0),
11746     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.0000000000001p0),
11747     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.0000000000001p0),
11748     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.fffffffffffff8p0),
11749     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.fffffffffffff8p0),
11750     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0),
11751     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.0000000000001p0),
11752     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.0000000000001p0),
11753     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.0000000000001p0),
11754     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.fffffffffffff8p0),
11755     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.fffffffffffff8p0),
11756     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0),
11757     TEST_ff_f (nexttoward, -1.0, -0x8.00346dc5d6388p-3L, -0x1.0000000000001p0),
11758     TEST_ff_f (nexttoward, 0x1p-1074, 0x1p-1073L, 0x1p-1073, UNDERFLOW_EXCEPTION),
11759 # if LDBL_MANT_DIG >= 64
11760     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.0000000000001p0),
11761     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffff8p0),
11762     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.0000000000001p0),
11763     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffff8p0),
11764 # endif
11765 # if LDBL_MANT_DIG >= 106
11766     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.0000000000001p0),
11767     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.fffffffffffff8p0),
11768     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.0000000000001p0),
11769     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.fffffffffffff8p0),
11770 # endif
11771 # if LDBL_MANT_DIG >= 113
11772     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.0000000000001p0),
11773     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.fffffffffffff8p0),
11774     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.0000000000001p0),
11775     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.fffffffffffff8p0),
11776 # endif
11777 #endif
11778     END_DATA (nexttoward)
11779   };
11780
11781 static void
11782 nexttoward_test (void)
11783 {
11784   START (nexttoward);
11785   RUN_TEST_LOOP_ff_f (nexttoward, nexttoward_test_data, );
11786   END (nexttoward);
11787 }
11788
11789
11790 static const struct test_ff_f_data pow_test_data[] =
11791   {
11792     START_DATA (pow),
11793     TEST_ff_f (pow, 0, 0, 1),
11794     TEST_ff_f (pow, 0, minus_zero, 1),
11795     TEST_ff_f (pow, minus_zero, 0, 1),
11796     TEST_ff_f (pow, minus_zero, minus_zero, 1),
11797
11798     TEST_ff_f (pow, 10, 0, 1),
11799     TEST_ff_f (pow, 10, minus_zero, 1),
11800     TEST_ff_f (pow, -10, 0, 1),
11801     TEST_ff_f (pow, -10, minus_zero, 1),
11802
11803     TEST_ff_f (pow, qnan_value, 0, 1),
11804     TEST_ff_f (pow, qnan_value, minus_zero, 1),
11805
11806 #ifndef TEST_INLINE
11807     TEST_ff_f (pow, 1.1L, plus_infty, plus_infty),
11808     TEST_ff_f (pow, plus_infty, plus_infty, plus_infty),
11809     TEST_ff_f (pow, -1.1L, plus_infty, plus_infty),
11810     TEST_ff_f (pow, minus_infty, plus_infty, plus_infty),
11811
11812     TEST_ff_f (pow, 0.9L, plus_infty, 0),
11813     TEST_ff_f (pow, 1e-7L, plus_infty, 0),
11814     TEST_ff_f (pow, -0.9L, plus_infty, 0),
11815     TEST_ff_f (pow, -1e-7L, plus_infty, 0),
11816
11817     TEST_ff_f (pow, 1.1L, minus_infty, 0),
11818     TEST_ff_f (pow, plus_infty, minus_infty, 0),
11819     TEST_ff_f (pow, -1.1L, minus_infty, 0),
11820     TEST_ff_f (pow, minus_infty, minus_infty, 0),
11821
11822     TEST_ff_f (pow, 0.9L, minus_infty, plus_infty),
11823     TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty),
11824     TEST_ff_f (pow, -0.9L, minus_infty, plus_infty),
11825     TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty),
11826
11827     TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty),
11828     TEST_ff_f (pow, plus_infty, 1, plus_infty),
11829     TEST_ff_f (pow, plus_infty, 1e7L, plus_infty),
11830     TEST_ff_f (pow, plus_infty, min_subnorm_value, plus_infty),
11831
11832     TEST_ff_f (pow, plus_infty, -1e-7L, 0),
11833     TEST_ff_f (pow, plus_infty, -1, 0),
11834     TEST_ff_f (pow, plus_infty, -1e7L, 0),
11835     TEST_ff_f (pow, plus_infty, -min_subnorm_value, 0),
11836
11837     TEST_ff_f (pow, minus_infty, 1, minus_infty),
11838     TEST_ff_f (pow, minus_infty, 11, minus_infty),
11839     TEST_ff_f (pow, minus_infty, 1001, minus_infty),
11840
11841     TEST_ff_f (pow, minus_infty, 2, plus_infty),
11842     TEST_ff_f (pow, minus_infty, 12, plus_infty),
11843     TEST_ff_f (pow, minus_infty, 1002, plus_infty),
11844     TEST_ff_f (pow, minus_infty, 0.1L, plus_infty),
11845     TEST_ff_f (pow, minus_infty, 1.1L, plus_infty),
11846     TEST_ff_f (pow, minus_infty, 11.1L, plus_infty),
11847     TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty),
11848     TEST_ff_f (pow, minus_infty, min_subnorm_value, plus_infty),
11849
11850     TEST_ff_f (pow, minus_infty, -1, minus_zero),
11851     TEST_ff_f (pow, minus_infty, -11, minus_zero),
11852     TEST_ff_f (pow, minus_infty, -1001, minus_zero),
11853
11854     TEST_ff_f (pow, minus_infty, -2, 0),
11855     TEST_ff_f (pow, minus_infty, -12, 0),
11856     TEST_ff_f (pow, minus_infty, -1002, 0),
11857     TEST_ff_f (pow, minus_infty, -0.1L, 0),
11858     TEST_ff_f (pow, minus_infty, -1.1L, 0),
11859     TEST_ff_f (pow, minus_infty, -11.1L, 0),
11860     TEST_ff_f (pow, minus_infty, -1001.1L, 0),
11861     TEST_ff_f (pow, minus_infty, -min_subnorm_value, 0),
11862 #endif
11863
11864     TEST_ff_f (pow, qnan_value, qnan_value, qnan_value),
11865     TEST_ff_f (pow, 0, qnan_value, qnan_value),
11866     TEST_ff_f (pow, 1, qnan_value, 1),
11867     TEST_ff_f (pow, -1, qnan_value, qnan_value),
11868     TEST_ff_f (pow, qnan_value, 1, qnan_value),
11869     TEST_ff_f (pow, qnan_value, -1, qnan_value),
11870
11871     /* pow (x, qNaN) == qNaN.  */
11872     TEST_ff_f (pow, 3.0, qnan_value, qnan_value),
11873     TEST_ff_f (pow, minus_zero, qnan_value, qnan_value),
11874     TEST_ff_f (pow, plus_infty, qnan_value, qnan_value),
11875     TEST_ff_f (pow, -3.0, qnan_value, qnan_value),
11876     TEST_ff_f (pow, minus_infty, qnan_value, qnan_value),
11877
11878     TEST_ff_f (pow, qnan_value, 3.0, qnan_value),
11879     TEST_ff_f (pow, qnan_value, -3.0, qnan_value),
11880     TEST_ff_f (pow, qnan_value, plus_infty, qnan_value),
11881     TEST_ff_f (pow, qnan_value, minus_infty, qnan_value),
11882     TEST_ff_f (pow, qnan_value, 2.5, qnan_value),
11883     TEST_ff_f (pow, qnan_value, -2.5, qnan_value),
11884     TEST_ff_f (pow, qnan_value, min_subnorm_value, qnan_value),
11885     TEST_ff_f (pow, qnan_value, -min_subnorm_value, qnan_value),
11886
11887     TEST_ff_f (pow, 1, plus_infty, 1),
11888     TEST_ff_f (pow, -1, plus_infty, 1),
11889     TEST_ff_f (pow, 1, minus_infty, 1),
11890     TEST_ff_f (pow, -1, minus_infty, 1),
11891     TEST_ff_f (pow, 1, 1, 1),
11892     TEST_ff_f (pow, 1, -1, 1),
11893     TEST_ff_f (pow, 1, 1.25, 1),
11894     TEST_ff_f (pow, 1, -1.25, 1),
11895     TEST_ff_f (pow, 1, 0x1p62L, 1),
11896     TEST_ff_f (pow, 1, 0x1p63L, 1),
11897     TEST_ff_f (pow, 1, 0x1p64L, 1),
11898     TEST_ff_f (pow, 1, 0x1p72L, 1),
11899     TEST_ff_f (pow, 1, min_subnorm_value, 1),
11900     TEST_ff_f (pow, 1, -min_subnorm_value, 1),
11901
11902     /* pow (x, +-0) == 1.  */
11903     TEST_ff_f (pow, plus_infty, 0, 1),
11904     TEST_ff_f (pow, plus_infty, minus_zero, 1),
11905     TEST_ff_f (pow, minus_infty, 0, 1),
11906     TEST_ff_f (pow, minus_infty, minus_zero, 1),
11907     TEST_ff_f (pow, 32.75L, 0, 1),
11908     TEST_ff_f (pow, 32.75L, minus_zero, 1),
11909     TEST_ff_f (pow, -32.75L, 0, 1),
11910     TEST_ff_f (pow, -32.75L, minus_zero, 1),
11911     TEST_ff_f (pow, 0x1p72L, 0, 1),
11912     TEST_ff_f (pow, 0x1p72L, minus_zero, 1),
11913     TEST_ff_f (pow, 0x1p-72L, 0, 1),
11914     TEST_ff_f (pow, 0x1p-72L, minus_zero, 1),
11915
11916     TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11917     TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11918     TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11919     TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11920     TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11921     TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11922     TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11923     TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11924
11925     TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11926     TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11927     TEST_ff_f (pow, 0, -0xffffff, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11928 #ifndef TEST_FLOAT
11929     TEST_ff_f (pow, 0, -0x1.fffffffffffffp+52L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11930 #endif
11931 #ifdef TEST_LDOUBLE
11932 # if LDBL_MANT_DIG >= 64
11933     TEST_ff_f (pow, 0, -0x1.fffffffffffffffep+63L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11934 # endif
11935 # if LDBL_MANT_DIG >= 106
11936     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffff8p+105L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11937 # endif
11938 # if LDBL_MANT_DIG >= 113
11939     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffffffp+112L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11940 # endif
11941 #endif
11942     TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11943     TEST_ff_f (pow, minus_zero, -11L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11944     TEST_ff_f (pow, minus_zero, -0xffffff, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11945     TEST_ff_f (pow, minus_zero, -0x1fffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11946 #ifndef TEST_FLOAT
11947     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+52L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11948     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+53L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11949 #endif
11950 #ifdef TEST_LDOUBLE
11951 # if LDBL_MANT_DIG >= 64
11952     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+63L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11953     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+64L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11954 # endif
11955 # if LDBL_MANT_DIG >= 106
11956     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11957     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11958 # endif
11959 # if LDBL_MANT_DIG >= 113
11960     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11961     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11962 # endif
11963 #endif
11964
11965     TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11966     TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11967     TEST_ff_f (pow, 0, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11968     TEST_ff_f (pow, 0, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11969     TEST_ff_f (pow, 0, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11970     TEST_ff_f (pow, 0, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11971     TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11972     TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11973     TEST_ff_f (pow, minus_zero, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11974     TEST_ff_f (pow, minus_zero, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11975     TEST_ff_f (pow, minus_zero, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11976     TEST_ff_f (pow, minus_zero, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11977
11978     TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty, OVERFLOW_EXCEPTION),
11979     TEST_ff_f (pow, 10, -0x1p72L, 0, UNDERFLOW_EXCEPTION),
11980     TEST_ff_f (pow, max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
11981     TEST_ff_f (pow, 10, -max_value, 0, UNDERFLOW_EXCEPTION),
11982
11983     TEST_ff_f (pow, 0, 1, 0),
11984     TEST_ff_f (pow, 0, 11, 0),
11985
11986     TEST_ff_f (pow, minus_zero, 1, minus_zero),
11987     TEST_ff_f (pow, minus_zero, 11, minus_zero),
11988
11989     TEST_ff_f (pow, 0, 2, 0),
11990     TEST_ff_f (pow, 0, 11.1L, 0),
11991
11992     TEST_ff_f (pow, minus_zero, 2, 0),
11993     TEST_ff_f (pow, minus_zero, 11.1L, 0),
11994     TEST_ff_f (pow, 0, plus_infty, 0),
11995     TEST_ff_f (pow, minus_zero, plus_infty, 0),
11996     TEST_ff_f (pow, 0, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11997     TEST_ff_f (pow, minus_zero, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11998
11999 #ifndef TEST_INLINE
12000     /* pow (x, +inf) == +inf for |x| > 1.  */
12001     TEST_ff_f (pow, 1.5, plus_infty, plus_infty),
12002
12003     /* pow (x, +inf) == +0 for |x| < 1.  */
12004     TEST_ff_f (pow, 0.5, plus_infty, 0.0),
12005
12006     /* pow (x, -inf) == +0 for |x| > 1.  */
12007     TEST_ff_f (pow, 1.5, minus_infty, 0.0),
12008
12009     /* pow (x, -inf) == +inf for |x| < 1.  */
12010     TEST_ff_f (pow, 0.5, minus_infty, plus_infty),
12011 #endif
12012
12013     /* pow (+inf, y) == +inf for y > 0.  */
12014     TEST_ff_f (pow, plus_infty, 2, plus_infty),
12015     TEST_ff_f (pow, plus_infty, 0xffffff, plus_infty),
12016 #ifndef TEST_FLOAT
12017     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffp+52L, plus_infty),
12018 #endif
12019 #ifdef TEST_LDOUBLE
12020 # if LDBL_MANT_DIG >= 64
12021     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffffep+63L, plus_infty),
12022 # endif
12023 # if LDBL_MANT_DIG >= 106
12024     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, plus_infty),
12025 # endif
12026 # if LDBL_MANT_DIG >= 113
12027     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, plus_infty),
12028 # endif
12029 #endif
12030     TEST_ff_f (pow, plus_infty, 0x1p24, plus_infty),
12031     TEST_ff_f (pow, plus_infty, 0x1p127, plus_infty),
12032     TEST_ff_f (pow, plus_infty, max_value, plus_infty),
12033
12034     /* pow (+inf, y) == +0 for y < 0.  */
12035     TEST_ff_f (pow, plus_infty, -1, 0.0),
12036     TEST_ff_f (pow, plus_infty, -0xffffff, 0.0),
12037 #ifndef TEST_FLOAT
12038     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffp+52L, 0.0),
12039 #endif
12040 #ifdef TEST_LDOUBLE
12041 # if LDBL_MANT_DIG >= 64
12042     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffffep+63L, 0.0),
12043 # endif
12044 # if LDBL_MANT_DIG >= 106
12045     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
12046 # endif
12047 # if LDBL_MANT_DIG >= 113
12048     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
12049 # endif
12050 #endif
12051     TEST_ff_f (pow, plus_infty, -0x1p24, 0.0),
12052     TEST_ff_f (pow, plus_infty, -0x1p127, 0.0),
12053     TEST_ff_f (pow, plus_infty, -max_value, 0.0),
12054
12055     /* pow (-inf, y) == -inf for y an odd integer > 0.  */
12056     TEST_ff_f (pow, minus_infty, 27, minus_infty),
12057     TEST_ff_f (pow, minus_infty, 0xffffff, minus_infty),
12058     TEST_ff_f (pow, minus_infty, 0x1fffffe, plus_infty),
12059 #ifndef TEST_FLOAT
12060     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+52L, minus_infty),
12061     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+53L, plus_infty),
12062 #endif
12063 #ifdef TEST_LDOUBLE
12064 # if LDBL_MANT_DIG >= 64
12065     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+63L, minus_infty),
12066     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+64L, plus_infty),
12067 # endif
12068 # if LDBL_MANT_DIG >= 106
12069     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty),
12070     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty),
12071 # endif
12072 # if LDBL_MANT_DIG >= 113
12073     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty),
12074     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty),
12075 # endif
12076 #endif
12077
12078     /* pow (-inf, y) == +inf for y > 0 and not an odd integer.  */
12079     TEST_ff_f (pow, minus_infty, 28, plus_infty),
12080     TEST_ff_f (pow, minus_infty, 0x1p24, plus_infty),
12081     TEST_ff_f (pow, minus_infty, 0x1p127, plus_infty),
12082     TEST_ff_f (pow, minus_infty, max_value, plus_infty),
12083
12084     /* pow (-inf, y) == -0 for y an odd integer < 0. */
12085     TEST_ff_f (pow, minus_infty, -3, minus_zero),
12086     TEST_ff_f (pow, minus_infty, -0xffffff, minus_zero),
12087     TEST_ff_f (pow, minus_infty, -0x1fffffe, plus_zero),
12088 #ifndef TEST_FLOAT
12089     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+52L, minus_zero),
12090     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+53L, plus_zero),
12091 #endif
12092 #ifdef TEST_LDOUBLE
12093 # if LDBL_MANT_DIG >= 64
12094     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+63L, minus_zero),
12095     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+64L, plus_zero),
12096 # endif
12097 # if LDBL_MANT_DIG >= 106
12098     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
12099     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
12100 # endif
12101 # if LDBL_MANT_DIG >= 113
12102     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
12103     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
12104 # endif
12105 #endif
12106     /* pow (-inf, y) == +0 for y < 0 and not an odd integer.  */
12107     TEST_ff_f (pow, minus_infty, -2.0, 0.0),
12108     TEST_ff_f (pow, minus_infty, -0x1p24, 0.0),
12109     TEST_ff_f (pow, minus_infty, -0x1p127, 0.0),
12110     TEST_ff_f (pow, minus_infty, -max_value, 0.0),
12111
12112     /* pow (+0, y) == +0 for y an odd integer > 0.  */
12113     TEST_ff_f (pow, 0.0, 27, 0.0),
12114     TEST_ff_f (pow, 0.0, 0xffffff, 0.0),
12115 #ifndef TEST_FLOAT
12116     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffp+52L, 0.0),
12117 #endif
12118 #ifdef TEST_LDOUBLE
12119 # if LDBL_MANT_DIG >= 64
12120     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffffep+63L, 0.0),
12121 # endif
12122 # if LDBL_MANT_DIG >= 106
12123     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
12124 # endif
12125 # if LDBL_MANT_DIG >= 113
12126     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
12127 # endif
12128 #endif
12129
12130     /* pow (-0, y) == -0 for y an odd integer > 0.  */
12131     TEST_ff_f (pow, minus_zero, 27, minus_zero),
12132     TEST_ff_f (pow, minus_zero, 0xffffff, minus_zero),
12133     TEST_ff_f (pow, minus_zero, 0x1fffffe, plus_zero),
12134 #ifndef TEST_FLOAT
12135     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+52L, minus_zero),
12136     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+53L, plus_zero),
12137 #endif
12138 #ifdef TEST_LDOUBLE
12139 # if LDBL_MANT_DIG >= 64
12140     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+63L, minus_zero),
12141     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+64L, plus_zero),
12142 # endif
12143 # if LDBL_MANT_DIG >= 106
12144     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
12145     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
12146 # endif
12147 # if LDBL_MANT_DIG >= 113
12148     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
12149     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
12150 # endif
12151 #endif
12152
12153     /* pow (+0, y) == +0 for y > 0 and not an odd integer.  */
12154     TEST_ff_f (pow, 0.0, 4, 0.0),
12155     TEST_ff_f (pow, 0.0, 0x1p24, 0.0),
12156     TEST_ff_f (pow, 0.0, 0x1p127, 0.0),
12157     TEST_ff_f (pow, 0.0, max_value, 0.0),
12158     TEST_ff_f (pow, 0.0, min_subnorm_value, 0.0),
12159
12160     /* pow (-0, y) == +0 for y > 0 and not an odd integer.  */
12161     TEST_ff_f (pow, minus_zero, 4, 0.0),
12162     TEST_ff_f (pow, minus_zero, 0x1p24, 0.0),
12163     TEST_ff_f (pow, minus_zero, 0x1p127, 0.0),
12164     TEST_ff_f (pow, minus_zero, max_value, 0.0),
12165     TEST_ff_f (pow, minus_zero, min_subnorm_value, 0.0),
12166
12167     TEST_ff_f (pow, 16, 0.25L, 2),
12168     TEST_ff_f (pow, 0x1p64L, 0.125L, 256),
12169     TEST_ff_f (pow, 2, 4, 16),
12170     TEST_ff_f (pow, 256, 8, 0x1p64L),
12171
12172     TEST_ff_f (pow, 0.75L, 1.25L, 0.697953644326574699205914060237425566L),
12173
12174 #if defined TEST_DOUBLE || defined TEST_LDOUBLE
12175     TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0, UNDERFLOW_EXCEPTION),
12176 #endif
12177
12178     TEST_ff_f (pow, -1.0, -0xffffff, -1.0),
12179     TEST_ff_f (pow, -1.0, -0x1fffffe, 1.0),
12180 #ifndef TEST_FLOAT
12181     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+52L, -1.0),
12182     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+53L, 1.0),
12183 #endif
12184 #ifdef TEST_LDOUBLE
12185 # if LDBL_MANT_DIG >= 64
12186     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+63L, -1.0),
12187     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+64L, 1.0),
12188 # endif
12189 # if LDBL_MANT_DIG >= 106
12190     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
12191     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
12192 # endif
12193 # if LDBL_MANT_DIG >= 113
12194     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
12195     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
12196 # endif
12197 #endif
12198     TEST_ff_f (pow, -1.0, -max_value, 1.0),
12199
12200     TEST_ff_f (pow, -1.0, 0xffffff, -1.0),
12201     TEST_ff_f (pow, -1.0, 0x1fffffe, 1.0),
12202 #ifndef TEST_FLOAT
12203     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+52L, -1.0),
12204     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+53L, 1.0),
12205 #endif
12206 #ifdef TEST_LDOUBLE
12207 # if LDBL_MANT_DIG >= 64
12208     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+63L, -1.0),
12209     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+64L, 1.0),
12210 # endif
12211 # if LDBL_MANT_DIG >= 106
12212     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
12213     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
12214 # endif
12215 # if LDBL_MANT_DIG >= 113
12216     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
12217     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
12218 # endif
12219 #endif
12220     TEST_ff_f (pow, -1.0, max_value, 1.0),
12221
12222     TEST_ff_f (pow, -2.0, 126, 0x1p126),
12223     TEST_ff_f (pow, -2.0, 127, -0x1p127),
12224     /* Allow inexact results for float to be considered to underflow.  */
12225     TEST_ff_f (pow, -2.0, -126, 0x1p-126, UNDERFLOW_EXCEPTION_OK_FLOAT),
12226     TEST_ff_f (pow, -2.0, -127, -0x1p-127, UNDERFLOW_EXCEPTION_OK_FLOAT),
12227
12228     TEST_ff_f (pow, -2.0, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12229     TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12230 #ifndef TEST_FLOAT
12231     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12232     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12233 #endif
12234 #ifdef TEST_LDOUBLE
12235 # if LDBL_MANT_DIG >= 64
12236     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12237     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12238 # endif
12239 # if LDBL_MANT_DIG >= 106
12240     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12241     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12242 # endif
12243 # if LDBL_MANT_DIG >= 113
12244     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12245     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12246 # endif
12247 #endif
12248     TEST_ff_f (pow, -2.0, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12249
12250     TEST_ff_f (pow, -2.0, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12251     TEST_ff_f (pow, -2.0, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12252 #ifndef TEST_FLOAT
12253     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12254     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12255 #endif
12256 #ifdef TEST_LDOUBLE
12257 # if LDBL_MANT_DIG >= 64
12258     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12259     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12260 # endif
12261 # if LDBL_MANT_DIG >= 106
12262     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12263     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12264 # endif
12265 # if LDBL_MANT_DIG >= 113
12266     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12267     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12268 # endif
12269 #endif
12270     TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION),
12271
12272     TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION),
12273     TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION),
12274     TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12275     TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION),
12276     TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION),
12277     TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION),
12278     TEST_ff_f (pow, -max_value, 3, minus_infty, OVERFLOW_EXCEPTION),
12279
12280     TEST_ff_f (pow, -max_value, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12281     TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12282 #ifndef TEST_FLOAT
12283     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12284     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12285 #endif
12286 #ifdef TEST_LDOUBLE
12287 # if LDBL_MANT_DIG >= 64
12288     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12289     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12290 # endif
12291 # if LDBL_MANT_DIG >= 106
12292     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12293     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12294 # endif
12295 # if LDBL_MANT_DIG >= 113
12296     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12297     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12298 # endif
12299 #endif
12300     TEST_ff_f (pow, -max_value, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12301
12302     TEST_ff_f (pow, -max_value, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12303     TEST_ff_f (pow, -max_value, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12304 #ifndef TEST_FLOAT
12305     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12306     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12307 #endif
12308 #ifdef TEST_LDOUBLE
12309 # if LDBL_MANT_DIG >= 64
12310     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12311     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12312 # endif
12313 # if LDBL_MANT_DIG >= 106
12314     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12315     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12316 # endif
12317 # if LDBL_MANT_DIG >= 113
12318     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12319     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12320 # endif
12321 #endif
12322     TEST_ff_f (pow, -max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
12323
12324     TEST_ff_f (pow, -0.5, 126, 0x1p-126),
12325     TEST_ff_f (pow, -0.5, 127, -0x1p-127),
12326     TEST_ff_f (pow, -0.5, -126, 0x1p126),
12327     TEST_ff_f (pow, -0.5, -127, -0x1p127),
12328
12329     TEST_ff_f (pow, -0.5, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12330     TEST_ff_f (pow, -0.5, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12331 #ifndef TEST_FLOAT
12332     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12333     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12334 #endif
12335 #ifdef TEST_LDOUBLE
12336 # if LDBL_MANT_DIG >= 64
12337     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12338     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12339 # endif
12340 # if LDBL_MANT_DIG >= 106
12341     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12342     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12343 # endif
12344 # if LDBL_MANT_DIG >= 113
12345     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12346     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12347 # endif
12348 #endif
12349     TEST_ff_f (pow, -0.5, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12350
12351     TEST_ff_f (pow, -0.5, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12352     TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12353 #ifndef TEST_FLOAT
12354     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12355     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12356 #endif
12357 #ifdef TEST_LDOUBLE
12358 # if LDBL_MANT_DIG >= 64
12359     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12360     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12361 # endif
12362 # if LDBL_MANT_DIG >= 106
12363     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12364     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12365 # endif
12366 # if LDBL_MANT_DIG >= 113
12367     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12368     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12369 # endif
12370 #endif
12371     TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12372
12373     TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION),
12374     TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION),
12375     TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12376     TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION),
12377     TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION),
12378     /* Allow inexact results to be considered to underflow.  */
12379     TEST_ff_f (pow, -min_value, 1, -min_value, UNDERFLOW_EXCEPTION_OK),
12380     TEST_ff_f (pow, -min_value, 2, plus_zero, UNDERFLOW_EXCEPTION),
12381     TEST_ff_f (pow, -min_value, 3, minus_zero, UNDERFLOW_EXCEPTION),
12382
12383     TEST_ff_f (pow, -min_value, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12384     TEST_ff_f (pow, -min_value, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12385 #ifndef TEST_FLOAT
12386     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12387     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12388 #endif
12389 #ifdef TEST_LDOUBLE
12390 # if LDBL_MANT_DIG >= 64
12391     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12392     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12393 # endif
12394 # if LDBL_MANT_DIG >= 106
12395     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12396     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12397 # endif
12398 # if LDBL_MANT_DIG >= 113
12399     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12400     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12401 # endif
12402 #endif
12403     TEST_ff_f (pow, -min_value, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12404
12405     TEST_ff_f (pow, -min_value, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12406     TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12407 #ifndef TEST_FLOAT
12408     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12409     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12410 #endif
12411 #ifdef TEST_LDOUBLE
12412 # if LDBL_MANT_DIG >= 64
12413     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12414     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12415 # endif
12416 # if LDBL_MANT_DIG >= 106
12417     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12418     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12419 # endif
12420 # if LDBL_MANT_DIG >= 113
12421     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12422     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12423 # endif
12424 #endif
12425     TEST_ff_f (pow, -min_value, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12426
12427     TEST_ff_f (pow, 0x0.ffffffp0, 10, 0.999999403953712118183885036774764444747L),
12428     TEST_ff_f (pow, 0x0.ffffffp0, 100, 0.999994039553108359406305079606228341585L),
12429     TEST_ff_f (pow, 0x0.ffffffp0, 1000, 0.9999403971297699052276650144650733772182L),
12430     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p24, 0.3678794302077803437135155590023422899744L),
12431     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p30, 1.603807831524924233828134753069728224044e-28L),
12432     TEST_ff_f (pow, 0x0.ffffffp0, 0x1.234566p30, 2.374884712135295099971443365381007297732e-32L),
12433     TEST_ff_f (pow, 0x0.ffffffp0, -10, 1.000000596046643153205170848674671339688L),
12434     TEST_ff_f (pow, 0x0.ffffffp0, -100, 1.000005960482418779499387594989252621451L),
12435     TEST_ff_f (pow, 0x0.ffffffp0, -1000, 1.000059606422943986382898964231519867906L),
12436     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p24, 2.7182819094701610539628664526874952929416L),
12437     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p30, 6.2351609734265057988914412331288163636075e+27L),
12438     TEST_ff_f (pow, 0x0.ffffffp0, -0x1.234566p30, 4.2107307141696353498921307077142537353515e+31L),
12439     TEST_ff_f (pow, 0x1.000002p0, 0x1p24, 7.3890552180866447284268641248075832310141L),
12440     TEST_ff_f (pow, 0x1.000002p0, 0x1.234566p29, 4.2107033006507495188536371520637025716256e+31L),
12441     TEST_ff_f (pow, 0x1.000002p0, -0x1.234566p29, 2.3749001736727769098946062325205705312166e-32L),
12442
12443 #if !defined TEST_FLOAT
12444     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, 0x1.23456789abcdfp62L, 1.0118762747827252817436395051178295138220e-253L),
12445     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, -0x1.23456789abcdfp62L, 9.8826311568054561811190162420900667121992e+252L),
12446     TEST_ff_f (pow, 0x1.0000000000001p0L, 0x1.23456789abcdfp61L, 9.8826311568044974397135026217687399395481e+252L),
12447     TEST_ff_f (pow, 0x1.0000000000001p0L, -0x1.23456789abcdfp61L, 1.0118762747828234466621210689458255908670e-253L),
12448 #endif
12449
12450 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 && LDBL_MAX_EXP >= 16384
12451     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, 0x1.23456789abcdef0ep77L, 1.2079212226420368189981778807634890018840e-4048L),
12452     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, -0x1.23456789abcdef0ep77L, 8.2786855736563746280496724205839522148001e+4047L),
12453     TEST_ff_f (pow, 0x1.0000000000000002p0L, 0x1.23456789abcdef0ep76L, 8.2786855736563683535324500168799315131570e+4047L),
12454     TEST_ff_f (pow, 0x1.0000000000000002p0L, -0x1.23456789abcdef0ep76L, 1.2079212226420377344964713407722652880280e-4048L),
12455 #endif
12456
12457 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
12458     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.23456789abcdef0123456789abcdp126L, 1.2079212226420440237790185999151440179953e-4048L),
12459     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.23456789abcdef0123456789abcdp126L, 8.2786855736563252489063231915535105363602e+4047L),
12460     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, 0x1.23456789abcdef0123456789abcdp125L, 8.2786855736563252489063231915423647547782e+4047L),
12461     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, -0x1.23456789abcdef0123456789abcdp125L, 1.2079212226420440237790185999167702696503e-4048L),
12462 #endif
12463
12464 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
12465     TEST_ff_f (pow, 1e4932L, 0.75L, 1e3699L),
12466     TEST_ff_f (pow, 1e4928L, 0.75L, 1e3696L),
12467     TEST_ff_f (pow, 1e4924L, 0.75L, 1e3693L),
12468     TEST_ff_f (pow, 1e4920L, 0.75L, 1e3690L),
12469     TEST_ff_f (pow, 10.0L, 4932.0L, 1e4932L),
12470     TEST_ff_f (pow, 10.0L, 4931.0L, 1e4931L),
12471     TEST_ff_f (pow, 10.0L, 4930.0L, 1e4930L),
12472     TEST_ff_f (pow, 10.0L, 4929.0L, 1e4929L),
12473     TEST_ff_f (pow, 10.0L, -4931.0L, 1e-4931L),
12474     TEST_ff_f (pow, 10.0L, -4930.0L, 1e-4930L),
12475     TEST_ff_f (pow, 10.0L, -4929.0L, 1e-4929L),
12476     TEST_ff_f (pow, 1e27L, 182.0L, 1e4914L),
12477     TEST_ff_f (pow, 1e27L, -182.0L, 1e-4914L),
12478 #endif
12479
12480     TEST_ff_f (pow, min_subnorm_value, min_subnorm_value, 1.0L),
12481     TEST_ff_f (pow, min_subnorm_value, -min_subnorm_value, 1.0L),
12482     TEST_ff_f (pow, max_value, min_subnorm_value, 1.0L),
12483     TEST_ff_f (pow, max_value, -min_subnorm_value, 1.0L),
12484     TEST_ff_f (pow, 0.99L, min_subnorm_value, 1.0L),
12485     TEST_ff_f (pow, 0.99L, -min_subnorm_value, 1.0L),
12486     TEST_ff_f (pow, 1.01L, min_subnorm_value, 1.0L),
12487     TEST_ff_f (pow, 1.01L, -min_subnorm_value, 1.0L),
12488
12489     TEST_ff_f (pow, 2.0L, -100000.0L, plus_zero, UNDERFLOW_EXCEPTION),
12490     END_DATA (pow)
12491   };
12492
12493 static void
12494 pow_test (void)
12495 {
12496
12497   errno = 0;
12498   FUNC(pow) (0, 0);
12499   if (errno == ENOSYS)
12500     /* Function not implemented.  */
12501     return;
12502
12503   START (pow);
12504   RUN_TEST_LOOP_ff_f (pow, pow_test_data, );
12505   END (pow);
12506 }
12507
12508
12509 static const struct test_ff_f_data pow_tonearest_test_data[] =
12510   {
12511     START_DATA (pow_tonearest),
12512     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12513     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12514     END_DATA (pow_tonearest)
12515   };
12516
12517 static void
12518 pow_test_tonearest (void)
12519 {
12520   errno = 0;
12521   FUNC(pow) (0, 0);
12522   if (errno == ENOSYS)
12523     /* Function not implemented.  */
12524     return;
12525
12526   START (pow_tonearest);
12527   RUN_TEST_LOOP_ff_f (pow, pow_tonearest_test_data, FE_TONEAREST);
12528   END (pow_tonearest);
12529 }
12530
12531
12532 static const struct test_ff_f_data pow_towardzero_test_data[] =
12533   {
12534     START_DATA (pow_towardzero),
12535     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12536     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12537     END_DATA (pow_towardzero)
12538   };
12539
12540 static void
12541 pow_test_towardzero (void)
12542 {
12543   errno = 0;
12544   FUNC(pow) (0, 0);
12545   if (errno == ENOSYS)
12546     /* Function not implemented.  */
12547     return;
12548
12549   START (pow_towardzero);
12550   RUN_TEST_LOOP_ff_f (pow, pow_towardzero_test_data, FE_TOWARDZERO);
12551   END (pow_towardzero);
12552 }
12553
12554
12555 static const struct test_ff_f_data pow_downward_test_data[] =
12556   {
12557     START_DATA (pow_downward),
12558     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12559     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12560     END_DATA (pow_downward)
12561   };
12562
12563 static void
12564 pow_test_downward (void)
12565 {
12566   errno = 0;
12567   FUNC(pow) (0, 0);
12568   if (errno == ENOSYS)
12569     /* Function not implemented.  */
12570     return;
12571
12572   START (pow_downward);
12573   RUN_TEST_LOOP_ff_f (pow, pow_downward_test_data, FE_DOWNWARD);
12574   END (pow_downward);
12575 }
12576
12577
12578 static const struct test_ff_f_data pow_upward_test_data[] =
12579   {
12580     START_DATA (pow_upward),
12581     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12582     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12583     END_DATA (pow_upward)
12584   };
12585
12586 static void
12587 pow_test_upward (void)
12588 {
12589   errno = 0;
12590   FUNC(pow) (0, 0);
12591   if (errno == ENOSYS)
12592     /* Function not implemented.  */
12593     return;
12594
12595   START (pow_upward);
12596   RUN_TEST_LOOP_ff_f (pow, pow_upward_test_data, FE_UPWARD);
12597   END (pow_upward);
12598 }
12599
12600
12601 static const struct test_ff_f_data remainder_test_data[] =
12602   {
12603     START_DATA (remainder),
12604     TEST_ff_f (remainder, 1, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12605     TEST_ff_f (remainder, 1, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12606     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12607     TEST_ff_f (remainder, plus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12608     TEST_ff_f (remainder, plus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12609     TEST_ff_f (remainder, plus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12610     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12611     TEST_ff_f (remainder, minus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12612     TEST_ff_f (remainder, minus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12613     TEST_ff_f (remainder, minus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12614     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, ERRNO_UNCHANGED),
12615     TEST_ff_f (remainder, 0, qnan_value, qnan_value, ERRNO_UNCHANGED),
12616     TEST_ff_f (remainder, qnan_value, 0, qnan_value, ERRNO_UNCHANGED),
12617
12618     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, ERRNO_UNCHANGED),
12619     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, ERRNO_UNCHANGED),
12620
12621     TEST_ff_f (remainder, 1.625, 1.0, -0.375),
12622     TEST_ff_f (remainder, -1.625, 1.0, 0.375),
12623     TEST_ff_f (remainder, 1.625, -1.0, -0.375),
12624     TEST_ff_f (remainder, -1.625, -1.0, 0.375),
12625     TEST_ff_f (remainder, 5.0, 2.0, 1.0),
12626     TEST_ff_f (remainder, 3.0, 2.0, -1.0),
12627     END_DATA (remainder)
12628   };
12629
12630 static void
12631 remainder_test (void)
12632 {
12633   errno = 0;
12634   FUNC(remainder) (1.625, 1.0);
12635   if (errno == ENOSYS)
12636     /* Function not implemented.  */
12637     return;
12638
12639   START (remainder);
12640   RUN_TEST_LOOP_ff_f (remainder, remainder_test_data, );
12641   END (remainder);
12642 }
12643
12644 static const struct test_ffI_f1_data remquo_test_data[] =
12645   {
12646     START_DATA (remquo),
12647     TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, INVALID_EXCEPTION),
12648     TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, INVALID_EXCEPTION),
12649     TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION),
12650     TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION),
12651     TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE),
12652
12653     TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2),
12654     TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2),
12655     TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2),
12656     TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2),
12657
12658     TEST_ffI_f1 (remquo, 5, 2, 1, 2),
12659     TEST_ffI_f1 (remquo, 3, 2, -1, 2),
12660     END_DATA (remquo)
12661   };
12662
12663 static void
12664 remquo_test (void)
12665 {
12666   /* x is needed.  */
12667   int x;
12668
12669   errno = 0;
12670   FUNC(remquo) (1.625, 1.0, &x);
12671   if (errno == ENOSYS)
12672     /* Function not implemented.  */
12673     return;
12674
12675   START (remquo);
12676   RUN_TEST_LOOP_ffI_f1 (remquo, remquo_test_data, , x);
12677   END (remquo);
12678 }
12679
12680 static const struct test_f_f_data rint_test_data[] =
12681   {
12682     START_DATA (rint),
12683     /* TODO: missing qNaN tests.  */
12684
12685     TEST_f_f (rint, 0.0, 0.0),
12686     TEST_f_f (rint, minus_zero, minus_zero),
12687     TEST_f_f (rint, plus_infty, plus_infty),
12688     TEST_f_f (rint, minus_infty, minus_infty),
12689
12690     /* Default rounding mode is round to even.  */
12691     TEST_f_f (rint, 0.5, 0.0),
12692     TEST_f_f (rint, 1.5, 2.0),
12693     TEST_f_f (rint, 2.5, 2.0),
12694     TEST_f_f (rint, 3.5, 4.0),
12695     TEST_f_f (rint, 4.5, 4.0),
12696     TEST_f_f (rint, -0.5, -0.0),
12697     TEST_f_f (rint, -1.5, -2.0),
12698     TEST_f_f (rint, -2.5, -2.0),
12699     TEST_f_f (rint, -3.5, -4.0),
12700     TEST_f_f (rint, -4.5, -4.0),
12701     TEST_f_f (rint, 0.1, 0.0),
12702     TEST_f_f (rint, 0.25, 0.0),
12703     TEST_f_f (rint, 0.625, 1.0),
12704     TEST_f_f (rint, -0.1, -0.0),
12705     TEST_f_f (rint, -0.25, -0.0),
12706     TEST_f_f (rint, -0.625, -1.0),
12707     TEST_f_f (rint, 262144.75, 262145.0),
12708     TEST_f_f (rint, 262142.75, 262143.0),
12709     TEST_f_f (rint, 524286.75, 524287.0),
12710     TEST_f_f (rint, 524288.75, 524289.0),
12711     TEST_f_f (rint, 1048576.75, 1048577.0),
12712     TEST_f_f (rint, 2097152.75, 2097153.0),
12713     TEST_f_f (rint, -1048576.75, -1048577.0),
12714     TEST_f_f (rint, -2097152.75, -2097153.0),
12715 #ifndef TEST_FLOAT
12716     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12717     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12718     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12719     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12720     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12721     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12722     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12723     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12724     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12725     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12726 #endif
12727 #ifdef TEST_LDOUBLE
12728     /* The result can only be represented in long double.  */
12729     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12730     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12731     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12732     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12733     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12734
12735 # if LDBL_MANT_DIG > 100
12736     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12737     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12738     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12739 # endif
12740
12741     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12742     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12743     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12744     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12745     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12746
12747 # if LDBL_MANT_DIG > 100
12748     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12749     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12750     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12751
12752     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12753     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12754     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12755     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12756     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12757     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12758
12759     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12760     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12761     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12762     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12763     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12764     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12765 # endif
12766
12767     TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L),
12768     TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L),
12769     TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L),
12770     TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L),
12771     TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L),
12772
12773     TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L),
12774     TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L),
12775     TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L),
12776     TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L),
12777     TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L),
12778
12779     TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L),
12780     TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L),
12781     TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L),
12782     TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L),
12783     TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L),
12784
12785     TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L),
12786     TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L),
12787     TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L),
12788     TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L),
12789     TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L),
12790
12791     TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
12792     TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
12793     TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
12794     TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
12795     TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
12796 #endif
12797     END_DATA (rint)
12798   };
12799
12800 static void
12801 rint_test (void)
12802 {
12803   START (rint);
12804   RUN_TEST_LOOP_f_f (rint, rint_test_data, );
12805   END (rint);
12806 }
12807
12808 static const struct test_f_f_data rint_tonearest_test_data[] =
12809   {
12810     START_DATA (rint_tonearest),
12811     TEST_f_f (rint, 2.0, 2.0),
12812     TEST_f_f (rint, 1.5, 2.0),
12813     TEST_f_f (rint, 1.0, 1.0),
12814     TEST_f_f (rint, 0.5, 0.0),
12815     TEST_f_f (rint, 0.0, 0.0),
12816     TEST_f_f (rint, minus_zero, minus_zero),
12817     TEST_f_f (rint, -0.5, -0.0),
12818     TEST_f_f (rint, -1.0, -1.0),
12819     TEST_f_f (rint, -1.5, -2.0),
12820     TEST_f_f (rint, -2.0, -2.0),
12821     TEST_f_f (rint, 0.1, 0.0),
12822     TEST_f_f (rint, 0.25, 0.0),
12823     TEST_f_f (rint, 0.625, 1.0),
12824     TEST_f_f (rint, -0.1, -0.0),
12825     TEST_f_f (rint, -0.25, -0.0),
12826     TEST_f_f (rint, -0.625, -1.0),
12827     TEST_f_f (rint, 1048576.75, 1048577.0),
12828     TEST_f_f (rint, 2097152.75, 2097153.0),
12829     TEST_f_f (rint, -1048576.75, -1048577.0),
12830     TEST_f_f (rint, -2097152.75, -2097153.0),
12831 #ifndef TEST_FLOAT
12832     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12833     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12834     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12835     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12836     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12837     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12838     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12839     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12840     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12841     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12842 #endif
12843 #ifdef TEST_LDOUBLE
12844     /* The result can only be represented in long double.  */
12845     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12846     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12847     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12848     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12849     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12850 # if LDBL_MANT_DIG > 100
12851     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12852     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12853     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12854 # endif
12855     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12856     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12857     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12858     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12859     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12860 # if LDBL_MANT_DIG > 100
12861     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12862     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12863     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12864
12865     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12866     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12867     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12868     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12869     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12870     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12871
12872     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12873     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12874     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12875     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12876     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12877     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12878 # endif
12879 #endif
12880     END_DATA (rint_tonearest)
12881   };
12882
12883 static void
12884 rint_test_tonearest (void)
12885 {
12886   START (rint_tonearest);
12887   RUN_TEST_LOOP_f_f (rint, rint_tonearest_test_data, FE_TONEAREST);
12888   END (rint_tonearest);
12889 }
12890
12891 static const struct test_f_f_data rint_towardzero_test_data[] =
12892   {
12893     START_DATA (rint_towardzero),
12894     TEST_f_f (rint, 2.0, 2.0),
12895     TEST_f_f (rint, 1.5, 1.0),
12896     TEST_f_f (rint, 1.0, 1.0),
12897     TEST_f_f (rint, 0.5, 0.0),
12898     TEST_f_f (rint, 0.0, 0.0),
12899     TEST_f_f (rint, minus_zero, minus_zero),
12900     TEST_f_f (rint, -0.5, -0.0),
12901     TEST_f_f (rint, -1.0, -1.0),
12902     TEST_f_f (rint, -1.5, -1.0),
12903     TEST_f_f (rint, -2.0, -2.0),
12904     TEST_f_f (rint, 0.1, 0.0),
12905     TEST_f_f (rint, 0.25, 0.0),
12906     TEST_f_f (rint, 0.625, 0.0),
12907     TEST_f_f (rint, -0.1, -0.0),
12908     TEST_f_f (rint, -0.25, -0.0),
12909     TEST_f_f (rint, -0.625, -0.0),
12910     TEST_f_f (rint, 1048576.75, 1048576.0),
12911     TEST_f_f (rint, 2097152.75, 2097152.0),
12912     TEST_f_f (rint, -1048576.75, -1048576.0),
12913     TEST_f_f (rint, -2097152.75, -2097152.0),
12914 #ifndef TEST_FLOAT
12915     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
12916     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
12917     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
12918     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
12919     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
12920     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
12921     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
12922     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
12923     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
12924     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
12925 #endif
12926 #ifdef TEST_LDOUBLE
12927     /* The result can only be represented in long double.  */
12928     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
12929     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12930     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12931     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
12932     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
12933 # if LDBL_MANT_DIG > 100
12934     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
12935     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
12936     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
12937 # endif
12938     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
12939     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12940     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12941     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
12942     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
12943 # if LDBL_MANT_DIG > 100
12944     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
12945     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
12946     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
12947
12948     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12949     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12950     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12951     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
12952     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
12953     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
12954
12955     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12956     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12957     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12958     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
12959     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
12960     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
12961 # endif
12962 #endif
12963     END_DATA (rint_towardzero)
12964   };
12965
12966 static void
12967 rint_test_towardzero (void)
12968 {
12969   START (rint_towardzero);
12970   RUN_TEST_LOOP_f_f (rint, rint_towardzero_test_data, FE_TOWARDZERO);
12971   END (rint_towardzero);
12972 }
12973
12974 static const struct test_f_f_data rint_downward_test_data[] =
12975   {
12976     START_DATA (rint_downward),
12977     TEST_f_f (rint, 2.0, 2.0),
12978     TEST_f_f (rint, 1.5, 1.0),
12979     TEST_f_f (rint, 1.0, 1.0),
12980     TEST_f_f (rint, 0.5, 0.0),
12981     TEST_f_f (rint, 0.0, 0.0),
12982     TEST_f_f (rint, minus_zero, minus_zero),
12983     TEST_f_f (rint, -0.5, -1.0),
12984     TEST_f_f (rint, -1.0, -1.0),
12985     TEST_f_f (rint, -1.5, -2.0),
12986     TEST_f_f (rint, -2.0, -2.0),
12987     TEST_f_f (rint, 0.1, 0.0),
12988     TEST_f_f (rint, 0.25, 0.0),
12989     TEST_f_f (rint, 0.625, 0.0),
12990     TEST_f_f (rint, -0.1, -1.0),
12991     TEST_f_f (rint, -0.25, -1.0),
12992     TEST_f_f (rint, -0.625, -1.0),
12993     TEST_f_f (rint, 1048576.75, 1048576.0),
12994     TEST_f_f (rint, 2097152.75, 2097152.0),
12995     TEST_f_f (rint, -1048576.75, -1048577.0),
12996     TEST_f_f (rint, -2097152.75, -2097153.0),
12997 #ifndef TEST_FLOAT
12998     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
12999     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
13000     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
13001     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
13002     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
13003     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
13004     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
13005     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
13006     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
13007     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
13008 #endif
13009 #ifdef TEST_LDOUBLE
13010     /* The result can only be represented in long double.  */
13011     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
13012     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
13013     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
13014     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
13015     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
13016 # if LDBL_MANT_DIG > 100
13017     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
13018     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
13019     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
13020 # endif
13021     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
13022     TEST_f_f (rint, -4503599627370496.25L, -4503599627370497.0L),
13023     TEST_f_f (rint, -4503599627370496.5L, -4503599627370497.0L),
13024     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
13025     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
13026 # if LDBL_MANT_DIG > 100
13027     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
13028     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
13029     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
13030
13031     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
13032     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
13033     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
13034     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
13035     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
13036     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
13037
13038     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740992.0L),
13039     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740993.0L),
13040     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740994.0L),
13041     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
13042     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
13043     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
13044 # endif
13045 #endif
13046     END_DATA (rint_downward)
13047   };
13048
13049 static void
13050 rint_test_downward (void)
13051 {
13052   START (rint_downward);
13053   RUN_TEST_LOOP_f_f (rint, rint_downward_test_data, FE_DOWNWARD);
13054   END (rint_downward);
13055 }
13056
13057 static const struct test_f_f_data rint_upward_test_data[] =
13058   {
13059     START_DATA (rint_upward),
13060     TEST_f_f (rint, 2.0, 2.0),
13061     TEST_f_f (rint, 1.5, 2.0),
13062     TEST_f_f (rint, 1.0, 1.0),
13063     TEST_f_f (rint, 0.5, 1.0),
13064     TEST_f_f (rint, 0.0, 0.0),
13065     TEST_f_f (rint, minus_zero, minus_zero),
13066     TEST_f_f (rint, -0.5, -0.0),
13067     TEST_f_f (rint, -1.0, -1.0),
13068     TEST_f_f (rint, -1.5, -1.0),
13069     TEST_f_f (rint, -2.0, -2.0),
13070     TEST_f_f (rint, 0.1, 1.0),
13071     TEST_f_f (rint, 0.25, 1.0),
13072     TEST_f_f (rint, 0.625, 1.0),
13073     TEST_f_f (rint, -0.1, -0.0),
13074     TEST_f_f (rint, -0.25, -0.0),
13075     TEST_f_f (rint, -0.625, -0.0),
13076     TEST_f_f (rint, 1048576.75, 1048577.0),
13077     TEST_f_f (rint, 2097152.75, 2097153.0),
13078     TEST_f_f (rint, -1048576.75, -1048576.0),
13079     TEST_f_f (rint, -2097152.75, -2097152.0),
13080 #ifndef TEST_FLOAT
13081     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
13082     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
13083     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
13084     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
13085     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
13086     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
13087     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
13088     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
13089     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
13090     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
13091 #endif
13092 #ifdef TEST_LDOUBLE
13093     /* The result can only be represented in long double.  */
13094     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
13095     TEST_f_f (rint, 4503599627370496.25L, 4503599627370497.0L),
13096     TEST_f_f (rint, 4503599627370496.5L, 4503599627370497.0L),
13097     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
13098     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
13099 # if LDBL_MANT_DIG > 100
13100     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
13101     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
13102     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
13103 # endif
13104     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
13105     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
13106     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
13107     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
13108     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
13109 # if LDBL_MANT_DIG > 100
13110     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
13111     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
13112     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
13113
13114     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740992.0L),
13115     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740993.0L),
13116     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740994.0L),
13117     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
13118     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
13119     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
13120
13121     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
13122     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
13123     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
13124     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
13125     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
13126     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
13127 # endif
13128 #endif
13129     END_DATA (rint_upward)
13130   };
13131
13132 static void
13133 rint_test_upward (void)
13134 {
13135   START (rint_upward);
13136   RUN_TEST_LOOP_f_f (rint, rint_upward_test_data, FE_UPWARD);
13137   END (rint_upward);
13138 }
13139
13140 static const struct test_f_f_data round_test_data[] =
13141   {
13142     START_DATA (round),
13143     /* TODO: missing +/-Inf as well as qNaN tests.  */
13144
13145     TEST_f_f (round, 0, 0),
13146     TEST_f_f (round, minus_zero, minus_zero),
13147     TEST_f_f (round, 0.2L, 0.0),
13148     TEST_f_f (round, -0.2L, minus_zero),
13149     TEST_f_f (round, 0.5, 1.0),
13150     TEST_f_f (round, -0.5, -1.0),
13151     TEST_f_f (round, 0.8L, 1.0),
13152     TEST_f_f (round, -0.8L, -1.0),
13153     TEST_f_f (round, 1.5, 2.0),
13154     TEST_f_f (round, -1.5, -2.0),
13155     TEST_f_f (round, 0.1, 0.0),
13156     TEST_f_f (round, 0.25, 0.0),
13157     TEST_f_f (round, 0.625, 1.0),
13158     TEST_f_f (round, -0.1, -0.0),
13159     TEST_f_f (round, -0.25, -0.0),
13160     TEST_f_f (round, -0.625, -1.0),
13161     TEST_f_f (round, 2097152.5, 2097153),
13162     TEST_f_f (round, -2097152.5, -2097153),
13163
13164 #ifdef TEST_LDOUBLE
13165     /* The result can only be represented in long double.  */
13166     TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L),
13167     TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L),
13168     TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L),
13169     TEST_f_f (round, 4503599627370496.75L, 4503599627370497.0L),
13170     TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L),
13171 # if LDBL_MANT_DIG > 100
13172     TEST_f_f (round, 4503599627370494.5000000000001L, 4503599627370495.0L),
13173     TEST_f_f (round, 4503599627370495.5000000000001L, 4503599627370496.0L),
13174     TEST_f_f (round, 4503599627370496.5000000000001L, 4503599627370497.0L),
13175 # endif
13176
13177     TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L),
13178     TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L),
13179     TEST_f_f (round, -4503599627370496.5L, -4503599627370497.0L),
13180     TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L),
13181     TEST_f_f (round, -4503599627370497.5L, -4503599627370498.0L),
13182 # if LDBL_MANT_DIG > 100
13183     TEST_f_f (round, -4503599627370494.5000000000001L, -4503599627370495.0L),
13184     TEST_f_f (round, -4503599627370495.5000000000001L, -4503599627370496.0L),
13185     TEST_f_f (round, -4503599627370496.5000000000001L, -4503599627370497.0L),
13186 # endif
13187
13188     TEST_f_f (round, 9007199254740991.5L, 9007199254740992.0L),
13189     TEST_f_f (round, 9007199254740992.25L, 9007199254740992.0L),
13190     TEST_f_f (round, 9007199254740992.5L, 9007199254740993.0L),
13191     TEST_f_f (round, 9007199254740992.75L, 9007199254740993.0L),
13192     TEST_f_f (round, 9007199254740993.5L, 9007199254740994.0L),
13193
13194     TEST_f_f (round, -9007199254740991.5L, -9007199254740992.0L),
13195     TEST_f_f (round, -9007199254740992.25L, -9007199254740992.0L),
13196     TEST_f_f (round, -9007199254740992.5L, -9007199254740993.0L),
13197     TEST_f_f (round, -9007199254740992.75L, -9007199254740993.0L),
13198     TEST_f_f (round, -9007199254740993.5L, -9007199254740994.0L),
13199
13200 # if LDBL_MANT_DIG > 100
13201     TEST_f_f (round, 9007199254740991.0000000000001L, 9007199254740991.0L),
13202     TEST_f_f (round, 9007199254740992.0000000000001L, 9007199254740992.0L),
13203     TEST_f_f (round, 9007199254740993.0000000000001L, 9007199254740993.0L),
13204     TEST_f_f (round, 9007199254740991.5000000000001L, 9007199254740992.0L),
13205     TEST_f_f (round, 9007199254740992.5000000000001L, 9007199254740993.0L),
13206     TEST_f_f (round, 9007199254740993.5000000000001L, 9007199254740994.0L),
13207
13208     TEST_f_f (round, -9007199254740991.0000000000001L, -9007199254740991.0L),
13209     TEST_f_f (round, -9007199254740992.0000000000001L, -9007199254740992.0L),
13210     TEST_f_f (round, -9007199254740993.0000000000001L, -9007199254740993.0L),
13211     TEST_f_f (round, -9007199254740991.5000000000001L, -9007199254740992.0L),
13212     TEST_f_f (round, -9007199254740992.5000000000001L, -9007199254740993.0L),
13213     TEST_f_f (round, -9007199254740993.5000000000001L, -9007199254740994.0L),
13214 # endif
13215
13216     TEST_f_f (round, 72057594037927935.5L, 72057594037927936.0L),
13217     TEST_f_f (round, 72057594037927936.25L, 72057594037927936.0L),
13218     TEST_f_f (round, 72057594037927936.5L, 72057594037927937.0L),
13219     TEST_f_f (round, 72057594037927936.75L, 72057594037927937.0L),
13220     TEST_f_f (round, 72057594037927937.5L, 72057594037927938.0L),
13221
13222     TEST_f_f (round, -72057594037927935.5L, -72057594037927936.0L),
13223     TEST_f_f (round, -72057594037927936.25L, -72057594037927936.0L),
13224     TEST_f_f (round, -72057594037927936.5L, -72057594037927937.0L),
13225     TEST_f_f (round, -72057594037927936.75L, -72057594037927937.0L),
13226     TEST_f_f (round, -72057594037927937.5L, -72057594037927938.0L),
13227
13228     TEST_f_f (round, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
13229     TEST_f_f (round, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
13230     TEST_f_f (round, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
13231     TEST_f_f (round, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
13232     TEST_f_f (round, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
13233 #endif
13234     END_DATA (round)
13235   };
13236
13237 static void
13238 round_test (void)
13239 {
13240   START (round);
13241   RUN_TEST_LOOP_f_f (round, round_test_data, );
13242   END (round);
13243 }
13244
13245
13246 static const struct test_ff_f_data scalb_test_data[] =
13247   {
13248     START_DATA (scalb),
13249     TEST_ff_f (scalb, 2.0, 0.5, qnan_value, INVALID_EXCEPTION),
13250     TEST_ff_f (scalb, 3.0, -2.5, qnan_value, INVALID_EXCEPTION),
13251
13252     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13253     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13254
13255     TEST_ff_f (scalb, 1, 0, 1),
13256     TEST_ff_f (scalb, -1, 0, -1),
13257
13258     TEST_ff_f (scalb, 0, plus_infty, qnan_value, INVALID_EXCEPTION),
13259     TEST_ff_f (scalb, minus_zero, plus_infty, qnan_value, INVALID_EXCEPTION),
13260
13261     TEST_ff_f (scalb, 0, 2, 0),
13262     TEST_ff_f (scalb, minus_zero, -4, minus_zero),
13263     TEST_ff_f (scalb, 0, 0, 0),
13264     TEST_ff_f (scalb, minus_zero, 0, minus_zero),
13265     TEST_ff_f (scalb, 0, -1, 0),
13266     TEST_ff_f (scalb, minus_zero, -10, minus_zero),
13267     TEST_ff_f (scalb, 0, minus_infty, 0),
13268     TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero),
13269
13270     TEST_ff_f (scalb, plus_infty, -1, plus_infty),
13271     TEST_ff_f (scalb, minus_infty, -10, minus_infty),
13272     TEST_ff_f (scalb, plus_infty, 0, plus_infty),
13273     TEST_ff_f (scalb, minus_infty, 0, minus_infty),
13274     TEST_ff_f (scalb, plus_infty, 2, plus_infty),
13275     TEST_ff_f (scalb, minus_infty, 100, minus_infty),
13276
13277     TEST_ff_f (scalb, 0.1L, minus_infty, 0.0),
13278     TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero),
13279
13280     TEST_ff_f (scalb, 1, plus_infty, plus_infty),
13281     TEST_ff_f (scalb, -1, plus_infty, minus_infty),
13282     TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty),
13283     TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty),
13284
13285     TEST_ff_f (scalb, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13286     TEST_ff_f (scalb, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13287
13288     TEST_ff_f (scalb, qnan_value, 1, qnan_value),
13289     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13290     TEST_ff_f (scalb, qnan_value, 0, qnan_value),
13291     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13292     TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value),
13293     TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value),
13294     TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value),
13295
13296     TEST_ff_f (scalb, 0.8L, 4, 12.8L),
13297     TEST_ff_f (scalb, -0.854375L, 5, -27.34L),
13298     END_DATA (scalb)
13299   };
13300
13301 static void
13302 scalb_test (void)
13303 {
13304
13305   START (scalb);
13306   RUN_TEST_LOOP_ff_f (scalb, scalb_test_data, );
13307   END (scalb);
13308 }
13309
13310
13311 static const struct test_fi_f_data scalbn_test_data[] =
13312   {
13313     START_DATA (scalbn),
13314     TEST_fi_f (scalbn, 0, 0, 0),
13315     TEST_fi_f (scalbn, minus_zero, 0, minus_zero),
13316
13317     TEST_fi_f (scalbn, plus_infty, 1, plus_infty),
13318     TEST_fi_f (scalbn, minus_infty, 1, minus_infty),
13319     TEST_fi_f (scalbn, qnan_value, 1, qnan_value),
13320
13321     TEST_fi_f (scalbn, 0.8L, 4, 12.8L),
13322     TEST_fi_f (scalbn, -0.854375L, 5, -27.34L),
13323
13324     TEST_fi_f (scalbn, 1, 0L, 1),
13325
13326     TEST_fi_f (scalbn, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13327     TEST_fi_f (scalbn, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13328     TEST_fi_f (scalbn, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13329     TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13330     TEST_fi_f (scalbn, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13331     TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13332     TEST_fi_f (scalbn, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13333     TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13334     END_DATA (scalbn)
13335   };
13336
13337 static void
13338 scalbn_test (void)
13339 {
13340
13341   START (scalbn);
13342   RUN_TEST_LOOP_fi_f (scalbn, scalbn_test_data, );
13343   END (scalbn);
13344 }
13345
13346
13347 static const struct test_fl_f_data scalbln_test_data[] =
13348   {
13349     START_DATA (scalbln),
13350     TEST_fl_f (scalbln, 0, 0, 0),
13351     TEST_fl_f (scalbln, minus_zero, 0, minus_zero),
13352
13353     TEST_fl_f (scalbln, plus_infty, 1, plus_infty),
13354     TEST_fl_f (scalbln, minus_infty, 1, minus_infty),
13355     TEST_fl_f (scalbln, qnan_value, 1, qnan_value),
13356
13357     TEST_fl_f (scalbln, 0.8L, 4, 12.8L),
13358     TEST_fl_f (scalbln, -0.854375L, 5, -27.34L),
13359
13360     TEST_fl_f (scalbln, 1, 0L, 1),
13361
13362     TEST_fl_f (scalbln, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13363     TEST_fl_f (scalbln, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13364     TEST_fl_f (scalbln, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13365     TEST_fl_f (scalbln, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13366     TEST_fl_f (scalbln, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13367     TEST_fl_f (scalbln, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13368     TEST_fl_f (scalbln, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13369     TEST_fl_f (scalbln, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13370
13371     TEST_fl_f (scalbln, 1, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION),
13372     TEST_fl_f (scalbln, 1, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13373     TEST_fl_f (scalbln, max_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION),
13374     TEST_fl_f (scalbln, max_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13375     TEST_fl_f (scalbln, min_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION),
13376     TEST_fl_f (scalbln, min_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13377     TEST_fl_f (scalbln, min_value / 4, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION),
13378     TEST_fl_f (scalbln, min_value / 4, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13379
13380 #if LONG_MAX >= 0x100000000
13381     TEST_fl_f (scalbln, 1, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION),
13382     TEST_fl_f (scalbln, 1, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION),
13383     TEST_fl_f (scalbln, max_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION),
13384     TEST_fl_f (scalbln, max_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION),
13385     TEST_fl_f (scalbln, min_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION),
13386     TEST_fl_f (scalbln, min_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION),
13387     TEST_fl_f (scalbln, min_value / 4, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION),
13388     TEST_fl_f (scalbln, min_value / 4, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION),
13389 #endif
13390     END_DATA (scalbln)
13391   };
13392
13393 static void
13394 scalbln_test (void)
13395 {
13396
13397   START (scalbln);
13398   RUN_TEST_LOOP_fl_f (scalbln, scalbln_test_data, );
13399   END (scalbln);
13400 }
13401
13402
13403 static void
13404 signbit_test (void)
13405 {
13406   /* TODO: missing qNaN tests.  */
13407
13408   START (signbit);
13409
13410   TEST_f_b (signbit, 0, 0);
13411   TEST_f_b (signbit, minus_zero, 1);
13412   TEST_f_b (signbit, plus_infty, 0);
13413   TEST_f_b (signbit, minus_infty, 1);
13414
13415   /* signbit (x) != 0 for x < 0.  */
13416   TEST_f_b (signbit, -1, 1);
13417   /* signbit (x) == 0 for x >= 0.  */
13418   TEST_f_b (signbit, 1, 0);
13419
13420   END (signbit);
13421 }
13422
13423
13424 static const struct test_f_f_data sin_test_data[] =
13425   {
13426     START_DATA (sin),
13427     TEST_f_f (sin, 0, 0),
13428     TEST_f_f (sin, minus_zero, minus_zero),
13429     TEST_f_f (sin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13430     TEST_f_f (sin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13431     TEST_f_f (sin, qnan_value, qnan_value, ERRNO_UNCHANGED),
13432
13433     TEST_f_f (sin, M_PI_6l, 0.5),
13434     TEST_f_f (sin, -M_PI_6l, -0.5),
13435     TEST_f_f (sin, M_PI_2l, 1),
13436     TEST_f_f (sin, -M_PI_2l, -1),
13437     TEST_f_f (sin, 0.75L, 0.681638760023334166733241952779893935L),
13438
13439     TEST_f_f (sin, 0x1p65, -0.047183876212354673805106149805700013943218L),
13440     TEST_f_f (sin, -0x1p65, 0.047183876212354673805106149805700013943218L),
13441
13442     TEST_f_f (sin, 0x1.7f4134p+103, -6.6703229329788657073304190650534846045235e-08L),
13443
13444 #ifdef TEST_DOUBLE
13445     TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868),
13446     TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1),
13447 #endif
13448
13449 #ifndef TEST_FLOAT
13450     TEST_f_f (sin, 1e22, -0.8522008497671888017727058937530293682618L),
13451     TEST_f_f (sin, 0x1p1023, 0.5631277798508840134529434079444683477104L),
13452 #endif
13453
13454 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13455     TEST_f_f (sin, 0x1p16383L, 0.3893629985894208126948115852610595405563L),
13456 #endif
13457
13458     TEST_f_f (sin, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L),
13459     TEST_f_f (sin, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L),
13460     TEST_f_f (sin, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L),
13461     TEST_f_f (sin, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L),
13462     TEST_f_f (sin, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L),
13463     TEST_f_f (sin, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L),
13464     END_DATA (sin)
13465   };
13466
13467 static void
13468 sin_test (void)
13469 {
13470   errno = 0;
13471   FUNC(sin) (0);
13472   if (errno == ENOSYS)
13473     /* Function not implemented.  */
13474     return;
13475
13476   START (sin);
13477   RUN_TEST_LOOP_f_f (sin, sin_test_data, );
13478   END (sin);
13479 }
13480
13481
13482 static const struct test_f_f_data sin_tonearest_test_data[] =
13483   {
13484     START_DATA (sin_tonearest),
13485     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13486     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13487     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13488     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13489     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13490     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13491     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13492     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13493     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13494     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13495     END_DATA (sin_tonearest)
13496   };
13497
13498 static void
13499 sin_test_tonearest (void)
13500 {
13501   errno = 0;
13502   FUNC(sin) (0);
13503   if (errno == ENOSYS)
13504     /* Function not implemented.  */
13505     return;
13506
13507   START (sin_tonearest);
13508   RUN_TEST_LOOP_f_f (sin, sin_tonearest_test_data, FE_TONEAREST);
13509   END (sin_tonearest);
13510 }
13511
13512
13513 static const struct test_f_f_data sin_towardzero_test_data[] =
13514   {
13515     START_DATA (sin_towardzero),
13516     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13517     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13518     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13519     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13520     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13521     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13522     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13523     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13524     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13525     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13526     END_DATA (sin_towardzero)
13527   };
13528
13529 static void
13530 sin_test_towardzero (void)
13531 {
13532   errno = 0;
13533   FUNC(sin) (0);
13534   if (errno == ENOSYS)
13535     /* Function not implemented.  */
13536     return;
13537
13538   START (sin_towardzero);
13539   RUN_TEST_LOOP_f_f (sin, sin_towardzero_test_data, FE_TOWARDZERO);
13540   END (sin_towardzero);
13541 }
13542
13543
13544 static const struct test_f_f_data sin_downward_test_data[] =
13545   {
13546     START_DATA (sin_downward),
13547     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13548     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13549     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13550     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13551     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13552     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13553     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13554     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13555     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13556     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13557     END_DATA (sin_downward)
13558   };
13559
13560 static void
13561 sin_test_downward (void)
13562 {
13563   errno = 0;
13564   FUNC(sin) (0);
13565   if (errno == ENOSYS)
13566     /* Function not implemented.  */
13567     return;
13568
13569   START (sin_downward);
13570   RUN_TEST_LOOP_f_f (sin, sin_downward_test_data, FE_DOWNWARD);
13571   END (sin_downward);
13572 }
13573
13574
13575 static const struct test_f_f_data sin_upward_test_data[] =
13576   {
13577     START_DATA (sin_upward),
13578     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13579     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13580     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13581     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13582     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13583     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13584     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13585     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13586     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13587     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13588     END_DATA (sin_upward)
13589   };
13590
13591 static void
13592 sin_test_upward (void)
13593 {
13594   errno = 0;
13595   FUNC(sin) (0);
13596   if (errno == ENOSYS)
13597     /* Function not implemented.  */
13598     return;
13599
13600   START (sin_upward);
13601   RUN_TEST_LOOP_f_f (sin, sin_upward_test_data, FE_UPWARD);
13602   END (sin_upward);
13603 }
13604
13605
13606 static void
13607 sincos_test (void)
13608 {
13609   FLOAT sin_res, cos_res;
13610
13611   errno = 0;
13612   FUNC(sincos) (0, &sin_res, &cos_res);
13613   if (errno == ENOSYS)
13614     /* Function not implemented.  */
13615     return;
13616
13617   START (sincos);
13618
13619   /* sincos is treated differently because it returns void.  */
13620   TEST_extra (sincos, 0, 0, 1);
13621
13622   TEST_extra (sincos, minus_zero, minus_zero, 1);
13623   TEST_extra (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13624   TEST_extra (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13625   TEST_extra (sincos, qnan_value, qnan_value, qnan_value);
13626
13627   /* The value of M_PI_2l is never exactly PI/2, and therefore the
13628      answer is never exactly zero. The answer is equal to the error
13629      in rounding PI/2 for the type used.  Thus the answer is unique
13630      to each type.  */
13631 #ifdef TEST_FLOAT
13632   /* 32-bit float.  */
13633   TEST_extra (sincos, M_PI_2l, 1, -0x1.777a5cp-25L);
13634 #endif
13635 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
13636   /* 64-bit double or 64-bit long double.  */
13637   TEST_extra (sincos, M_PI_2l, 1, 0x1.1a62633145c07p-54L);
13638 #endif
13639 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
13640   /* 96-bit long double.  */
13641   TEST_extra (sincos, M_PI_2l, 1, -0xe.ce675d1fc8f8cbbp-69L);
13642 #endif
13643 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
13644   /* 128-bit IBM long double.  */
13645   TEST_extra (sincos, M_PI_2l, 1, 0x1.c1cd129024e088a67cc74020bcp-107L);
13646 #endif
13647 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
13648   /* 128-bit long double.  */
13649   TEST_extra (sincos, M_PI_2l, 1, 0x1.cd129024e088a67cc74020bbea64p-115L);
13650 #endif
13651
13652   TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L);
13653   TEST_extra (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5);
13654   TEST_extra (sincos, 0.75L, 0.681638760023334166733241952779893935L, 0.731688868873820886311838753000084544L);
13655
13656   TEST_extra (sincos, 0x1p65, -0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13657   TEST_extra (sincos, -0x1p65, 0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13658
13659 #ifdef TEST_DOUBLE
13660   TEST_extra (sincos, 0.80190127184058835, 0.71867942238767868, 0.69534156199418473);
13661 #endif
13662
13663 #ifndef TEST_FLOAT
13664   TEST_extra (sincos, 1e22, -0.8522008497671888017727058937530293682618L, 0.5232147853951389454975944733847094921409L);
13665   TEST_extra (sincos, 0x1p1023, 0.5631277798508840134529434079444683477104L, -0.826369834614147994500785680811743734805L);
13666 #endif
13667
13668 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13669   TEST_extra (sincos, 0x1p16383L, 0.3893629985894208126948115852610595405563L, 0.9210843909921906206874509522505756251609L);
13670 #endif
13671
13672   TEST_extra (sincos, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L, -9.25879022854837867303861764107414946730833e-01L);
13673   TEST_extra (sincos, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L, 7.81914638714960072263910298466369236613162e-01L);
13674   TEST_extra (sincos, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L, 9.98819362551949040703862043664101081064641e-01L);
13675   TEST_extra (sincos, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L, 8.53021039830304158051791467692161107353094e-01L);
13676   TEST_extra (sincos, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L, 8.68095904660550604334592502063501320395739e-01L);
13677   TEST_extra (sincos, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L, -1.65568979490578758865468278195361551113358e-01L);
13678
13679   END (sincos);
13680 }
13681
13682 static const struct test_f_f_data sinh_test_data[] =
13683   {
13684     START_DATA (sinh),
13685     TEST_f_f (sinh, 0, 0),
13686     TEST_f_f (sinh, minus_zero, minus_zero),
13687
13688 #ifndef TEST_INLINE
13689     TEST_f_f (sinh, plus_infty, plus_infty),
13690     TEST_f_f (sinh, minus_infty, minus_infty),
13691 #endif
13692     TEST_f_f (sinh, qnan_value, qnan_value),
13693
13694     TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L),
13695     TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L),
13696     END_DATA (sinh)
13697   };
13698
13699 static void
13700 sinh_test (void)
13701 {
13702   errno = 0;
13703   FUNC(sinh) (0.7L);
13704   if (errno == ENOSYS)
13705     /* Function not implemented.  */
13706     return;
13707
13708   START (sinh);
13709   RUN_TEST_LOOP_f_f (sinh, sinh_test_data, );
13710   END (sinh);
13711 }
13712
13713
13714 static const struct test_f_f_data sinh_tonearest_test_data[] =
13715   {
13716     START_DATA (sinh_tonearest),
13717     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13718     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13719     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13720     END_DATA (sinh_tonearest)
13721   };
13722
13723 static void
13724 sinh_test_tonearest (void)
13725 {
13726   errno = 0;
13727   FUNC(sinh) (0);
13728   if (errno == ENOSYS)
13729     /* Function not implemented.  */
13730     return;
13731
13732   START (sinh_tonearest);
13733   RUN_TEST_LOOP_f_f (sinh, sinh_tonearest_test_data, FE_TONEAREST);
13734   END (sinh_tonearest);
13735 }
13736
13737
13738 static const struct test_f_f_data sinh_towardzero_test_data[] =
13739   {
13740     START_DATA (sinh_towardzero),
13741     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13742     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13743     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13744     END_DATA (sinh_towardzero)
13745   };
13746
13747 static void
13748 sinh_test_towardzero (void)
13749 {
13750   errno = 0;
13751   FUNC(sinh) (0);
13752   if (errno == ENOSYS)
13753     /* Function not implemented.  */
13754     return;
13755
13756   START (sinh_towardzero);
13757   RUN_TEST_LOOP_f_f (sinh, sinh_towardzero_test_data, FE_TOWARDZERO);
13758   END (sinh_towardzero);
13759 }
13760
13761
13762 static const struct test_f_f_data sinh_downward_test_data[] =
13763   {
13764     START_DATA (sinh_downward),
13765     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13766     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13767     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13768     END_DATA (sinh_downward)
13769   };
13770
13771 static void
13772 sinh_test_downward (void)
13773 {
13774   errno = 0;
13775   FUNC(sinh) (0);
13776   if (errno == ENOSYS)
13777     /* Function not implemented.  */
13778     return;
13779
13780   START (sinh_downward);
13781   RUN_TEST_LOOP_f_f (sinh, sinh_downward_test_data, FE_DOWNWARD);
13782   END (sinh_downward);
13783 }
13784
13785
13786 static const struct test_f_f_data sinh_upward_test_data[] =
13787   {
13788     START_DATA (sinh_upward),
13789     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13790     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13791     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13792     END_DATA (sinh_upward)
13793   };
13794
13795 static void
13796 sinh_test_upward (void)
13797 {
13798   errno = 0;
13799   FUNC(sinh) (0);
13800   if (errno == ENOSYS)
13801     /* Function not implemented.  */
13802     return;
13803
13804   START (sinh_upward);
13805   RUN_TEST_LOOP_f_f (sinh, sinh_upward_test_data, FE_UPWARD);
13806   END (sinh_upward);
13807 }
13808
13809
13810 static const struct test_f_f_data sqrt_test_data[] =
13811   {
13812     START_DATA (sqrt),
13813     TEST_f_f (sqrt, 0, 0),
13814     TEST_f_f (sqrt, qnan_value, qnan_value),
13815     TEST_f_f (sqrt, plus_infty, plus_infty),
13816
13817     TEST_f_f (sqrt, minus_zero, minus_zero),
13818
13819     /* sqrt (x) == qNaN plus invalid exception for x < 0.  */
13820     TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION),
13821     TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION),
13822     TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION),
13823
13824     TEST_f_f (sqrt, 2209, 47),
13825     TEST_f_f (sqrt, 4, 2),
13826     TEST_f_f (sqrt, 2, M_SQRT2l),
13827     TEST_f_f (sqrt, 0.25, 0.5),
13828     TEST_f_f (sqrt, 6642.25, 81.5),
13829     TEST_f_f (sqrt, 15190.5625L, 123.25L),
13830     TEST_f_f (sqrt, 0.75L, 0.866025403784438646763723170752936183L),
13831     END_DATA (sqrt)
13832   };
13833
13834 static void
13835 sqrt_test (void)
13836 {
13837   errno = 0;
13838   FUNC(sqrt) (1);
13839   if (errno == ENOSYS)
13840     /* Function not implemented.  */
13841     return;
13842
13843   START (sqrt);
13844   RUN_TEST_LOOP_f_f (sqrt, sqrt_test_data, );
13845   END (sqrt);
13846 }
13847
13848
13849 static const struct test_f_f_data tan_test_data[] =
13850   {
13851     START_DATA (tan),
13852     TEST_f_f (tan, 0, 0),
13853     TEST_f_f (tan, minus_zero, minus_zero),
13854     TEST_f_f (tan, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13855     TEST_f_f (tan, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13856     TEST_f_f (tan, qnan_value, qnan_value, ERRNO_UNCHANGED),
13857
13858     TEST_f_f (tan, M_PI_4l, 1),
13859     TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L),
13860
13861     TEST_f_f (tan, 0x1p65, -0.0472364872359047946798414219288370688827L),
13862     TEST_f_f (tan, -0x1p65, 0.0472364872359047946798414219288370688827L),
13863
13864     TEST_f_f (tan, 0xc.9p-4, 0.9995162902115457818029468900654150261381L),
13865     TEST_f_f (tan, 0xc.908p-4, 0.9997603425502441410973077452249560802034L),
13866     TEST_f_f (tan, 0xc.90cp-4, 0.9998823910588060302788513970802357770031L),
13867     TEST_f_f (tan, 0xc.90ep-4, 0.9999434208994808753305784795924711152508L),
13868     TEST_f_f (tan, 0xc.90fp-4, 0.9999739372166156702433266059635165160515L),
13869     TEST_f_f (tan, 0xc.90f8p-4, 0.9999891957244072765118898375645469865764L),
13870     TEST_f_f (tan, 0xc.90fcp-4, 0.9999968250656122402859679132395522927393L),
13871     TEST_f_f (tan, 0xc.90fdp-4, 0.9999987324100083358016192309006353329444L),
13872     TEST_f_f (tan, 0xc.90fd8p-4, 0.9999996860835706212861509874451585282616L),
13873     TEST_f_f (tan, 0xc.90fdap-4, 0.9999999245021033010474530133665235922808L),
13874     TEST_f_f (tan, 0xc.ap-4, 1.0073556597407272165371804539701396631519L),
13875     TEST_f_f (tan, 0xc.98p-4, 1.0034282930863044654045449407466962736255L),
13876     TEST_f_f (tan, 0xc.94p-4, 1.0014703786820082237342656561856877993328L),
13877     TEST_f_f (tan, 0xc.92p-4, 1.0004928571392300571266638743539017593717L),
13878     TEST_f_f (tan, 0xc.91p-4, 1.0000044544650244953647966900221905361131L),
13879     TEST_f_f (tan, 0xc.90fep-4, 1.0000006397580424009014454926842136804016L),
13880     TEST_f_f (tan, 0xc.90fdcp-4, 1.0000001629206928242190327320047489394217L),
13881     TEST_f_f (tan, 0xc.90fdbp-4, 1.0000000437113909572052640953950483705005L),
13882
13883     TEST_f_f (tan, -0xc.9p-4, -0.9995162902115457818029468900654150261381L),
13884     TEST_f_f (tan, -0xc.908p-4, -0.9997603425502441410973077452249560802034L),
13885     TEST_f_f (tan, -0xc.90cp-4, -0.9998823910588060302788513970802357770031L),
13886     TEST_f_f (tan, -0xc.90ep-4, -0.9999434208994808753305784795924711152508L),
13887     TEST_f_f (tan, -0xc.90fp-4, -0.9999739372166156702433266059635165160515L),
13888     TEST_f_f (tan, -0xc.90f8p-4, -0.9999891957244072765118898375645469865764L),
13889     TEST_f_f (tan, -0xc.90fcp-4, -0.9999968250656122402859679132395522927393L),
13890     TEST_f_f (tan, -0xc.90fdp-4, -0.9999987324100083358016192309006353329444L),
13891     TEST_f_f (tan, -0xc.90fd8p-4, -0.9999996860835706212861509874451585282616L),
13892     TEST_f_f (tan, -0xc.90fdap-4, -0.9999999245021033010474530133665235922808L),
13893     TEST_f_f (tan, -0xc.ap-4, -1.0073556597407272165371804539701396631519L),
13894     TEST_f_f (tan, -0xc.98p-4, -1.0034282930863044654045449407466962736255L),
13895     TEST_f_f (tan, -0xc.94p-4, -1.0014703786820082237342656561856877993328L),
13896     TEST_f_f (tan, -0xc.92p-4, -1.0004928571392300571266638743539017593717L),
13897     TEST_f_f (tan, -0xc.91p-4, -1.0000044544650244953647966900221905361131L),
13898     TEST_f_f (tan, -0xc.90fep-4, -1.0000006397580424009014454926842136804016L),
13899     TEST_f_f (tan, -0xc.90fdcp-4, -1.0000001629206928242190327320047489394217L),
13900     TEST_f_f (tan, -0xc.90fdbp-4, -1.0000000437113909572052640953950483705005L),
13901
13902 #ifndef TEST_FLOAT
13903     TEST_f_f (tan, 1e22, -1.628778225606898878549375936939548513545L),
13904     TEST_f_f (tan, 0x1p1023, -0.6814476476066215012854144040167365190368L),
13905 #endif
13906
13907 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13908     TEST_f_f (tan, 0x1p16383L, 0.422722393732022337800504160054440141575L),
13909 #endif
13910     END_DATA (tan)
13911   };
13912
13913 static void
13914 tan_test (void)
13915 {
13916   errno = 0;
13917   FUNC(tan) (0);
13918   if (errno == ENOSYS)
13919     /* Function not implemented.  */
13920     return;
13921
13922   START (tan);
13923   RUN_TEST_LOOP_f_f (tan, tan_test_data, );
13924   END (tan);
13925 }
13926
13927
13928 static const struct test_f_f_data tan_tonearest_test_data[] =
13929   {
13930     START_DATA (tan_tonearest),
13931     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13932     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13933     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13934     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13935     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13936     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13937     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13938     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13939     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13940     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13941     END_DATA (tan_tonearest)
13942   };
13943
13944 static void
13945 tan_test_tonearest (void)
13946 {
13947   errno = 0;
13948   FUNC(tan) (0);
13949   if (errno == ENOSYS)
13950     /* Function not implemented.  */
13951     return;
13952
13953   START (tan_tonearest);
13954   RUN_TEST_LOOP_f_f (tan, tan_tonearest_test_data, FE_TONEAREST);
13955   END (tan_tonearest);
13956 }
13957
13958
13959 static const struct test_f_f_data tan_towardzero_test_data[] =
13960   {
13961     START_DATA (tan_towardzero),
13962     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13963     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13964     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13965     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13966     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13967     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13968     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13969     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13970     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13971     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13972     END_DATA (tan_towardzero)
13973   };
13974
13975 static void
13976 tan_test_towardzero (void)
13977 {
13978   errno = 0;
13979   FUNC(tan) (0);
13980   if (errno == ENOSYS)
13981     /* Function not implemented.  */
13982     return;
13983
13984   START (tan_towardzero);
13985   RUN_TEST_LOOP_f_f (tan, tan_towardzero_test_data, FE_TOWARDZERO);
13986   END (tan_towardzero);
13987 }
13988
13989
13990 static const struct test_f_f_data tan_downward_test_data[] =
13991   {
13992     START_DATA (tan_downward),
13993     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13994     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13995     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13996     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13997     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13998     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13999     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
14000     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
14001     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
14002     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
14003     END_DATA (tan_downward)
14004   };
14005
14006 static void
14007 tan_test_downward (void)
14008 {
14009   errno = 0;
14010   FUNC(tan) (0);
14011   if (errno == ENOSYS)
14012     /* Function not implemented.  */
14013     return;
14014
14015   START (tan_downward);
14016   RUN_TEST_LOOP_f_f (tan, tan_downward_test_data, FE_DOWNWARD);
14017   END (tan_downward);
14018 }
14019
14020
14021 static const struct test_f_f_data tan_upward_test_data[] =
14022   {
14023     START_DATA (tan_upward),
14024     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
14025     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
14026     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
14027     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
14028     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
14029     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
14030     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
14031     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
14032     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
14033     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
14034     END_DATA (tan_upward)
14035   };
14036
14037 static void
14038 tan_test_upward (void)
14039 {
14040   errno = 0;
14041   FUNC(tan) (0);
14042   if (errno == ENOSYS)
14043     /* Function not implemented.  */
14044     return;
14045
14046   START (tan_upward);
14047   RUN_TEST_LOOP_f_f (tan, tan_upward_test_data, FE_UPWARD);
14048   END (tan_upward);
14049 }
14050
14051
14052 static const struct test_f_f_data tanh_test_data[] =
14053   {
14054     START_DATA (tanh),
14055     TEST_f_f (tanh, 0, 0),
14056     TEST_f_f (tanh, minus_zero, minus_zero),
14057
14058 #ifndef TEST_INLINE
14059     TEST_f_f (tanh, plus_infty, 1),
14060     TEST_f_f (tanh, minus_infty, -1),
14061 #endif
14062     TEST_f_f (tanh, qnan_value, qnan_value),
14063
14064     TEST_f_f (tanh, 0.75L, 0.635148952387287319214434357312496495L),
14065     TEST_f_f (tanh, -0.75L, -0.635148952387287319214434357312496495L),
14066
14067     TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L),
14068     TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L),
14069
14070     /* 2^-57  */
14071     TEST_f_f (tanh, 0x1p-57L, 6.938893903907228377647697925567626953125e-18L),
14072     END_DATA (tanh)
14073   };
14074
14075 static void
14076 tanh_test (void)
14077 {
14078   errno = 0;
14079   FUNC(tanh) (0.7L);
14080   if (errno == ENOSYS)
14081     /* Function not implemented.  */
14082     return;
14083
14084   START (tanh);
14085   RUN_TEST_LOOP_f_f (tanh, tanh_test_data, );
14086   END (tanh);
14087 }
14088
14089 static const struct test_f_f_data tgamma_test_data[] =
14090   {
14091     START_DATA (tgamma),
14092     TEST_f_f (tgamma, plus_infty, plus_infty),
14093     TEST_f_f (tgamma, max_value, plus_infty, OVERFLOW_EXCEPTION),
14094     TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
14095     TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
14096     /* tgamma (x) == qNaN plus invalid exception for integer x <= 0.  */
14097     TEST_f_f (tgamma, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
14098     TEST_f_f (tgamma, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
14099     TEST_f_f (tgamma, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
14100     TEST_f_f (tgamma, qnan_value, qnan_value),
14101
14102     TEST_f_f (tgamma, 0.5, M_SQRT_PIl),
14103     TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl),
14104
14105     TEST_f_f (tgamma, 1, 1),
14106     TEST_f_f (tgamma, 2, 1),
14107     TEST_f_f (tgamma, 3, 2),
14108     TEST_f_f (tgamma, 4, 6),
14109     TEST_f_f (tgamma, 5, 24),
14110     TEST_f_f (tgamma, 6, 120),
14111     TEST_f_f (tgamma, 7, 720),
14112     TEST_f_f (tgamma, 8, 5040),
14113     TEST_f_f (tgamma, 9,  40320),
14114     TEST_f_f (tgamma, 10, 362880),
14115
14116     TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L),
14117     TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L),
14118
14119     TEST_f_f (tgamma, 1.5L, 8.8622692545275801364908374167057259139877e-01L),
14120     TEST_f_f (tgamma, 2.5L, 1.3293403881791370204736256125058588870982e+00L),
14121     TEST_f_f (tgamma, 3.5L, 3.3233509704478425511840640312646472177454e+00L),
14122     TEST_f_f (tgamma, 4.5L, 1.1631728396567448929144224109426265262109e+01L),
14123     TEST_f_f (tgamma, 5.5L, 5.2342777784553520181149008492418193679490e+01L),
14124     TEST_f_f (tgamma, 6.5L, 2.8788527781504436099631954670830006523720e+02L),
14125     TEST_f_f (tgamma, 7.5L, 1.8712543057977883464760770536039504240418e+03L),
14126     TEST_f_f (tgamma, 8.5L, 1.4034407293483412598570577902029628180313e+04L),
14127     TEST_f_f (tgamma, 9.5L, 1.1929246199460900708784991216725183953266e+05L),
14128     TEST_f_f (tgamma, -1.5L, 2.3632718012073547030642233111215269103967e+00L),
14129     TEST_f_f (tgamma, -2.5L, -9.4530872048294188122568932444861076415869e-01L),
14130     TEST_f_f (tgamma, -3.5L, 2.7008820585226910892162552127103164690248e-01L),
14131     TEST_f_f (tgamma, -4.5L, -6.0019601300504246427027893615784810422774e-02L),
14132     TEST_f_f (tgamma, -5.5L, 1.0912654781909862986732344293779056440504e-02L),
14133     TEST_f_f (tgamma, -6.5L, -1.6788699664476712287280529682737009908468e-03L),
14134     TEST_f_f (tgamma, -7.5L, 2.2384932885968949716374039576982679877958e-04L),
14135     TEST_f_f (tgamma, -8.5L, -2.6335215159963470254557693619979623385833e-05L),
14136     TEST_f_f (tgamma, -9.5L, 2.7721279115751021320587045915768024616666e-06L),
14137     TEST_f_f (tgamma, 0x1p-24L, 1.6777215422784394050795179874582764575261e+07L),
14138     TEST_f_f (tgamma, -0x1p-24L, -1.6777216577215723853867349114260580375249e+07L),
14139     TEST_f_f (tgamma, 0x1p-53L, 9.0071992547409914227843350984672492007618e+15L),
14140     TEST_f_f (tgamma, -0x1p-53L, -9.0071992547409925772156649015329704137860e+15L),
14141     TEST_f_f (tgamma, 0x1p-64L, 1.8446744073709551615422784335098467139447e+19L),
14142     TEST_f_f (tgamma, -0x1p-64L, -1.8446744073709551616577215664901532860660e+19L),
14143     TEST_f_f (tgamma, 0x1p-106L, 8.1129638414606681695789005144063422784335e+31L),
14144     TEST_f_f (tgamma, -0x1p-106L, -8.1129638414606681695789005144064577215665e+31L),
14145     TEST_f_f (tgamma, 0x1p-113L, 1.0384593717069655257060992658440191422784e+34L),
14146     TEST_f_f (tgamma, -0x1p-113L, -1.0384593717069655257060992658440192577216e+34L),
14147     TEST_f_f (tgamma, 0x1p-127L, 1.7014118346046923173168730371588410572742e+38L),
14148     TEST_f_f (tgamma, -0x1p-127L, -1.7014118346046923173168730371588410572858e+38L),
14149 #ifdef TEST_FLOAT
14150     TEST_f_f (tgamma, 0x1p-128L, plus_infty, OVERFLOW_EXCEPTION),
14151     TEST_f_f (tgamma, -0x1p-128L, minus_infty, OVERFLOW_EXCEPTION),
14152     TEST_f_f (tgamma, 0x1p-149L, plus_infty, OVERFLOW_EXCEPTION),
14153     TEST_f_f (tgamma, -0x1p-149L, minus_infty, OVERFLOW_EXCEPTION),
14154 #else
14155     TEST_f_f (tgamma, 0x1p-128L, 3.4028236692093846346337460743176821145542e+38L),
14156     TEST_f_f (tgamma, -0x1p-128L, -3.4028236692093846346337460743176821145658e+38L),
14157     TEST_f_f (tgamma, 0x1p-149L, 7.1362384635297994052914298472474756819137e+44L),
14158     TEST_f_f (tgamma, -0x1p-149L, -7.1362384635297994052914298472474756819137e+44L),
14159 #endif
14160 #ifndef TEST_FLOAT
14161     TEST_f_f (tgamma, 0x1p-1023L, 8.9884656743115795386465259539451236680899e+307L),
14162     TEST_f_f (tgamma, -0x1p-1023L, -8.9884656743115795386465259539451236680899e+307L),
14163 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14164     TEST_f_f (tgamma, 0x1p-1024L, plus_infty, OVERFLOW_EXCEPTION),
14165     TEST_f_f (tgamma, -0x1p-1024L, minus_infty, OVERFLOW_EXCEPTION),
14166     TEST_f_f (tgamma, 0x1p-1074L, plus_infty, OVERFLOW_EXCEPTION),
14167     TEST_f_f (tgamma, -0x1p-1074L, minus_infty, OVERFLOW_EXCEPTION),
14168 # else
14169     TEST_f_f (tgamma, 0x1p-1024L, 1.7976931348623159077293051907890247336180e+308L),
14170     TEST_f_f (tgamma, -0x1p-1024L, -1.7976931348623159077293051907890247336180e+308L),
14171     TEST_f_f (tgamma, 0x1p-1074L, 2.0240225330731061835249534671891730704956e+323L),
14172     TEST_f_f (tgamma, -0x1p-1074L, -2.0240225330731061835249534671891730704956e+323L),
14173 # endif
14174 #endif
14175 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
14176     TEST_f_f (tgamma, 0x1p-16383L, 5.9486574767861588254287966331400356538172e+4931L),
14177     TEST_f_f (tgamma, -0x1p-16383L, -5.9486574767861588254287966331400356538172e+4931L),
14178     TEST_f_f (tgamma, 0x1p-16384L, plus_infty, OVERFLOW_EXCEPTION),
14179     TEST_f_f (tgamma, -0x1p-16384L, minus_infty, OVERFLOW_EXCEPTION),
14180     TEST_f_f (tgamma, 0x1p-16445L, plus_infty, OVERFLOW_EXCEPTION),
14181     TEST_f_f (tgamma, -0x1p-16445L, minus_infty, OVERFLOW_EXCEPTION),
14182 # if LDBL_MANT_DIG >= 113
14183     TEST_f_f (tgamma, 0x1p-16494L, plus_infty, OVERFLOW_EXCEPTION),
14184     TEST_f_f (tgamma, -0x1p-16494L, minus_infty, OVERFLOW_EXCEPTION),
14185 # endif
14186 #endif
14187     TEST_f_f (tgamma, 0x8.00001p0L, 5.0400096882277802019946778420223050233915e+03L),
14188     TEST_f_f (tgamma, 0x7.fffff8p0L, 5.0399951558933225045148935487583089307135e+03L),
14189     TEST_f_f (tgamma, 0x7.000008p0L, 7.2000064296977505705636258629805621178587e+02L),
14190     TEST_f_f (tgamma, 0x6.fffff8p0L, 7.1999935703082425988147448928288557689866e+02L),
14191     TEST_f_f (tgamma, 0x6.000008p0L, 1.2000009762487825358530770343720418162783e+02L),
14192     TEST_f_f (tgamma, 0x5.fffff8p0L, 1.1999990237520611552119807476573441975106e+02L),
14193     TEST_f_f (tgamma, 0x5.000008p0L, 2.4000017236155647574166073485628713443799e+01L),
14194     TEST_f_f (tgamma, 0x4.fffff8p0L, 2.3999982763857938712639837029547357501709e+01L),
14195     TEST_f_f (tgamma, 0x4.000008p0L, 6.0000035937827461765660468073471093546129e+00L),
14196     TEST_f_f (tgamma, 0x3.fffffcp0L, 5.9999982031095793171233994481968816873643e+00L),
14197     TEST_f_f (tgamma, 0x3.000004p0L, 2.0000004400179308360529417942462250547999e+00L),
14198     TEST_f_f (tgamma, 0x2.fffffcp0L, 1.9999995599822108706107786027549565954046e+00L),
14199     TEST_f_f (tgamma, 0x2.000004p0L, 1.0000001007996638509889062631687945799175e+00L),
14200     TEST_f_f (tgamma, 0x1.fffffep0L, 9.9999994960018563231526611134590489120697e-01L),
14201     TEST_f_f (tgamma, 0x1.000002p0L, 9.9999993119054472483596471908942669644327e-01L),
14202     TEST_f_f (tgamma, 0x0.ffffffp0L, 1.0000000344047381790797322460568297132998e+00L),
14203     TEST_f_f (tgamma, -0x0.ffffffp0L, -1.6777216422784419250710305882992376932423e+07L),
14204     TEST_f_f (tgamma, -0x1.000002p0L, 8.3886075772158332060084424806449513922858e+06L),
14205     TEST_f_f (tgamma, -0x1.fffffep0L, 4.1943044613922792026014320172298377770578e+06L),
14206     TEST_f_f (tgamma, -0x2.000004p0L, -2.0971515386080557574407223895988378776747e+06L),
14207     TEST_f_f (tgamma, -0x2.fffffcp0L, -6.9905087601970247876992248591045142913324e+05L),
14208     TEST_f_f (tgamma, -0x3.000004p0L, 6.9905045731381300146131914617735687322025e+05L),
14209     TEST_f_f (tgamma, -0x3.fffffcp0L, 1.7476272942159602684441970627092458855771e+05L),
14210     TEST_f_f (tgamma, -0x4.000008p0L, -8.7381270578483499672965708923121931082305e+04L),
14211     TEST_f_f (tgamma, -0x4.fffff8p0L, -1.7476280884325863043793087474680780379554e+04L),
14212     TEST_f_f (tgamma, -0x5.000008p0L, 1.7476252449031389167286893378510439443844e+04L),
14213     TEST_f_f (tgamma, -0x5.fffff8p0L, 2.9127137122026653716311560165769071985443e+03L),
14214     TEST_f_f (tgamma, -0x6.000008p0L, -2.9127085100239567622341538102130981196910e+03L),
14215     TEST_f_f (tgamma, -0x6.fffff8p0L, -4.1610198723079349791939054365613377035519e+02L),
14216     TEST_f_f (tgamma, -0x7.000008p0L, 4.1610118737306415004517215226199741948733e+02L),
14217     TEST_f_f (tgamma, -0x7.fffff8p0L, 5.2012751504050764429534086402871289946986e+01L),
14218     TEST_f_f (tgamma, -0x8.00001p0L, -2.6006296115134418896533598545925084576702e+01L),
14219     TEST_f_f (tgamma, -0x9.fffffp0L, 2.8896008370721717567612135720915723136310e-01L),
14220     TEST_f_f (tgamma, -0xa.00001p0L, -2.8895878754728051776830454190076999107021e-01L),
14221     TEST_f_f (tgamma, -0x13.ffffep0L, 2.1550026214525536756224040483579183652119e-13L),
14222     TEST_f_f (tgamma, -0x14.00002p0L, -2.1549777908265594916405421768142757507179e-13L),
14223     TEST_f_f (tgamma, -0x1d.ffffep0L, 1.9765721589464867957912772592816027583176e-27L),
14224     TEST_f_f (tgamma, -0x1e.00002p0L, -1.9765463890341964384070157599286498212650e-27L),
14225     TEST_f_f (tgamma, -0x27.ffffcp0L, 3.2129279441390812141195076945616975790225e-43L, UNDERFLOW_EXCEPTION_FLOAT),
14226     TEST_f_f (tgamma, -0x28.00004p0L, -3.2128372159115252365699015758097981155793e-43L, UNDERFLOW_EXCEPTION_FLOAT),
14227     TEST_f_f (tgamma, -0x28.ffffcp0L, -7.8364103489619817539676737414096652170685e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14228     TEST_f_f (tgamma, -0x29.00004p0L, 7.8361876024016854597745353972619195760515e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14229 #ifdef TEST_FLOAT
14230     TEST_f_f (tgamma, -0x29.ffffcp0L, plus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14231     TEST_f_f (tgamma, -0x2a.00004p0L, minus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14232 #else
14233     TEST_f_f (tgamma, -0x29.ffffcp0L, 1.8658121573125798145204120066590953505132e-46L),
14234     TEST_f_f (tgamma, -0x2a.00004p0L, -1.8657587834931410688246126853566488626385e-46L),
14235 #endif
14236 #ifndef TEST_FLOAT
14237     TEST_f_f (tgamma, 0x8.0000000000008p0L, 5.0400000000000180457125667322294144477136e+03L),
14238     TEST_f_f (tgamma, 0x7.ffffffffffffcp0L, 5.0399999999999909771437166339103165198442e+03L),
14239     TEST_f_f (tgamma, 0x7.0000000000004p0L, 7.2000000000000119762397445457359071259652e+02L),
14240     TEST_f_f (tgamma, 0x6.ffffffffffffcp0L, 7.1999999999999880237602554542848858572672e+02L),
14241     TEST_f_f (tgamma, 0x6.0000000000004p0L, 1.2000000000000018184042734842640022086408e+02L),
14242     TEST_f_f (tgamma, 0x5.ffffffffffffcp0L, 1.1999999999999981815957265157389249327533e+02L),
14243     TEST_f_f (tgamma, 0x5.0000000000004p0L, 2.4000000000000032104829055124673225982803e+01L),
14244     TEST_f_f (tgamma, 0x4.ffffffffffffcp0L, 2.3999999999999967895170944875373910918544e+01L),
14245     TEST_f_f (tgamma, 0x4.0000000000004p0L, 6.0000000000000066939396342309789716341613e+00L),
14246     TEST_f_f (tgamma, 0x3.ffffffffffffep0L, 5.9999999999999966530301828845138185025345e+00L),
14247     TEST_f_f (tgamma, 0x3.0000000000002p0L, 2.0000000000000008195971324717875960213536e+00L),
14248     TEST_f_f (tgamma, 0x2.ffffffffffffep0L, 1.9999999999999991804028675282128956223990e+00L),
14249     TEST_f_f (tgamma, 0x2.0000000000002p0L, 1.0000000000000001877539613108624482361963e+00L),
14250     TEST_f_f (tgamma, 0x1.fffffffffffffp0L, 9.9999999999999990612301934456883679778984e-01L),
14251     TEST_f_f (tgamma, 0x1.0000000000001p0L, 9.9999999999999987183237573039992418700531e-01L),
14252     TEST_f_f (tgamma, 0x0.fffffffffffff8p0L, 1.0000000000000000640838121348000744796665e+00L),
14253     TEST_f_f (tgamma, -0x0.fffffffffffff8p0L, -9.0071992547409924227843350984672961392521e+15L),
14254     TEST_f_f (tgamma, -0x1.0000000000001p0L, 4.5035996273704955772156649015331740980405e+15L),
14255     TEST_f_f (tgamma, -0x1.fffffffffffffp0L, 2.2517998136852484613921675492337776673289e+15L),
14256     TEST_f_f (tgamma, -0x2.0000000000002p0L, -1.1258999068426235386078324507668462444260e+15L),
14257     TEST_f_f (tgamma, -0x2.ffffffffffffep0L, -3.7529996894754154268627807196691509198813e+14L),
14258     TEST_f_f (tgamma, -0x3.0000000000002p0L, 3.7529996894754112398038859470009084971438e+14L),
14259     TEST_f_f (tgamma, -0x3.ffffffffffffep0L, 9.3824992236885396088236184658402406857503e+13L),
14260     TEST_f_f (tgamma, -0x4.0000000000004p0L, -4.6912496118442603911763815341745722862351e+13L),
14261     TEST_f_f (tgamma, -0x4.ffffffffffffcp0L, -9.3824992236885475509805702650262155809819e+12L),
14262     TEST_f_f (tgamma, -0x5.0000000000004p0L, 9.3824992236885191156860964016850034672946e+12L),
14263     TEST_f_f (tgamma, -0x5.ffffffffffffcp0L, 1.5637498706147581566449098589862357835505e+12L),
14264     TEST_f_f (tgamma, -0x6.0000000000004p0L, -1.5637498706147529544662012521330708016396e+12L),
14265     TEST_f_f (tgamma, -0x6.ffffffffffffcp0L, -2.2339283865925119357965832452642909859289e+11L),
14266     TEST_f_f (tgamma, -0x7.0000000000004p0L, 2.2339283865925039372192897706214475877342e+11L),
14267     TEST_f_f (tgamma, -0x7.ffffffffffffcp0L, 2.7924104832406402297655703264222230055898e+10L),
14268     TEST_f_f (tgamma, -0x8.0000000000008p0L, -1.3962052416203121511868106259843527348026e+10L),
14269     TEST_f_f (tgamma, -0x9.ffffffffffff8p0L, 1.5513391573559147700413058496716749249803e+08L),
14270     TEST_f_f (tgamma, -0xa.0000000000008p0L, -1.5513391573559018084419393002828541166901e+08L),
14271     TEST_f_f (tgamma, -0x13.ffffffffffffp0L, 1.1569515572952029402736625857313236848570e-04L),
14272     TEST_f_f (tgamma, -0x14.000000000001p0L, -1.1569515572951781096476686854873801225397e-04L),
14273     TEST_f_f (tgamma, -0x1d.ffffffffffffp0L, 1.0611571800204311628217068863959963842891e-18L),
14274     TEST_f_f (tgamma, -0x1e.000000000001p0L, -1.0611571800204053929094168642022073530425e-18L),
14275     TEST_f_f (tgamma, -0x27.fffffffffffep0L, 1.7249032006742266376460389310340465554361e-34L),
14276     TEST_f_f (tgamma, -0x28.000000000002p0L, -1.7249032006741359094184881234822934593822e-34L),
14277     TEST_f_f (tgamma, -0x28.fffffffffffep0L, -4.2070809772542120404320040128839297118648e-36L),
14278     TEST_f_f (tgamma, -0x29.000000000002p0L, 4.2070809772539892938717205103652583609422e-36L),
14279     TEST_f_f (tgamma, -0x29.fffffffffffep0L, 1.0016859469652887505173040814397197718981e-37L),
14280     TEST_f_f (tgamma, -0x2a.000000000002p0L, -1.0016859469652353766978684241048308120274e-37L),
14281     TEST_f_f (tgamma, -0x31.fffffffffffep0L, 4.6273774273632946947805289899230181990085e-51L),
14282     TEST_f_f (tgamma, -0x32.000000000002p0L, -4.6273774273630367887073532197576655720178e-51L),
14283     TEST_f_f (tgamma, -0x63.fffffffffffcp0L, 7.5400833348840965463348754984345825364294e-145L),
14284     TEST_f_f (tgamma, -0x64.000000000004p0L, -7.5400833348831085791638490135462230991587e-145L),
14285     TEST_f_f (tgamma, -0x95.fffffffffff8p0L, 6.1582369322723207086020016423767264008839e-250L),
14286     TEST_f_f (tgamma, -0x96.000000000008p0L, -6.1582369322705655439003240743176243138734e-250L),
14287     TEST_f_f (tgamma, -0xb4.fffffffffff8p0L, -9.6760879059917574597728750098636253931457e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14288     TEST_f_f (tgamma, -0xb5.000000000008p0L, 9.6760879059888966544677044221698800670218e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14289     TEST_f_f (tgamma, -0xb5.fffffffffff8p0L, 5.3165318164789884455066481673086605454904e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14290     TEST_f_f (tgamma, -0xb6.000000000008p0L, -5.3165318164774149139661976747137185876909e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14291     TEST_f_f (tgamma, -0xb6.fffffffffff8p0L, -2.9052086428846935908287469917922960610289e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14292     TEST_f_f (tgamma, -0xb7.000000000008p0L, 2.9052086428838328351126988236541632950925e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14293 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14294     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14295     TEST_f_f (tgamma, -0xb8.000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14296 # else
14297     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, 1.5789177406982032823826953250736039527543e-325L),
14298     TEST_f_f (tgamma, -0xb8.000000000008p0L, -1.5789177406977349925854817486109369828857e-325L),
14299 # endif
14300 #endif
14301 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14302     TEST_f_f (tgamma, 0x8.00000000000000000000000004p0L, 5.0400000000000000000000000000020034765587e+03L),
14303     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffep0L, 5.0399999999999999999999999999989982617206e+03L),
14304     TEST_f_f (tgamma, 0x7.00000000000000000000000002p0L, 7.2000000000000000000000000000013296297113e+02L),
14305     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffep0L, 7.1999999999999999999999999999986703702887e+02L),
14306     TEST_f_f (tgamma, 0x6.00000000000000000000000002p0L, 1.2000000000000000000000000000002018834292e+02L),
14307     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffep0L, 1.1999999999999999999999999999997981165708e+02L),
14308     TEST_f_f (tgamma, 0x5.00000000000000000000000002p0L, 2.4000000000000000000000000000003564352042e+01L),
14309     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffep0L, 2.3999999999999999999999999999996435647958e+01L),
14310     TEST_f_f (tgamma, 0x4.00000000000000000000000002p0L, 6.0000000000000000000000000000007431765907e+00L),
14311     TEST_f_f (tgamma, 0x3.ffffffffffffffffffffffffffp0L, 5.9999999999999999999999999999996284117046e+00L),
14312     TEST_f_f (tgamma, 0x3.00000000000000000000000001p0L, 2.0000000000000000000000000000000909935607e+00L),
14313     TEST_f_f (tgamma, 0x2.ffffffffffffffffffffffffffp0L, 1.9999999999999999999999999999999090064393e+00L),
14314     TEST_f_f (tgamma, 0x2.00000000000000000000000001p0L, 1.0000000000000000000000000000000208448771e+00L),
14315     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffff8p0L, 9.9999999999999999999999999999998957756146e-01L),
14316     TEST_f_f (tgamma, 0x1.000000000000000000000000008p0L, 9.9999999999999999999999999999998577053525e-01L),
14317     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffcp0L, 1.0000000000000000000000000000000071147324e+00L),
14318     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffcp0L, -8.1129638414606681695789005144064422784335e+31L),
14319     TEST_f_f (tgamma, -0x1.000000000000000000000000008p0L, 4.0564819207303340847894502572031577215665e+31L),
14320     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffff8p0L, 2.0282409603651670423947251286016461392168e+31L),
14321     TEST_f_f (tgamma, -0x2.00000000000000000000000001p0L, -1.0141204801825835211973625643007538607832e+31L),
14322     TEST_f_f (tgamma, -0x2.ffffffffffffffffffffffffffp0L, -3.3804016006086117373245418810028760196114e+30L),
14323     TEST_f_f (tgamma, -0x3.00000000000000000000000001p0L, 3.3804016006086117373245418810024573137219e+30L),
14324     TEST_f_f (tgamma, -0x3.ffffffffffffffffffffffffffp0L, 8.4510040015215293433113547025072942156952e+29L),
14325     TEST_f_f (tgamma, -0x4.00000000000000000000000002p0L, -4.2255020007607646716556773512527057843048e+29L),
14326     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffep0L, -8.4510040015215293433113547025080884313904e+28L),
14327     TEST_f_f (tgamma, -0x5.00000000000000000000000002p0L, 8.4510040015215293433113547025052449019430e+28L),
14328     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffep0L, 1.4085006669202548905518924504180378867132e+28L),
14329     TEST_f_f (tgamma, -0x6.00000000000000000000000002p0L, -1.4085006669202548905518924504175176688423e+28L),
14330     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffep0L, -2.0121438098860784150741320720257967542615e+27L),
14331     TEST_f_f (tgamma, -0x7.00000000000000000000000002p0L, 2.0121438098860784150741320720249968965322e+27L),
14332     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffep0L, 2.5151797623575980188426650900322769448110e+26L),
14333     TEST_f_f (tgamma, -0x8.00000000000000000000000004p0L, -1.2575898811787990094213325450153421028080e+26L),
14334     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffcp0L, 1.3973220901986655660237028277960625420495e+24L),
14335     TEST_f_f (tgamma, -0xa.00000000000000000000000004p0L, -1.3973220901986655660237028277947663821128e+24L),
14336     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffff8p0L, 1.0420893204640670202556853709074896123293e+12L),
14337     TEST_f_f (tgamma, -0x14.00000000000000000000000008p0L, -1.0420893204640670202556853709050065497299e+12L),
14338     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffff8p0L, 9.5580541610429641982963434151488827190079e-03L),
14339     TEST_f_f (tgamma, -0x1e.00000000000000000000000008p0L, -9.5580541610429641982963434151231128067179e-03L),
14340     TEST_f_f (tgamma, -0x27.fffffffffffffffffffffffffp0L, 1.5536546823612837336494536911280147806523e-18L),
14341     TEST_f_f (tgamma, -0x28.0000000000000000000000001p0L, -1.5536546823612837336494536911189419578973e-18L),
14342     TEST_f_f (tgamma, -0x28.fffffffffffffffffffffffffp0L, -3.7894016642958139845108626612879138384405e-20L),
14343     TEST_f_f (tgamma, -0x29.0000000000000000000000001p0L, 3.7894016642958139845108626612656391824122e-20L),
14344     TEST_f_f (tgamma, -0x29.fffffffffffffffffffffffffp0L, 9.0223849149900332964544349078285357440663e-22L),
14345     TEST_f_f (tgamma, -0x2a.0000000000000000000000001p0L, -9.0223849149900332964544349077751619246306e-22L),
14346     TEST_f_f (tgamma, -0x31.fffffffffffffffffffffffffp0L, 4.1679710515150795310771069868348482819424e-35L),
14347     TEST_f_f (tgamma, -0x32.0000000000000000000000001p0L, -4.1679710515150795310771069868090576746248e-35L),
14348     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffep0L, 6.7915032994648558610510614163560656864280e-129L),
14349     TEST_f_f (tgamma, -0x64.0000000000000000000000002p0L, -6.7915032994648558610510614162572689693253e-129L),
14350     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffcp0L, 5.5468467106873795353190582463444660395353e-234L),
14351     TEST_f_f (tgamma, -0x96.0000000000000000000000004p0L, -5.5468467106873795353190582461689495693675e-234L),
14352     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffcp0L, -8.7154451775644399729745472278589884205029e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14353     TEST_f_f (tgamma, -0xb5.0000000000000000000000004p0L, 8.7154451775644399729745472275729078899858e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14354     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffcp0L, 4.7887061415189230620739270482742524864974e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14355     TEST_f_f (tgamma, -0xb6.0000000000000000000000004p0L, -4.7887061415189230620739270481168993324524e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14356     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffcp0L, -2.6167793123054224382917634143575601407067e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14357     TEST_f_f (tgamma, -0xb7.0000000000000000000000004p0L, 2.6167793123054224382917634142714845691019e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14358     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffcp0L, 1.4221626697312078468976975078030462044826e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14359     TEST_f_f (tgamma, -0xb8.0000000000000000000000004p0L, -1.4221626697312078468976975077562172247612e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14360     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffcp0L, 1.1756150745511026776007338998283058108448e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14361     TEST_f_f (tgamma, -0xbc.0000000000000000000000004p0L, -1.1756150745511026776007338997894360215107e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14362     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffcp0L, -6.2201855796354639026493857133773832713743e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14363     TEST_f_f (tgamma, -0xbd.0000000000000000000000004p0L, 6.2201855796354639026493857131715153125175e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14364     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffcp0L, 3.2737818840186652119207293228302560914295e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14365     TEST_f_f (tgamma, -0xbe.0000000000000000000000004p0L, -3.2737818840186652119207293227217957948294e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14366 # if LDBL_MAX_EXP <= 1024
14367     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14368     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14369 # else
14370     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, -1.7140219288055838805867692789687487834686e-325L),
14371     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, 1.7140219288055838805867692789119066543632e-325L),
14372 # endif
14373 #endif
14374 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14375     TEST_f_f (tgamma, 0x8.000000000000001p0L, 5.0400000000000000088113830892247051102283e+03L),
14376     TEST_f_f (tgamma, 0x7.fffffffffffffff8p0L, 5.0399999999999999955943084553876474508520e+03L),
14377     TEST_f_f (tgamma, 0x7.0000000000000008p0L, 7.2000000000000000058477733127664675369681e+02L),
14378     TEST_f_f (tgamma, 0x6.fffffffffffffff8p0L, 7.1999999999999999941522266872335324679893e+02L),
14379     TEST_f_f (tgamma, 0x6.0000000000000008p0L, 1.2000000000000000008878927116622375680433e+02L),
14380     TEST_f_f (tgamma, 0x5.fffffffffffffff8p0L, 1.1999999999999999991121072883377624326546e+02L),
14381     TEST_f_f (tgamma, 0x5.0000000000000008p0L, 2.4000000000000000015676186062072582846211e+01L),
14382     TEST_f_f (tgamma, 0x4.fffffffffffffff8p0L, 2.3999999999999999984323813937927417165027e+01L),
14383     TEST_f_f (tgamma, 0x4.0000000000000008p0L, 6.0000000000000000032685252120268430507939e+00L),
14384     TEST_f_f (tgamma, 0x3.fffffffffffffffcp0L, 5.9999999999999999983657373939865784753909e+00L),
14385     TEST_f_f (tgamma, 0x3.0000000000000004p0L, 2.0000000000000000004001939123397399171482e+00L),
14386     TEST_f_f (tgamma, 0x2.fffffffffffffffcp0L, 1.9999999999999999995998060876602600829690e+00L),
14387     TEST_f_f (tgamma, 0x2.0000000000000004p0L, 1.0000000000000000000916767389213195151634e+00L),
14388     TEST_f_f (tgamma, 0x1.fffffffffffffffep0L, 9.9999999999999999995416163053934024243282e-01L),
14389     TEST_f_f (tgamma, 0x1.0000000000000002p0L, 9.9999999999999999993741815221210931418291e-01L),
14390     TEST_f_f (tgamma, 0x0.ffffffffffffffffp0L, 1.0000000000000000000312909238939453429173e+00L),
14391     TEST_f_f (tgamma, -0x0.ffffffffffffffffp0L, -1.8446744073709551616422784335098467139470e+19L),
14392     TEST_f_f (tgamma, -0x1.0000000000000002p0L, 9.2233720368547758075772156649015328607596e+18L),
14393     TEST_f_f (tgamma, -0x1.fffffffffffffffep0L, 4.6116860184273879044613921675492335697983e+18L),
14394     TEST_f_f (tgamma, -0x2.0000000000000004p0L, -2.3058430092136939515386078324507664305064e+18L),
14395     TEST_f_f (tgamma, -0x2.fffffffffffffffcp0L, -7.6861433640456465087601961140530007887063e+17L),
14396     TEST_f_f (tgamma, -0x3.0000000000000004p0L, 7.6861433640456465045731372192803325462836e+17L),
14397     TEST_f_f (tgamma, -0x3.fffffffffffffffcp0L, 1.9215358410114116272942156951799168638773e+17L),
14398     TEST_f_f (tgamma, -0x4.0000000000000008p0L, -9.6076792050570581270578430482008313684602e+16L),
14399     TEST_f_f (tgamma, -0x4.fffffffffffffff8p0L, -1.9215358410114116280884313903598337283601e+16L),
14400     TEST_f_f (tgamma, -0x5.0000000000000008p0L, 1.9215358410114116252449019429734996071487e+16L),
14401     TEST_f_f (tgamma, -0x5.fffffffffffffff8p0L, 3.2025597350190193803788671320812043622696e+15L),
14402     TEST_f_f (tgamma, -0x6.0000000000000008p0L, -3.2025597350190193751766884234743511972877e+15L),
14403     TEST_f_f (tgamma, -0x6.fffffffffffffff8p0L, -4.5750853357414562579675426149912896787735e+14L),
14404     TEST_f_f (tgamma, -0x7.0000000000000008p0L, 4.5750853357414562499689653215166468353753e+14L),
14405     TEST_f_f (tgamma, -0x7.fffffffffffffff8p0L, 5.7188566696768203227694481100089533685959e+13L),
14406     TEST_f_f (tgamma, -0x8.000000000000001p0L, -2.8594283348384101534210280804672371201060e+13L),
14407     TEST_f_f (tgamma, -0x9.fffffffffffffffp0L, 3.1771425942649001828476427167843945971988e+11L),
14408     TEST_f_f (tgamma, -0xa.000000000000001p0L, -3.1771425942649001698860433502350057763905e+11L),
14409     TEST_f_f (tgamma, -0x13.ffffffffffffffep0L, 2.3694367893405502075347562184931828448654e-01L),
14410     TEST_f_f (tgamma, -0x14.000000000000002p0L, -2.3694367893405501827041302245929389013031e-01L),
14411     TEST_f_f (tgamma, -0x1d.ffffffffffffffep0L, 2.1732499046818166459536268654187775086902e-15L),
14412     TEST_f_f (tgamma, -0x1e.000000000000002p0L, -2.1732499046818166201837145753965837196590e-15L),
14413     TEST_f_f (tgamma, -0x27.ffffffffffffffcp0L, 3.5326017549807232935581894777156474496719e-31L),
14414     TEST_f_f (tgamma, -0x28.000000000000004p0L, -3.5326017549807232028299619269080956965758e-31L),
14415     TEST_f_f (tgamma, -0x28.ffffffffffffffcp0L, -8.6161018414163982777002940498289948893044e-33L),
14416     TEST_f_f (tgamma, -0x29.000000000000004p0L, 8.6161018414163980549537337663264762179535e-33L),
14417     TEST_f_f (tgamma, -0x29.ffffffffffffffcp0L, 2.0514528193848567329552463626090806737389e-34L),
14418     TEST_f_f (tgamma, -0x2a.000000000000004p0L, -2.0514528193848566795814269269517457847791e-34L),
14419     TEST_f_f (tgamma, -0x31.ffffffffffffffcp0L, 9.4768689712397635680446279661359728835046e-48L),
14420     TEST_f_f (tgamma, -0x32.000000000000004p0L, -9.4768689712397633101385547903658075308777e-48L),
14421     TEST_f_f (tgamma, -0x63.ffffffffffffff8p0L, 1.5442090669841618542494279375256856430049e-141L),
14422     TEST_f_f (tgamma, -0x64.000000000000008p0L, -1.5442090669841617554527108348771968070612e-141L),
14423     TEST_f_f (tgamma, -0x95.ffffffffffffffp0L, 1.2612069237291916400144732227892704713839e-246L),
14424     TEST_f_f (tgamma, -0x96.00000000000001p0L, -1.2612069237291914644980030550324645611752e-246L),
14425     TEST_f_f (tgamma, -0xb4.ffffffffffffffp0L, -1.9816628031468191243385005680879281767694e-315L),
14426     TEST_f_f (tgamma, -0xb5.00000000000001p0L, 1.9816628031468188382579700510291588022368e-315L),
14427     TEST_f_f (tgamma, -0xb5.ffffffffffffffp0L, 1.0888257160147357826865964233809723297472e-317L),
14428     TEST_f_f (tgamma, -0xb6.00000000000001p0L, -1.0888257160147356253334423783317128355514e-317L),
14429     TEST_f_f (tgamma, -0xb6.ffffffffffffffp0L, -5.9498673006269714905418984659220067091260e-320L),
14430     TEST_f_f (tgamma, -0xb7.00000000000001p0L, 5.9498673006269706297861824177538685763601e-320L),
14431     TEST_f_f (tgamma, -0xb7.ffffffffffffffp0L, 3.2336235329494410277123118903958061569834e-322L),
14432     TEST_f_f (tgamma, -0xb8.00000000000001p0L, -3.2336235329494405594225146768193434900135e-322L),
14433     TEST_f_f (tgamma, -0xbb.ffffffffffffffp0L, 2.6730392040715350119087465463119939092815e-331L),
14434     TEST_f_f (tgamma, -0xbc.00000000000001p0L, -2.6730392040715346232108532050343031951651e-331L),
14435     TEST_f_f (tgamma, -0xbc.ffffffffffffffp0L, -1.4143064571807063556111222197839950086445e-333L),
14436     TEST_f_f (tgamma, -0xbd.00000000000001p0L, 1.4143064571807061497431633629389135273431e-333L),
14437     TEST_f_f (tgamma, -0xbd.ffffffffffffffp0L, 7.4437181956879281879706555863416819210399e-336L),
14438     TEST_f_f (tgamma, -0xbe.00000000000001p0L, -7.4437181956879271033676895858841525581153e-336L),
14439     TEST_f_f (tgamma, -0xbe.ffffffffffffffp0L, -3.8972346574282346536709453101948570578636e-338L),
14440     TEST_f_f (tgamma, -0xbf.00000000000001p0L, 3.8972346574282340852496542564155275274974e-338L),
14441     TEST_f_f (tgamma, -0xf9.ffffffffffffffp0L, 2.2289142548411573883553287678043297937797e-476L),
14442     TEST_f_f (tgamma, -0xfa.00000000000001p0L, -2.2289142548411570466476165308364665814265e-476L),
14443     TEST_f_f (tgamma, -0x1f3.fffffffffffffep0L, 2.9528489142763141594943668922610562530068e-1118L),
14444     TEST_f_f (tgamma, -0x1f4.00000000000002p0L, -2.9528489142763131406565394149878256133744e-1118L),
14445     TEST_f_f (tgamma, -0x2ed.fffffffffffffcp0L, 6.9801511765871818502006905472380418430269e-1817L),
14446     TEST_f_f (tgamma, -0x2ee.00000000000004p0L, -6.9801511765871767194421856376592926002995e-1817L),
14447     TEST_f_f (tgamma, -0x3e7.fffffffffffffcp0L, 4.4768809295877296071892611539415773519036e-2552L),
14448     TEST_f_f (tgamma, -0x3e8.00000000000004p0L, -4.4768809295877261735541135972060089530309e-2552L),
14449     TEST_f_f (tgamma, -0x4e1.fffffffffffff8p0L, 5.4651488569236507565341414077911790252381e-3315L),
14450     TEST_f_f (tgamma, -0x4e2.00000000000008p0L, -5.4651488569236421026544487194247355967789e-3315L),
14451     TEST_f_f (tgamma, -0x5db.fffffffffffff8p0L, 1.8718211510339187689122114747834510481993e-4099L),
14452     TEST_f_f (tgamma, -0x5dc.00000000000008p0L, -1.8718211510339157291960718369454861898499e-4099L),
14453     TEST_f_f (tgamma, -0x6d5.fffffffffffff8p0L, 4.2925786447266492555651378780094011518063e-4902L),
14454     TEST_f_f (tgamma, -0x6d6.00000000000008p0L, -4.2925786447266421378134368786479937285900e-4902L),
14455     TEST_f_f (tgamma, -0x6e2.fffffffffffff8p0L, -2.8229173528168668283609231628661510187536e-4944L, UNDERFLOW_EXCEPTION),
14456     TEST_f_f (tgamma, -0x6e3.00000000000008p0L, 2.8229173528168621428945467532322397890424e-4944L, UNDERFLOW_EXCEPTION),
14457     TEST_f_f (tgamma, -0x6e3.fffffffffffff8p0L, 1.6002932839097884515524894602387278842659e-4947L, UNDERFLOW_EXCEPTION),
14458     TEST_f_f (tgamma, -0x6e4.00000000000008p0L, -1.6002932839097857951909742110188634438017e-4947L, UNDERFLOW_EXCEPTION),
14459     TEST_f_f (tgamma, -0x6e4.fffffffffffff8p0L, -9.0668174725767051085164382743343408095146e-4951L, UNDERFLOW_EXCEPTION),
14460     TEST_f_f (tgamma, -0x6e5.00000000000008p0L, 9.0668174725766900571689083050287838090189e-4951L, UNDERFLOW_EXCEPTION),
14461 # if LDBL_MANT_DIG <= 64
14462     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION),
14463     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION),
14464 # else
14465     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, 5.1340982290921319983501912122292601780326e-4954L, UNDERFLOW_EXCEPTION),
14466     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, -5.1340982290921234748578193083614111497314e-4954L, UNDERFLOW_EXCEPTION),
14467 # endif
14468 # if LDBL_MANT_DIG >= 113
14469     TEST_f_f (tgamma, 0x8.0000000000000000000000000008p0L, 5.0400000000000000000000000000000156521606e+03L),
14470     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffffcp0L, 5.0399999999999999999999999999999921739197e+03L),
14471     TEST_f_f (tgamma, 0x7.0000000000000000000000000004p0L, 7.2000000000000000000000000000000103877321e+02L),
14472     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffffcp0L, 7.1999999999999999999999999999999896122679e+02L),
14473     TEST_f_f (tgamma, 0x6.0000000000000000000000000004p0L, 1.2000000000000000000000000000000015772143e+02L),
14474     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffffcp0L, 1.1999999999999999999999999999999984227857e+02L),
14475     TEST_f_f (tgamma, 0x5.0000000000000000000000000004p0L, 2.4000000000000000000000000000000027846500e+01L),
14476     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffffcp0L, 2.3999999999999999999999999999999972153500e+01L),
14477     TEST_f_f (tgamma, 0x4.0000000000000000000000000004p0L, 6.0000000000000000000000000000000058060671e+00L),
14478     TEST_f_f (tgamma, 0x3.fffffffffffffffffffffffffffep0L, 5.9999999999999999999999999999999970969664e+00L),
14479     TEST_f_f (tgamma, 0x3.0000000000000000000000000002p0L, 2.0000000000000000000000000000000007108872e+00L),
14480     TEST_f_f (tgamma, 0x2.fffffffffffffffffffffffffffep0L, 1.9999999999999999999999999999999992891128e+00L),
14481     TEST_f_f (tgamma, 0x2.0000000000000000000000000002p0L, 1.0000000000000000000000000000000001628506e+00L),
14482     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffffffp0L, 9.9999999999999999999999999999999991857470e-01L),
14483     TEST_f_f (tgamma, 0x1.0000000000000000000000000001p0L, 9.9999999999999999999999999999999988883231e-01L),
14484     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffff8p0L, 1.0000000000000000000000000000000000555838e+00L),
14485     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffff8p0L, -1.0384593717069655257060992658440192422784e+34L),
14486     TEST_f_f (tgamma, -0x1.0000000000000000000000000001p0L, 5.1922968585348276285304963292200955772157e+33L),
14487     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffffffp0L, 2.5961484292674138142652481646100484613922e+33L),
14488     TEST_f_f (tgamma, -0x2.0000000000000000000000000002p0L, -1.2980742146337069071326240823050235386078e+33L),
14489     TEST_f_f (tgamma, -0x2.fffffffffffffffffffffffffffep0L, -4.3269140487790230237754136076834154268628e+32L),
14490     TEST_f_f (tgamma, -0x3.0000000000000000000000000002p0L, 4.3269140487790230237754136076834112398039e+32L),
14491     TEST_f_f (tgamma, -0x3.fffffffffffffffffffffffffffep0L, 1.0817285121947557559438534019208539608824e+32L),
14492     TEST_f_f (tgamma, -0x4.0000000000000000000000000004p0L, -5.4086425609737787797192670096042603911764e+31L),
14493     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffffcp0L, -1.0817285121947557559438534019208547550981e+31L),
14494     TEST_f_f (tgamma, -0x5.0000000000000000000000000004p0L, 1.0817285121947557559438534019208519115686e+31L),
14495     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffffcp0L, 1.8028808536579262599064223365347581566449e+30L),
14496     TEST_f_f (tgamma, -0x6.0000000000000000000000000004p0L, -1.8028808536579262599064223365347529544662e+30L),
14497     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffffcp0L, -2.5755440766541803712948890521925119357966e+29L),
14498     TEST_f_f (tgamma, -0x7.0000000000000000000000000004p0L, 2.5755440766541803712948890521925039372193e+29L),
14499     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffffcp0L, 3.2194300958177254641186113152406402297656e+28L),
14500     TEST_f_f (tgamma, -0x8.0000000000000000000000000008p0L, -1.6097150479088627320593056576203121511868e+28L),
14501     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffff8p0L, 1.7885722754542919245103396195781369922635e+26L),
14502     TEST_f_f (tgamma, -0xa.0000000000000000000000000008p0L, -1.7885722754542919245103396195781240306642e+26L),
14503     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffffffp0L, 1.3338743301940057859272772747600099590309e+14L),
14504     TEST_f_f (tgamma, -0x14.000000000000000000000000001p0L, -1.3338743301940057859272772747599851284049e+14L),
14505     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffffffp0L, 1.2234309326134994173819319571374205986026e+00L),
14506     TEST_f_f (tgamma, -0x1e.000000000000000000000000001p0L, -1.2234309326134994173819319571373948286903e+00L),
14507     TEST_f_f (tgamma, -0x27.ffffffffffffffffffffffffffep0L, 1.9886779934224431790713007246380976767855e-16L),
14508     TEST_f_f (tgamma, -0x28.000000000000000000000000002p0L, -1.9886779934224431790713007246380069485580e-16L),
14509     TEST_f_f (tgamma, -0x28.ffffffffffffffffffffffffffep0L, -4.8504341302986419001739042064343853066259e-18L),
14510     TEST_f_f (tgamma, -0x29.000000000000000000000000002p0L, 4.8504341302986419001739042064341625600656e-18L),
14511     TEST_f_f (tgamma, -0x29.ffffffffffffffffffffffffffep0L, 1.1548652691187242619461676681986633377063e-19L),
14512     TEST_f_f (tgamma, -0x2a.000000000000000000000000002p0L, -1.1548652691187242619461676681986099638869e-19L),
14513     TEST_f_f (tgamma, -0x31.ffffffffffffffffffffffffffep0L, 5.3350029459393017997786969431322287652396e-33L),
14514     TEST_f_f (tgamma, -0x32.000000000000000000000000002p0L, -5.3350029459393017997786969431319708591664e-33L),
14515     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffffcp0L, 8.6931242233150155021453586128730281632676e-127L),
14516     TEST_f_f (tgamma, -0x64.000000000000000000000000004p0L, -8.6931242233150155021453586128720401960966e-127L),
14517     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffff8p0L, 7.0999637896798458052083945552094635720486e-232L),
14518     TEST_f_f (tgamma, -0x96.000000000000000000000000008p0L, -7.0999637896798458052083945552077084073470e-232L),
14519     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffff8p0L, -1.1155769827282483165407420451477844041365e-300L),
14520     TEST_f_f (tgamma, -0xb5.000000000000000000000000008p0L, 1.1155769827282483165407420451474983236060e-300L),
14521     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffff8p0L, 6.1295438611442215194546266216911239298981e-303L),
14522     TEST_f_f (tgamma, -0xb6.000000000000000000000000008p0L, -6.1295438611442215194546266216895503983577e-303L),
14523     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffff8p0L, -3.3494775197509407210134571703230189921356e-305L),
14524     TEST_f_f (tgamma, -0xb7.000000000000000000000000008p0L, 3.3494775197509407210134571703221582364195e-305L),
14525     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffff8p0L, 1.8203682172559460440290528099581627396147e-307L),
14526     TEST_f_f (tgamma, -0xb8.000000000000000000000000008p0L, -1.8203682172559460440290528099576944498174e-307L),
14527     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffff8p0L, 1.5047872954254114273289393917555491216542e-316L),
14528     TEST_f_f (tgamma, -0xbc.000000000000000000000000008p0L, -1.5047872954254114273289393917551604237609e-316L),
14529     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffff8p0L, -7.9618375419333937953912137129923244334851e-319L),
14530     TEST_f_f (tgamma, -0xbd.000000000000000000000000008p0L, 7.9618375419333937953912137129902657538965e-319L),
14531     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffff8p0L, 4.1904408115438914712585335331538555086887e-321L),
14532     TEST_f_f (tgamma, -0xbe.000000000000000000000000008p0L, -4.1904408115438914712585335331527709057227e-321L),
14533     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffff8p0L, -2.1939480688711473671510646770439036908579e-323L),
14534     TEST_f_f (tgamma, -0xbf.000000000000000000000000008p0L, 2.1939480688711473671510646770433352695669e-323L),
14535     TEST_f_f (tgamma, -0xf9.ffffffffffffffffffffffffff8p0L, 1.2547671759429278005937024349858508569625e-461L),
14536     TEST_f_f (tgamma, -0xfa.000000000000000000000000008p0L, -1.2547671759429278005937024349855091492502e-461L),
14537     TEST_f_f (tgamma, -0x1f3.ffffffffffffffffffffffffffp0L, 1.6623061587520224800948170558276526986560e-1103L),
14538     TEST_f_f (tgamma, -0x1f4.00000000000000000000000001p0L, -1.6623061587520224800948170558266338608285e-1103L),
14539     TEST_f_f (tgamma, -0x2ed.fffffffffffffffffffffffffep0L, 3.9294757797334687313030998663853566763041e-1802L),
14540     TEST_f_f (tgamma, -0x2ee.00000000000000000000000002p0L, -3.9294757797334687313030998663802259177992e-1802L),
14541     TEST_f_f (tgamma, -0x3e7.fffffffffffffffffffffffffep0L, 2.5202599107841713834679953735597552855978e-2537L),
14542     TEST_f_f (tgamma, -0x3e8.00000000000000000000000002p0L, -2.5202599107841713834679953735563216504503e-2537L),
14543     TEST_f_f (tgamma, -0x4e1.fffffffffffffffffffffffffcp0L, 3.0766052944457032773369415396747635242705e-3300L),
14544     TEST_f_f (tgamma, -0x4e2.00000000000000000000000004p0L, -3.0766052944457032773369415396661096445778e-3300L),
14545     TEST_f_f (tgamma, -0x5db.fffffffffffffffffffffffffcp0L, 1.0537416297875703295453200836588944487917e-4084L),
14546     TEST_f_f (tgamma, -0x5dc.00000000000000000000000004p0L, -1.0537416297875703295453200836558547326520e-4084L),
14547     TEST_f_f (tgamma, -0x6d5.fffffffffffffffffffffffffcp0L, 2.4165069481061837867659591369998698607387e-4887L),
14548     TEST_f_f (tgamma, -0x6d6.00000000000000000000000004p0L, -2.4165069481061837867659591369927521090377e-4887L),
14549     TEST_f_f (tgamma, -0x6e2.fffffffffffffffffffffffffcp0L, -1.5891611922804672355414813803008070609431e-4929L),
14550     TEST_f_f (tgamma, -0x6e3.00000000000000000000000004p0L, 1.5891611922804672355414813802961215945667e-4929L),
14551     TEST_f_f (tgamma, -0x6e3.fffffffffffffffffffffffffcp0L, 9.0088502963745308137272187091882496519917e-4933L, UNDERFLOW_EXCEPTION),
14552     TEST_f_f (tgamma, -0x6e4.00000000000000000000000004p0L, -9.0088502963745308137272187091616860368392e-4933L, UNDERFLOW_EXCEPTION),
14553     TEST_f_f (tgamma, -0x6e4.fffffffffffffffffffffffffcp0L, -5.1041644738665896961627301468488672286746e-4936L, UNDERFLOW_EXCEPTION),
14554     TEST_f_f (tgamma, -0x6e5.00000000000000000000000004p0L, 5.1041644738665896961627301468338158811446e-4936L, UNDERFLOW_EXCEPTION),
14555     TEST_f_f (tgamma, -0x6e5.fffffffffffffffffffffffffcp0L, 2.8902403589278537350864836618623260468143e-4939L, UNDERFLOW_EXCEPTION),
14556     TEST_f_f (tgamma, -0x6e6.00000000000000000000000004p0L, -2.8902403589278537350864836618538025544424e-4939L, UNDERFLOW_EXCEPTION),
14557     TEST_f_f (tgamma, -0x6eb.fffffffffffffffffffffffffcp0L, 9.4152481960798287090819640211017219042636e-4959L, UNDERFLOW_EXCEPTION),
14558     TEST_f_f (tgamma, -0x6ec.00000000000000000000000004p0L, -9.4152481960798287090819640210739431797168e-4959L, UNDERFLOW_EXCEPTION),
14559     TEST_f_f (tgamma, -0x6ec.fffffffffffffffffffffffffcp0L, -5.3103486723518492437010513373388172315540e-4962L, UNDERFLOW_EXCEPTION),
14560     TEST_f_f (tgamma, -0x6ed.00000000000000000000000004p0L, 5.3103486723518492437010513373231484108489e-4962L, UNDERFLOW_EXCEPTION),
14561     TEST_f_f (tgamma, -0x6ed.fffffffffffffffffffffffffcp0L, 2.9934321715624854812294539669328172615019e-4965L, UNDERFLOW_EXCEPTION),
14562     TEST_f_f (tgamma, -0x6ee.00000000000000000000000004p0L, -2.9934321715624854812294539669239841152754e-4965L, UNDERFLOW_EXCEPTION),
14563     TEST_f_f (tgamma, -0x6ee.fffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION),
14564     TEST_f_f (tgamma, -0x6ef.00000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION),
14565 # endif
14566 #endif
14567     TEST_f_f (tgamma, -0x1.0a32a2p+5L, 1.8125267978155035272941154746083439329912e-37L),
14568 #ifndef TEST_FLOAT
14569     TEST_f_f (tgamma, -0x1.5800000080001p+7L, -3.1439271448823567326093363350637118195240e-304L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14570 #endif
14571     TEST_f_f (tgamma, 18.5L, 1.4986120533153361177371791123515513270334e+15L),
14572     TEST_f_f (tgamma, 19.5L, 2.7724322986333718178137813578503699550119e+16L),
14573     TEST_f_f (tgamma, 23.5L, 5.3613035875444147334274983856108155717836e+21L),
14574     TEST_f_f (tgamma, 29.5L, 1.6348125198274266444378807806868221866931e+30L),
14575     TEST_f_f (tgamma, 30.5L, 4.8226969334909086010917483030261254507447e+31L),
14576     TEST_f_f (tgamma, 31.5L, 1.4709225647147271233329832324229682624771e+33L),
14577     TEST_f_f (tgamma, 32.5L, 4.6334060788513904384988971821323500268029e+34L),
14578     TEST_f_f (tgamma, 33.5L, 1.5058569756267018925121415841930137587110e+36L),
14579     TEST_f_f (tgamma, 34.5L, 5.0446208683494513399156743070465960916817e+37L),
14580     TEST_f_f (tgamma, 0x2.30a43cp+4L, 3.4027979115654976101247558405326779640190e+38L),
14581 #ifdef TEST_FLOAT
14582     TEST_f_f (tgamma, 0x2.30a44p+4L, plus_infty, OVERFLOW_EXCEPTION),
14583 #else
14584     TEST_f_f (tgamma, 0x2.30a44p+4L, 3.4028438913396451054667218138127983367181e+38L),
14585 #endif
14586 #ifndef TEST_FLOAT
14587     TEST_f_f (tgamma, 0xa.b9fd72b0fb238p+4L, 1.7976931348622298700886249281842651388250e+308L),
14588 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14589     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, plus_infty, OVERFLOW_EXCEPTION),
14590 # else
14591     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, 1.7976931348624926129589466917917870782484e+308L),
14592 # endif
14593 #endif
14594 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14595     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f4p+4L, 1.7976931348623158079372897140307719334857e+308L),
14596 # if LDBL_MAX_EXP <= 1024
14597     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, plus_infty, OVERFLOW_EXCEPTION),
14598 # else
14599     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, 1.7976931348623158079372897140599422519044e+308L),
14600 # endif
14601 #endif
14602 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14603     TEST_f_f (tgamma, 0x6.db8c603359a97108p+8L, 1.1897314953572317517071551278058233700012e+4932L),
14604     TEST_f_f (tgamma, 0x6.db8c603359a9711p+8L, plus_infty, OVERFLOW_EXCEPTION),
14605 # if LDBL_MANT_DIG >= 113
14606     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfdp+8L, 1.1897314953572317650857593266265995494998e+4932L),
14607     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfd4p+8L, plus_infty, OVERFLOW_EXCEPTION),
14608 # endif
14609 #endif
14610     END_DATA (tgamma)
14611   };
14612
14613 static void
14614 tgamma_test (void)
14615 {
14616   errno = 0;
14617   FUNC(tgamma) (1);
14618   if (errno == ENOSYS)
14619     /* Function not implemented.  */
14620     return;
14621
14622   START (tgamma);
14623   RUN_TEST_LOOP_f_f (tgamma, tgamma_test_data, );
14624   END (tgamma);
14625 }
14626
14627
14628 static const struct test_f_f_data trunc_test_data[] =
14629   {
14630     START_DATA (trunc),
14631     TEST_f_f (trunc, plus_infty, plus_infty),
14632     TEST_f_f (trunc, minus_infty, minus_infty),
14633     TEST_f_f (trunc, qnan_value, qnan_value),
14634
14635     TEST_f_f (trunc, 0, 0),
14636     TEST_f_f (trunc, minus_zero, minus_zero),
14637     TEST_f_f (trunc, 0.1, 0),
14638     TEST_f_f (trunc, 0.25, 0),
14639     TEST_f_f (trunc, 0.625, 0),
14640     TEST_f_f (trunc, -0.1, minus_zero),
14641     TEST_f_f (trunc, -0.25, minus_zero),
14642     TEST_f_f (trunc, -0.625, minus_zero),
14643     TEST_f_f (trunc, 1, 1),
14644     TEST_f_f (trunc, -1, -1),
14645     TEST_f_f (trunc, 1.625, 1),
14646     TEST_f_f (trunc, -1.625, -1),
14647
14648     TEST_f_f (trunc, 1048580.625L, 1048580L),
14649     TEST_f_f (trunc, -1048580.625L, -1048580L),
14650
14651     TEST_f_f (trunc, 8388610.125L, 8388610.0L),
14652     TEST_f_f (trunc, -8388610.125L, -8388610.0L),
14653
14654     TEST_f_f (trunc, 4294967296.625L, 4294967296.0L),
14655     TEST_f_f (trunc, -4294967296.625L, -4294967296.0L),
14656
14657 #ifdef TEST_LDOUBLE
14658     /* The result can only be represented in long double.  */
14659     TEST_f_f (trunc, 4503599627370495.5L, 4503599627370495.0L),
14660     TEST_f_f (trunc, 4503599627370496.25L, 4503599627370496.0L),
14661     TEST_f_f (trunc, 4503599627370496.5L, 4503599627370496.0L),
14662     TEST_f_f (trunc, 4503599627370496.75L, 4503599627370496.0L),
14663     TEST_f_f (trunc, 4503599627370497.5L, 4503599627370497.0L),
14664
14665 # if LDBL_MANT_DIG > 100
14666     TEST_f_f (trunc, 4503599627370494.5000000000001L, 4503599627370494.0L),
14667     TEST_f_f (trunc, 4503599627370495.5000000000001L, 4503599627370495.0L),
14668     TEST_f_f (trunc, 4503599627370496.5000000000001L, 4503599627370496.0L),
14669 # endif
14670
14671     TEST_f_f (trunc, -4503599627370495.5L, -4503599627370495.0L),
14672     TEST_f_f (trunc, -4503599627370496.25L, -4503599627370496.0L),
14673     TEST_f_f (trunc, -4503599627370496.5L, -4503599627370496.0L),
14674     TEST_f_f (trunc, -4503599627370496.75L, -4503599627370496.0L),
14675     TEST_f_f (trunc, -4503599627370497.5L, -4503599627370497.0L),
14676
14677 # if LDBL_MANT_DIG > 100
14678     TEST_f_f (trunc, -4503599627370494.5000000000001L, -4503599627370494.0L),
14679     TEST_f_f (trunc, -4503599627370495.5000000000001L, -4503599627370495.0L),
14680     TEST_f_f (trunc, -4503599627370496.5000000000001L, -4503599627370496.0L),
14681 # endif
14682
14683     TEST_f_f (trunc, 9007199254740991.5L, 9007199254740991.0L),
14684     TEST_f_f (trunc, 9007199254740992.25L, 9007199254740992.0L),
14685     TEST_f_f (trunc, 9007199254740992.5L, 9007199254740992.0L),
14686     TEST_f_f (trunc, 9007199254740992.75L, 9007199254740992.0L),
14687     TEST_f_f (trunc, 9007199254740993.5L, 9007199254740993.0L),
14688
14689 # if LDBL_MANT_DIG > 100
14690     TEST_f_f (trunc, 9007199254740991.0000000000001L, 9007199254740991.0L),
14691     TEST_f_f (trunc, 9007199254740992.0000000000001L, 9007199254740992.0L),
14692     TEST_f_f (trunc, 9007199254740993.0000000000001L, 9007199254740993.0L),
14693     TEST_f_f (trunc, 9007199254740991.5000000000001L, 9007199254740991.0L),
14694     TEST_f_f (trunc, 9007199254740992.5000000000001L, 9007199254740992.0L),
14695     TEST_f_f (trunc, 9007199254740993.5000000000001L, 9007199254740993.0L),
14696 # endif
14697
14698     TEST_f_f (trunc, -9007199254740991.5L, -9007199254740991.0L),
14699     TEST_f_f (trunc, -9007199254740992.25L, -9007199254740992.0L),
14700     TEST_f_f (trunc, -9007199254740992.5L, -9007199254740992.0L),
14701     TEST_f_f (trunc, -9007199254740992.75L, -9007199254740992.0L),
14702     TEST_f_f (trunc, -9007199254740993.5L, -9007199254740993.0L),
14703
14704 # if LDBL_MANT_DIG > 100
14705     TEST_f_f (trunc, -9007199254740991.0000000000001L, -9007199254740991.0L),
14706     TEST_f_f (trunc, -9007199254740992.0000000000001L, -9007199254740992.0L),
14707     TEST_f_f (trunc, -9007199254740993.0000000000001L, -9007199254740993.0L),
14708     TEST_f_f (trunc, -9007199254740991.5000000000001L, -9007199254740991.0L),
14709     TEST_f_f (trunc, -9007199254740992.5000000000001L, -9007199254740992.0L),
14710     TEST_f_f (trunc, -9007199254740993.5000000000001L, -9007199254740993.0L),
14711 # endif
14712
14713     TEST_f_f (trunc, 72057594037927935.5L, 72057594037927935.0L),
14714     TEST_f_f (trunc, 72057594037927936.25L, 72057594037927936.0L),
14715     TEST_f_f (trunc, 72057594037927936.5L, 72057594037927936.0L),
14716     TEST_f_f (trunc, 72057594037927936.75L, 72057594037927936.0L),
14717     TEST_f_f (trunc, 72057594037927937.5L, 72057594037927937.0L),
14718
14719     TEST_f_f (trunc, -72057594037927935.5L, -72057594037927935.0L),
14720     TEST_f_f (trunc, -72057594037927936.25L, -72057594037927936.0L),
14721     TEST_f_f (trunc, -72057594037927936.5L, -72057594037927936.0L),
14722     TEST_f_f (trunc, -72057594037927936.75L, -72057594037927936.0L),
14723     TEST_f_f (trunc, -72057594037927937.5L, -72057594037927937.0L),
14724
14725     TEST_f_f (trunc, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
14726     TEST_f_f (trunc, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
14727     TEST_f_f (trunc, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
14728     TEST_f_f (trunc, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
14729     TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
14730 #endif
14731     END_DATA (trunc)
14732   };
14733
14734 static void
14735 trunc_test (void)
14736 {
14737   START (trunc);
14738   RUN_TEST_LOOP_f_f (trunc, trunc_test_data, );
14739   END (trunc);
14740 }
14741
14742 static const struct test_f_f_data y0_test_data[] =
14743   {
14744     START_DATA (y0),
14745     /* y0 is the Bessel function of the second kind of order 0 */
14746     TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION),
14747     TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION),
14748     TEST_f_f (y0, 0.0, minus_infty),
14749     TEST_f_f (y0, qnan_value, qnan_value),
14750     TEST_f_f (y0, plus_infty, 0),
14751
14752     TEST_f_f (y0, 0.125L, -1.38968062514384052915582277745018693L),
14753     TEST_f_f (y0, 0.75L, -0.137172769385772397522814379396581855L),
14754     TEST_f_f (y0, 1.0, 0.0882569642156769579829267660235151628L),
14755     TEST_f_f (y0, 1.5, 0.382448923797758843955068554978089862L),
14756     TEST_f_f (y0, 2.0, 0.510375672649745119596606592727157873L),
14757     TEST_f_f (y0, 8.0, 0.223521489387566220527323400498620359L),
14758     TEST_f_f (y0, 10.0, 0.0556711672835993914244598774101900481L),
14759
14760     TEST_f_f (y0, 0x1.3ffp+74L, 1.818984347516051243459467456433028748678e-12L),
14761
14762 #ifndef TEST_FLOAT
14763     TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
14764     TEST_f_f (y0, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
14765 #endif
14766
14767 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14768     TEST_f_f (y0, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
14769     TEST_f_f (y0, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
14770 #endif
14771
14772     TEST_f_f (y0, 0x1p-10L, -4.4865150767109739412411806297168793661098L),
14773     TEST_f_f (y0, 0x1p-20L, -8.8992283012125827603076426611387876938160L),
14774     TEST_f_f (y0, 0x1p-30L, -1.3311940304267782826037118027401817264906e+1L),
14775     TEST_f_f (y0, 0x1p-40L, -1.7724652307320814696990854700366226762563e+1L),
14776     TEST_f_f (y0, 0x1p-50L, -2.2137364310373846564919987139743760738155e+1L),
14777     TEST_f_f (y0, 0x1p-60L, -2.6550076313426878432849115782108205929120e+1L),
14778     TEST_f_f (y0, 0x1p-70L, -3.0962788316479910300778244424468159753887e+1L),
14779     TEST_f_f (y0, 0x1p-80L, -3.5375500319532942168707373066828113573541e+1L),
14780     TEST_f_f (y0, 0x1p-90L, -3.9788212322585974036636501709188067393195e+1L),
14781     TEST_f_f (y0, 0x1p-100L, -4.420092432563900590456563035154802121284e+1L),
14782     TEST_f_f (y0, 0x1p-110L, -4.861363632869203777249475899390797503250e+1L),
14783     END_DATA (y0)
14784   };
14785
14786 static void
14787 y0_test (void)
14788 {
14789   FLOAT s, c;
14790   errno = 0;
14791   FUNC (sincos) (0, &s, &c);
14792   if (errno == ENOSYS)
14793     /* Required function not implemented.  */
14794     return;
14795   FUNC(y0) (1);
14796   if (errno == ENOSYS)
14797     /* Function not implemented.  */
14798     return;
14799
14800   START (y0);
14801   RUN_TEST_LOOP_f_f (y0, y0_test_data, );
14802   END (y0);
14803 }
14804
14805
14806 static const struct test_f_f_data y1_test_data[] =
14807   {
14808     START_DATA (y1),
14809     /* y1 is the Bessel function of the second kind of order 1 */
14810     TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION),
14811     TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION),
14812     TEST_f_f (y1, 0.0, minus_infty),
14813     TEST_f_f (y1, plus_infty, 0),
14814     TEST_f_f (y1, qnan_value, qnan_value),
14815
14816     TEST_f_f (y1, 0.125L, -5.19993611253477499595928744876579921L),
14817     TEST_f_f (y1, 0.75L, -1.03759455076928541973767132140642198L),
14818     TEST_f_f (y1, 1.0, -0.781212821300288716547150000047964821L),
14819     TEST_f_f (y1, 1.5, -0.412308626973911295952829820633445323L),
14820     TEST_f_f (y1, 2.0, -0.107032431540937546888370772277476637L),
14821     TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L),
14822     TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L),
14823
14824     TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L),
14825
14826 #ifndef TEST_FLOAT
14827     TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L),
14828     TEST_f_f (y1, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L),
14829 #endif
14830
14831 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14832     TEST_f_f (y1, 0x1p16382L, 1.2193782500509000574176799046642541129387e-2466L),
14833     TEST_f_f (y1, 0x1p16383L, -9.5859502826270374691362975419147645151233e-2467L),
14834 #endif
14835
14836     TEST_f_f (y1, 0x1p-10L, -6.5190099301063115047395187618929589514382e+02L),
14837     TEST_f_f (y1, 0x1p-20L, -6.6754421443450423911167962313100637952285e+05L),
14838     TEST_f_f (y1, 0x1p-30L, -6.8356527557643159612937462812258975438856e+08L),
14839     TEST_f_f (y1, 0x1p-40L, -6.9997084219026594793707805777425993547887e+11L),
14840     TEST_f_f (y1, 0x1p-50L, -7.1677014240283233068755952926181262431559e+14L),
14841     TEST_f_f (y1, 0x1p-60L, -7.3397262582050030662406095795388448059822e+17L),
14842     TEST_f_f (y1, 0x1p-70L, -7.5158796884019231398303842094477769620063e+20L),
14843     TEST_f_f (y1, 0x1p-80L, -7.6962608009235692951863134304745236090943e+23L),
14844     TEST_f_f (y1, 0x1p-90L, -7.8809710601457349582707849528059121757126e+26L),
14845     TEST_f_f (y1, 0x1p-100L, -8.0701143655892325972692837916732540679297e+29L),
14846     TEST_f_f (y1, 0x1p-110L, -8.2637971103633741796037466026734121655600e+32L),
14847     END_DATA (y1)
14848   };
14849
14850 static void
14851 y1_test (void)
14852 {
14853   FLOAT s, c;
14854   errno = 0;
14855   FUNC (sincos) (0, &s, &c);
14856   if (errno == ENOSYS)
14857     /* Required function not implemented.  */
14858     return;
14859   FUNC(y1) (1);
14860   if (errno == ENOSYS)
14861     /* Function not implemented.  */
14862     return;
14863
14864   START (y1);
14865   RUN_TEST_LOOP_f_f (y1, y1_test_data, );
14866   END (y1);
14867 }
14868
14869
14870 static const struct test_if_f_data yn_test_data[] =
14871   {
14872     START_DATA (yn),
14873     /* yn is the Bessel function of the second kind of order n */
14874     /* yn (0, x) == y0 (x)  */
14875     TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION),
14876     TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION),
14877     TEST_if_f (yn, 0, 0.0, minus_infty),
14878     TEST_if_f (yn, 0, qnan_value, qnan_value),
14879     TEST_if_f (yn, 0, plus_infty, 0),
14880
14881     TEST_if_f (yn, 0, 0.125L, -1.38968062514384052915582277745018693L),
14882     TEST_if_f (yn, 0, 0.75L, -0.137172769385772397522814379396581855L),
14883     TEST_if_f (yn, 0, 1.0, 0.0882569642156769579829267660235151628L),
14884     TEST_if_f (yn, 0, 1.5, 0.382448923797758843955068554978089862L),
14885     TEST_if_f (yn, 0, 2.0, 0.510375672649745119596606592727157873L),
14886     TEST_if_f (yn, 0, 8.0, 0.223521489387566220527323400498620359L),
14887     TEST_if_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L),
14888
14889     /* yn (1, x) == y1 (x)  */
14890     TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION),
14891     TEST_if_f (yn, 1, 0.0, minus_infty),
14892     TEST_if_f (yn, 1, plus_infty, 0),
14893     TEST_if_f (yn, 1, qnan_value, qnan_value),
14894
14895     TEST_if_f (yn, 1, 0.125L, -5.19993611253477499595928744876579921L),
14896     TEST_if_f (yn, 1, 0.75L, -1.03759455076928541973767132140642198L),
14897     TEST_if_f (yn, 1, 1.0, -0.781212821300288716547150000047964821L),
14898     TEST_if_f (yn, 1, 1.5, -0.412308626973911295952829820633445323L),
14899     TEST_if_f (yn, 1, 2.0, -0.107032431540937546888370772277476637L),
14900     TEST_if_f (yn, 1, 8.0, -0.158060461731247494255555266187483550L),
14901     TEST_if_f (yn, 1, 10.0, 0.249015424206953883923283474663222803L),
14902
14903     /* yn (3, x)  */
14904     TEST_if_f (yn, 3, plus_infty, 0),
14905     TEST_if_f (yn, 3, qnan_value, qnan_value),
14906
14907     TEST_if_f (yn, 3, 0.125L, -2612.69757350066712600220955744091741L),
14908     TEST_if_f (yn, 3, 0.75L, -12.9877176234475433186319774484809207L),
14909     TEST_if_f (yn, 3, 1.0, -5.82151760596472884776175706442981440L),
14910     TEST_if_f (yn, 3, 2.0, -1.12778377684042778608158395773179238L),
14911     TEST_if_f (yn, 3, 10.0, -0.251362657183837329779204747654240998L),
14912
14913     /* yn (10, x)  */
14914     TEST_if_f (yn, 10, plus_infty, 0),
14915     TEST_if_f (yn, 10, qnan_value, qnan_value),
14916
14917     TEST_if_f (yn, 10, 0.125L, -127057845771019398.252538486899753195L),
14918     TEST_if_f (yn, 10, 0.75L, -2133501638.90573424452445412893839236L),
14919     TEST_if_f (yn, 10, 1.0, -121618014.278689189288130426667971145L),
14920     TEST_if_f (yn, 10, 2.0, -129184.542208039282635913145923304214L),
14921     TEST_if_f (yn, 10, 10.0, -0.359814152183402722051986577343560609L),
14922
14923     /* Check whether yn returns correct value for LDBL_MIN, DBL_MIN,
14924        and FLT_MIN.  See Bug 14173.  */
14925     TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION),
14926
14927     TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14928     END_DATA (yn)
14929   };
14930
14931 static void
14932 yn_test (void)
14933 {
14934   FLOAT s, c;
14935   errno = 0;
14936   FUNC (sincos) (0, &s, &c);
14937   if (errno == ENOSYS)
14938     /* Required function not implemented.  */
14939     return;
14940   FUNC(yn) (1, 1);
14941   if (errno == ENOSYS)
14942     /* Function not implemented.  */
14943     return;
14944
14945   START (yn);
14946   RUN_TEST_LOOP_if_f (yn, yn_test_data, );
14947   END (yn);
14948 }
14949
14950
14951 static const struct test_f_f_data significand_test_data[] =
14952   {
14953     START_DATA (significand),
14954     /* significand returns the mantissa of the exponential representation.  */
14955     /* TODO: missing +/-Inf as well as qNaN tests.  */
14956     TEST_f_f (significand, 4.0, 1.0),
14957     TEST_f_f (significand, 6.0, 1.5),
14958     TEST_f_f (significand, 8.0, 1.0),
14959     END_DATA (significand)
14960   };
14961
14962 static void
14963 significand_test (void)
14964 {
14965   START (significand);
14966   RUN_TEST_LOOP_f_f (significand, significand_test_data, );
14967   END (significand);
14968 }
14969
14970
14971 static void
14972 initialize (void)
14973 {
14974   fpstack_test ("start *init*");
14975
14976   /* Clear all exceptions.  From now on we must not get random exceptions.  */
14977   feclearexcept (FE_ALL_EXCEPT);
14978   errno = 0;
14979
14980   /* Test to make sure we start correctly.  */
14981   fpstack_test ("end *init*");
14982 }
14983
14984 /* Definitions of arguments for argp functions.  */
14985 static const struct argp_option options[] =
14986 {
14987   { "verbose", 'v', "NUMBER", 0, "Level of verbosity (0..3)"},
14988   { "ulps-file", 'u', NULL, 0, "Output ulps to file ULPs"},
14989   { "no-max-error", 'f', NULL, 0,
14990     "Don't output maximal errors of functions"},
14991   { "no-points", 'p', NULL, 0,
14992     "Don't output results of functions invocations"},
14993   { "ignore-max-ulp", 'i', "yes/no", 0,
14994     "Ignore given maximal errors"},
14995   { "output-dir", 'o', "DIR", 0,
14996     "Directory where generated files will be placed"},
14997   { NULL, 0, NULL, 0, NULL }
14998 };
14999
15000 /* Short description of program.  */
15001 static const char doc[] = "Math test suite: " TEST_MSG ;
15002
15003 /* Prototype for option handler.  */
15004 static error_t parse_opt (int key, char *arg, struct argp_state *state);
15005
15006 /* Data structure to communicate with argp functions.  */
15007 static struct argp argp =
15008 {
15009   options, parse_opt, NULL, doc,
15010 };
15011
15012
15013 /* Handle program arguments.  */
15014 static error_t
15015 parse_opt (int key, char *arg, struct argp_state *state)
15016 {
15017   switch (key)
15018     {
15019     case 'f':
15020       output_max_error = 0;
15021       break;
15022     case 'i':
15023       if (strcmp (arg, "yes") == 0)
15024         ignore_max_ulp = 1;
15025       else if (strcmp (arg, "no") == 0)
15026         ignore_max_ulp = 0;
15027       break;
15028     case 'o':
15029       output_dir = (char *) malloc (strlen (arg) + 1);
15030       if (output_dir != NULL)
15031         strcpy (output_dir, arg);
15032       else
15033         return errno;
15034       break;
15035     case 'p':
15036       output_points = 0;
15037       break;
15038     case 'u':
15039       output_ulps = 1;
15040       break;
15041     case 'v':
15042       if (optarg)
15043         verbose = (unsigned int) strtoul (optarg, NULL, 0);
15044       else
15045         verbose = 3;
15046       break;
15047     default:
15048       return ARGP_ERR_UNKNOWN;
15049     }
15050   return 0;
15051 }
15052
15053 #if 0
15054 /* function to check our ulp calculation.  */
15055 void
15056 check_ulp (void)
15057 {
15058   int i;
15059
15060   FLOAT u, diff, ulp;
15061   /* This gives one ulp.  */
15062   u = FUNC(nextafter) (10, 20);
15063   check_equal (10.0, u, 1, &diff, &ulp);
15064   printf ("One ulp: % .4" PRINTF_NEXPR "\n", ulp);
15065
15066   /* This gives one more ulp.  */
15067   u = FUNC(nextafter) (u, 20);
15068   check_equal (10.0, u, 2, &diff, &ulp);
15069   printf ("two ulp: % .4" PRINTF_NEXPR "\n", ulp);
15070
15071   /* And now calculate 100 ulp.  */
15072   for (i = 2; i < 100; i++)
15073     u = FUNC(nextafter) (u, 20);
15074   check_equal (10.0, u, 100, &diff, &ulp);
15075   printf ("100 ulp: % .4" PRINTF_NEXPR "\n", ulp);
15076 }
15077 #endif
15078
15079 int
15080 main (int argc, char **argv)
15081 {
15082
15083   int remaining;
15084   char *ulps_file_path;
15085   size_t dir_len = 0;
15086
15087   verbose = 1;
15088   output_ulps = 0;
15089   output_max_error = 1;
15090   output_points = 1;
15091   output_dir = NULL;
15092   /* XXX set to 0 for releases.  */
15093   ignore_max_ulp = 0;
15094
15095   /* Parse and process arguments.  */
15096   argp_parse (&argp, argc, argv, 0, &remaining, NULL);
15097
15098   if (remaining != argc)
15099     {
15100       fprintf (stderr, "wrong number of arguments");
15101       argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
15102       exit (EXIT_FAILURE);
15103     }
15104
15105   if (output_ulps)
15106     {
15107       if (output_dir != NULL)
15108         dir_len = strlen (output_dir);
15109       ulps_file_path = (char *) malloc (dir_len + strlen (ulps_file_name) + 1);
15110       if (ulps_file_path == NULL)
15111         {
15112           perror ("can't allocate path for `ULPs' file: ");
15113           exit (1);
15114         }
15115       sprintf (ulps_file_path, "%s%s", output_dir == NULL ? "" : output_dir, ulps_file_name);
15116       ulps_file = fopen (ulps_file_path, "a");
15117       if (ulps_file == NULL)
15118         {
15119           perror ("can't open file `ULPs' for writing: ");
15120           exit (1);
15121         }
15122     }
15123
15124
15125   initialize ();
15126   printf (TEST_MSG);
15127
15128 #if 0
15129   check_ulp ();
15130 #endif
15131
15132   /* Keep the tests a wee bit ordered (according to ISO C99).  */
15133   /* Classification macros:  */
15134   finite_test ();
15135   fpclassify_test ();
15136   isfinite_test ();
15137   isinf_test ();
15138   isnan_test ();
15139   isnormal_test ();
15140   issignaling_test ();
15141   signbit_test ();
15142
15143   /* Trigonometric functions:  */
15144   acos_test ();
15145   acos_test_tonearest ();
15146   acos_test_towardzero ();
15147   acos_test_downward ();
15148   acos_test_upward ();
15149   asin_test ();
15150   asin_test_tonearest ();
15151   asin_test_towardzero ();
15152   asin_test_downward ();
15153   asin_test_upward ();
15154   atan_test ();
15155   atan2_test ();
15156   cos_test ();
15157   cos_test_tonearest ();
15158   cos_test_towardzero ();
15159   cos_test_downward ();
15160   cos_test_upward ();
15161   sin_test ();
15162   sin_test_tonearest ();
15163   sin_test_towardzero ();
15164   sin_test_downward ();
15165   sin_test_upward ();
15166   sincos_test ();
15167   tan_test ();
15168   tan_test_tonearest ();
15169   tan_test_towardzero ();
15170   tan_test_downward ();
15171   tan_test_upward ();
15172
15173   /* Hyperbolic functions:  */
15174   acosh_test ();
15175   asinh_test ();
15176   atanh_test ();
15177   cosh_test ();
15178   cosh_test_tonearest ();
15179   cosh_test_towardzero ();
15180   cosh_test_downward ();
15181   cosh_test_upward ();
15182   sinh_test ();
15183   sinh_test_tonearest ();
15184   sinh_test_towardzero ();
15185   sinh_test_downward ();
15186   sinh_test_upward ();
15187   tanh_test ();
15188
15189   /* Exponential and logarithmic functions:  */
15190   exp_test ();
15191   exp_test_tonearest ();
15192   exp_test_towardzero ();
15193   exp_test_downward ();
15194   exp_test_upward ();
15195   exp10_test ();
15196   exp2_test ();
15197   expm1_test ();
15198   frexp_test ();
15199   ldexp_test ();
15200   log_test ();
15201   log10_test ();
15202   log1p_test ();
15203   log2_test ();
15204   logb_test ();
15205   logb_test_downward ();
15206   modf_test ();
15207   ilogb_test ();
15208   scalb_test ();
15209   scalbn_test ();
15210   scalbln_test ();
15211   significand_test ();
15212
15213   /* Power and absolute value functions:  */
15214   cbrt_test ();
15215   fabs_test ();
15216   hypot_test ();
15217   pow_test ();
15218   pow_test_tonearest ();
15219   pow_test_towardzero ();
15220   pow_test_downward ();
15221   pow_test_upward ();
15222   sqrt_test ();
15223
15224   /* Error and gamma functions:  */
15225   erf_test ();
15226   erfc_test ();
15227   gamma_test ();
15228   lgamma_test ();
15229   tgamma_test ();
15230
15231   /* Nearest integer functions:  */
15232   ceil_test ();
15233   floor_test ();
15234   nearbyint_test ();
15235   rint_test ();
15236   rint_test_tonearest ();
15237   rint_test_towardzero ();
15238   rint_test_downward ();
15239   rint_test_upward ();
15240   lrint_test ();
15241   lrint_test_tonearest ();
15242   lrint_test_towardzero ();
15243   lrint_test_downward ();
15244   lrint_test_upward ();
15245   llrint_test ();
15246   llrint_test_tonearest ();
15247   llrint_test_towardzero ();
15248   llrint_test_downward ();
15249   llrint_test_upward ();
15250   round_test ();
15251   lround_test ();
15252   llround_test ();
15253   trunc_test ();
15254
15255   /* Remainder functions:  */
15256   fmod_test ();
15257   remainder_test ();
15258   remquo_test ();
15259
15260   /* Manipulation functions:  */
15261   copysign_test ();
15262   nextafter_test ();
15263   nexttoward_test ();
15264
15265   /* maximum, minimum and positive difference functions */
15266   fdim_test ();
15267   fmax_test ();
15268   fmin_test ();
15269
15270   /* Multiply and add:  */
15271   fma_test ();
15272   fma_test_towardzero ();
15273   fma_test_downward ();
15274   fma_test_upward ();
15275
15276   /* Comparison macros:  */
15277   isgreater_test ();
15278   isgreaterequal_test ();
15279   isless_test ();
15280   islessequal_test ();
15281   islessgreater_test ();
15282   isunordered_test ();
15283
15284   /* Complex functions:  */
15285   cabs_test ();
15286   cacos_test ();
15287   cacosh_test ();
15288   carg_test ();
15289   casin_test ();
15290   casinh_test ();
15291   catan_test ();
15292   catanh_test ();
15293   ccos_test ();
15294   ccosh_test ();
15295   cexp_test ();
15296   cimag_test ();
15297   clog10_test ();
15298   clog_test ();
15299   conj_test ();
15300   cpow_test ();
15301   cproj_test ();
15302   creal_test ();
15303   csin_test ();
15304   csinh_test ();
15305   csqrt_test ();
15306   ctan_test ();
15307   ctan_test_tonearest ();
15308   ctan_test_towardzero ();
15309   ctan_test_downward ();
15310   ctan_test_upward ();
15311   ctanh_test ();
15312   ctanh_test_tonearest ();
15313   ctanh_test_towardzero ();
15314   ctanh_test_downward ();
15315   ctanh_test_upward ();
15316
15317   /* Bessel functions:  */
15318   j0_test ();
15319   j1_test ();
15320   jn_test ();
15321   y0_test ();
15322   y1_test ();
15323   yn_test ();
15324
15325   if (output_ulps)
15326     fclose (ulps_file);
15327
15328   printf ("\nTest suite completed:\n");
15329   printf ("  %d test cases plus %d tests for exception flags and\n"
15330           "    %d tests for errno executed.\n",
15331           noTests, noExcTests, noErrnoTests);
15332   if (noErrors)
15333     {
15334       printf ("  %d errors occurred.\n", noErrors);
15335       return 1;
15336     }
15337   printf ("  All tests passed successfully.\n");
15338
15339   return 0;
15340 }
15341
15342 /*
15343  * Local Variables:
15344  * mode:c
15345  * End:
15346  */