Convert TEST_ff_i tests from code to data.
[platform/upstream/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   int 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   int max_ulp;
990   int exceptions;
991 };
992 struct test_ff_i_data
993 {
994   const char *test_name;
995   FLOAT arg1, arg2;
996   int expected;
997   int max_ulp;
998   int exceptions;
999 };
1000
1001 /* Set the rounding mode, or restore the saved value.  */
1002 #define IF_ROUND_INIT_  /* Empty.  */
1003 #define IF_ROUND_INIT_FE_DOWNWARD               \
1004   int save_round_mode = fegetround ();          \
1005   if (fesetround (FE_DOWNWARD) == 0)
1006 #define IF_ROUND_INIT_FE_TONEAREST              \
1007   int save_round_mode = fegetround ();          \
1008   if (fesetround (FE_TONEAREST) == 0)
1009 #define IF_ROUND_INIT_FE_TOWARDZERO             \
1010   int save_round_mode = fegetround ();          \
1011   if (fesetround (FE_TOWARDZERO) == 0)
1012 #define IF_ROUND_INIT_FE_UPWARD                 \
1013   int save_round_mode = fegetround ();          \
1014   if (fesetround (FE_UPWARD) == 0)
1015 #define ROUND_RESTORE_  /* Empty.  */
1016 #define ROUND_RESTORE_FE_DOWNWARD               \
1017   fesetround (save_round_mode)
1018 #define ROUND_RESTORE_FE_TONEAREST              \
1019   fesetround (save_round_mode)
1020 #define ROUND_RESTORE_FE_TOWARDZERO             \
1021   fesetround (save_round_mode)
1022 #define ROUND_RESTORE_FE_UPWARD                 \
1023   fesetround (save_round_mode)
1024
1025 /* Run an individual test, including any required setup and checking
1026    of results, or loop over all tests in an array.  */
1027 #define RUN_TEST_f_f(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1028                      MAX_ULP, EXCEPTIONS)                       \
1029   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,     \
1030                MAX_ULP, EXCEPTIONS)
1031 #define RUN_TEST_LOOP_f_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1032   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1033     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1034       RUN_TEST_f_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,    \
1035                     (ARRAY)[i].expected, (ARRAY)[i].max_ulp,            \
1036                     (ARRAY)[i].exceptions);                             \
1037   ROUND_RESTORE_ ## ROUNDING_MODE
1038 #define RUN_TEST_2_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
1039                      MAX_ULP, EXCEPTIONS)                               \
1040   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2), EXPECTED,      \
1041                MAX_ULP, EXCEPTIONS)
1042 #define RUN_TEST_LOOP_2_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1043   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1044     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1045       RUN_TEST_2_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1,   \
1046                     (ARRAY)[i].arg2, (ARRAY)[i].expected,               \
1047                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1048   ROUND_RESTORE_ ## ROUNDING_MODE
1049 #define RUN_TEST_ff_f RUN_TEST_2_f
1050 #define RUN_TEST_LOOP_ff_f RUN_TEST_LOOP_2_f
1051 #define RUN_TEST_fi_f RUN_TEST_2_f
1052 #define RUN_TEST_LOOP_fi_f RUN_TEST_LOOP_2_f
1053 #define RUN_TEST_fl_f RUN_TEST_2_f
1054 #define RUN_TEST_LOOP_fl_f RUN_TEST_LOOP_2_f
1055 #define RUN_TEST_if_f RUN_TEST_2_f
1056 #define RUN_TEST_LOOP_if_f RUN_TEST_LOOP_2_f
1057 #define RUN_TEST_fff_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, ARG3,  \
1058                        EXPECTED, MAX_ULP, EXCEPTIONS)           \
1059   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2, ARG3),  \
1060                EXPECTED, MAX_ULP, EXCEPTIONS)
1061 #define RUN_TEST_LOOP_fff_f(FUNC_NAME, ARRAY, ROUNDING_MODE)            \
1062   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1063     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1064       RUN_TEST_fff_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1, \
1065                       (ARRAY)[i].arg2, (ARRAY)[i].arg3,                 \
1066                       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,          \
1067                       (ARRAY)[i].exceptions);                           \
1068   ROUND_RESTORE_ ## ROUNDING_MODE
1069 #define RUN_TEST_c_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
1070                      MAX_ULP, EXCEPTIONS)                               \
1071   check_float (TEST_NAME,                                               \
1072                FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1, ARG2)),           \
1073                EXPECTED, MAX_ULP, EXCEPTIONS)
1074 #define RUN_TEST_LOOP_c_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1075   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1076     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1077       RUN_TEST_c_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].argr,   \
1078                     (ARRAY)[i].argc, (ARRAY)[i].expected,               \
1079                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1080   ROUND_RESTORE_ ## ROUNDING_MODE
1081 #define RUN_TEST_f_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,              \
1082                       MAX_ULP, EXCEPTIONS,                              \
1083                       EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,    \
1084                       EXTRA_EXPECTED, EXTRA_ULP)                        \
1085   do                                                                    \
1086     {                                                                   \
1087       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1088       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,         \
1089                    MAX_ULP, EXCEPTIONS);                                \
1090       if (EXTRA_TEST)                                                   \
1091         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1092                    EXTRA_ULP, 0);                                       \
1093     }                                                                   \
1094   while (0)
1095 #define RUN_TEST_LOOP_f_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR)  \
1096   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1097     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1098       RUN_TEST_f_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,   \
1099                      (ARRAY)[i].expected, (ARRAY)[i].max_ulp,           \
1100                      (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,      \
1101                      EXTRA_VAR, (ARRAY)[i].extra_init,                  \
1102                      (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected,  \
1103                      (ARRAY)[i].extra_ulp);                             \
1104   ROUND_RESTORE_ ## ROUNDING_MODE
1105 #define RUN_TEST_fF_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
1106                        MAX_ULP, EXCEPTIONS,                             \
1107                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
1108                        EXTRA_EXPECTED, EXTRA_ULP)                       \
1109   do                                                                    \
1110     {                                                                   \
1111       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1112       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1113                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1114       if (EXTRA_TEST)                                                   \
1115         check_float (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,             \
1116                      EXTRA_ULP, 0);                                     \
1117     }                                                                   \
1118   while (0)
1119 #define RUN_TEST_LOOP_fF_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR) \
1120   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1121     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1122       RUN_TEST_fF_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,  \
1123                       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,          \
1124                       (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,     \
1125                       EXTRA_VAR, (ARRAY)[i].extra_init,                 \
1126                       (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected, \
1127                       (ARRAY)[i].extra_ulp);                            \
1128   ROUND_RESTORE_ ## ROUNDING_MODE
1129 #define RUN_TEST_fI_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
1130                        MAX_ULP, EXCEPTIONS,                             \
1131                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
1132                        EXTRA_EXPECTED, EXTRA_ULP)                       \
1133   do                                                                    \
1134     {                                                                   \
1135       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1136       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1137                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1138       if (EXTRA_TEST)                                                   \
1139         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1140                    EXTRA_ULP, 0);                                       \
1141     }                                                                   \
1142   while (0)
1143 #define RUN_TEST_LOOP_fI_f1(FUNC_NAME, ARRAY, ROUNDING_MODE, EXTRA_VAR) \
1144   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1145     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1146       RUN_TEST_fI_f1 ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,  \
1147                       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,          \
1148                       (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,     \
1149                       EXTRA_VAR, (ARRAY)[i].extra_init,                 \
1150                       (ARRAY)[i].extra_test, (ARRAY)[i].extra_expected, \
1151                       (ARRAY)[i].extra_ulp);                            \
1152   ROUND_RESTORE_ ## ROUNDING_MODE
1153 #define RUN_TEST_ffI_f1(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,     \
1154                         MAX_ULP, EXCEPTIONS,                            \
1155                         EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,  \
1156                         EXTRA_EXPECTED, EXTRA_ULP)                      \
1157   do                                                                    \
1158     {                                                                   \
1159       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1160       check_float (TEST_NAME,                                           \
1161                    FUNC (FUNC_NAME) (ARG1, ARG2, &(EXTRA_VAR)),         \
1162                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1163       if (EXTRA_TEST)                                                   \
1164         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1165                    EXTRA_ULP, 0);                                       \
1166     }                                                                   \
1167   while (0)
1168 #define RUN_TEST_LOOP_ffI_f1(FUNC_NAME, ARRAY, ROUNDING_MODE,           \
1169                              EXTRA_VAR)                                 \
1170   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1171     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1172       RUN_TEST_ffI_f1 ((ARRAY)[i].test_name, FUNC_NAME,                 \
1173                        (ARRAY)[i].arg1, (ARRAY)[i].arg2,                \
1174                        (ARRAY)[i].expected, (ARRAY)[i].max_ulp,         \
1175                        (ARRAY)[i].exceptions, (ARRAY)[i].extra_name,    \
1176                        EXTRA_VAR, (ARRAY)[i].extra_init,                \
1177                        (ARRAY)[i].extra_test,                           \
1178                        (ARRAY)[i].extra_expected,                       \
1179                        (ARRAY)[i].extra_ulp);                           \
1180   ROUND_RESTORE_ ## ROUNDING_MODE
1181 #define RUN_TEST_c_c(TEST_NAME, FUNC_NAME, ARGR, ARGC, EXPR, EXPC,      \
1182                      MAX_ULP, EXCEPTIONS)                               \
1183   check_complex (TEST_NAME,                                             \
1184                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARGR, ARGC)),         \
1185                  BUILD_COMPLEX (EXPR, EXPC),                            \
1186                  MAX_ULP, EXCEPTIONS)
1187 #define RUN_TEST_LOOP_c_c(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1188   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1189     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1190       RUN_TEST_c_c ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].argr,   \
1191                     (ARRAY)[i].argc, (ARRAY)[i].expr, (ARRAY)[i].expc,  \
1192                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1193   ROUND_RESTORE_ ## ROUNDING_MODE
1194 #define RUN_TEST_cc_c(TEST_NAME, FUNC_NAME, ARG1R, ARG1C, ARG2R, ARG2C, \
1195                       EXPR, EXPC, MAX_ULP, EXCEPTIONS)                  \
1196   check_complex (TEST_NAME,                                             \
1197                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1R, ARG1C),        \
1198                                    BUILD_COMPLEX (ARG2R, ARG2C)),       \
1199                  BUILD_COMPLEX (EXPR, EXPC),                            \
1200                  MAX_ULP, EXCEPTIONS)
1201 #define RUN_TEST_f_i(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1202                      MAX_ULP, EXCEPTIONS)                       \
1203   check_int (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,       \
1204              MAX_ULP, EXCEPTIONS)
1205 #define RUN_TEST_LOOP_f_i(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1206   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1207     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1208       RUN_TEST_f_i ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,    \
1209                     (ARRAY)[i].expected, (ARRAY)[i].max_ulp,            \
1210                     (ARRAY)[i].exceptions);                             \
1211   ROUND_RESTORE_ ## ROUNDING_MODE
1212 #define RUN_TEST_f_i_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1213                         MAX_ULP, EXCEPTIONS)                    \
1214   check_int (TEST_NAME, FUNC_NAME (ARG), EXPECTED,              \
1215              MAX_ULP, EXCEPTIONS)
1216 #define RUN_TEST_LOOP_f_i_tg(FUNC_NAME, ARRAY, ROUNDING_MODE)           \
1217   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1218     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1219       RUN_TEST_f_i_tg ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg, \
1220                        (ARRAY)[i].expected, (ARRAY)[i].max_ulp,         \
1221                        (ARRAY)[i].exceptions);                          \
1222   ROUND_RESTORE_ ## ROUNDING_MODE
1223 #define RUN_TEST_ff_i_tg(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,    \
1224                          MAX_ULP, EXCEPTIONS)                           \
1225   check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED,               \
1226              MAX_ULP, EXCEPTIONS)
1227 #define RUN_TEST_LOOP_ff_i_tg(FUNC_NAME, ARRAY, ROUNDING_MODE)          \
1228   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1229     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1230       RUN_TEST_ff_i_tg ((ARRAY)[i].test_name, FUNC_NAME,                \
1231                         (ARRAY)[i].arg1, (ARRAY)[i].arg2,               \
1232                         (ARRAY)[i].expected, (ARRAY)[i].max_ulp,        \
1233                         (ARRAY)[i].exceptions);                         \
1234   ROUND_RESTORE_ ## ROUNDING_MODE
1235 #define RUN_TEST_f_b(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1236                      MAX_ULP, EXCEPTIONS)                       \
1237   check_bool (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1238               MAX_ULP, EXCEPTIONS)
1239 #define RUN_TEST_f_b_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1240                         MAX_ULP, EXCEPTIONS)                    \
1241   check_bool (TEST_NAME, FUNC_NAME (ARG), EXPECTED,             \
1242               MAX_ULP, EXCEPTIONS)
1243 #define RUN_TEST_f_l(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1244                      MAX_ULP, EXCEPTIONS)                       \
1245   check_long (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1246               MAX_ULP, EXCEPTIONS)
1247 #define RUN_TEST_f_L(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1248                      MAX_ULP, EXCEPTIONS)                       \
1249   check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,  \
1250                   MAX_ULP, EXCEPTIONS)
1251 #define RUN_TEST_sincos(ARG, TEST_NAME_SIN, SIN_RES_VAR, EXPECTED_SIN,  \
1252                         MAX_ULP_SIN, TEST_NAME_COS, COS_RES_VAR,        \
1253                         EXPECTED_COS, MAX_ULP_COS, EXCEPTIONS)          \
1254   do                                                                    \
1255     {                                                                   \
1256       FUNC (sincos) (ARG, &(SIN_RES_VAR), &(COS_RES_VAR));              \
1257       check_float (TEST_NAME_SIN, SIN_RES_VAR,                          \
1258                    EXPECTED_SIN, MAX_ULP_SIN, EXCEPTIONS);              \
1259       check_float (TEST_NAME_COS, COS_RES_VAR,                          \
1260                    EXPECTED_COS, MAX_ULP_COS, 0);                       \
1261     }                                                                   \
1262   while (0)
1263
1264
1265
1266 /* This is to prevent messages from the SVID libm emulation.  */
1267 int
1268 matherr (struct exception *x __attribute__ ((unused)))
1269 {
1270   return 1;
1271 }
1272
1273
1274 /****************************************************************************
1275   Tests for single functions of libm.
1276   Please keep them alphabetically sorted!
1277 ****************************************************************************/
1278
1279 static const struct test_f_f_data acos_test_data[] =
1280   {
1281     START_DATA (acos),
1282     TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION),
1283     TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION),
1284     TEST_f_f (acos, qnan_value, qnan_value),
1285
1286     /* |x| > 1: */
1287     TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION),
1288     TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION),
1289     TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION),
1290     TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION),
1291
1292     TEST_f_f (acos, 0, M_PI_2l),
1293     TEST_f_f (acos, minus_zero, M_PI_2l),
1294     TEST_f_f (acos, 1, 0),
1295     TEST_f_f (acos, -1, M_PIl),
1296     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1297     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1298     TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L),
1299     TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L),
1300     TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L),
1301     TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L),
1302     TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L),
1303 #ifndef TEST_FLOAT
1304     TEST_f_f (acos, 0x0.ffffffff8p0L, 1.5258789062648029736620564947844627548516e-5L),
1305     TEST_f_f (acos, -0x0.ffffffff8p0L, 3.1415773948007305904329067627145550395696L),
1306     TEST_f_f (acos, 0x0.ffffffffffffp0L, 8.4293697021788088529885473244391795127130e-8L),
1307     TEST_f_f (acos, -0x0.ffffffffffffp0L, 3.1415925692960962166745548533940296398054L),
1308 #endif
1309 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1310     TEST_f_f (acos, 0x0.ffffffffffffffffp0L, 3.2927225399135962333718255320079907245059e-10L),
1311     TEST_f_f (acos, -0x0.ffffffffffffffffp0L, 3.1415926532605209844712837599423203309964L),
1312 #endif
1313     END_DATA (acos)
1314   };
1315
1316 static void
1317 acos_test (void)
1318 {
1319   errno = 0;
1320   FUNC(acos) (0);
1321   if (errno == ENOSYS)
1322     /* Function not implemented.  */
1323     return;
1324
1325   START (acos);
1326   RUN_TEST_LOOP_f_f (acos, acos_test_data, );
1327   END (acos);
1328 }
1329
1330
1331 static const struct test_f_f_data acos_tonearest_test_data[] =
1332   {
1333     START_DATA (acos_tonearest),
1334     TEST_f_f (acos, 0, M_PI_2l),
1335     TEST_f_f (acos, minus_zero, M_PI_2l),
1336     TEST_f_f (acos, 1, 0),
1337     TEST_f_f (acos, -1, M_PIl),
1338     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1339     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1340     END_DATA (acos_tonearest)
1341   };
1342
1343 static void
1344 acos_test_tonearest (void)
1345 {
1346   errno = 0;
1347   FUNC(acos) (0);
1348   if (errno == ENOSYS)
1349     /* Function not implemented.  */
1350     return;
1351
1352   START (acos_tonearest);
1353   RUN_TEST_LOOP_f_f (acos, acos_tonearest_test_data, FE_TONEAREST);
1354   END (acos_tonearest);
1355 }
1356
1357
1358 static const struct test_f_f_data acos_towardzero_test_data[] =
1359   {
1360     START_DATA (acos_towardzero),
1361     TEST_f_f (acos, 0, M_PI_2l),
1362     TEST_f_f (acos, minus_zero, M_PI_2l),
1363     TEST_f_f (acos, 1, 0),
1364     TEST_f_f (acos, -1, M_PIl),
1365     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1366     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1367     END_DATA (acos_towardzero)
1368   };
1369
1370 static void
1371 acos_test_towardzero (void)
1372 {
1373   errno = 0;
1374   FUNC(acos) (0);
1375   if (errno == ENOSYS)
1376     /* Function not implemented.  */
1377     return;
1378
1379   START (acos_towardzero);
1380   RUN_TEST_LOOP_f_f (acos, acos_towardzero_test_data, FE_TOWARDZERO);
1381   END (acos_towardzero);
1382 }
1383
1384
1385 static const struct test_f_f_data acos_downward_test_data[] =
1386   {
1387     START_DATA (acos_downward),
1388     TEST_f_f (acos, 0, M_PI_2l),
1389     TEST_f_f (acos, minus_zero, M_PI_2l),
1390     TEST_f_f (acos, 1, 0),
1391     TEST_f_f (acos, -1, M_PIl),
1392     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1393     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1394     END_DATA (acos_downward)
1395   };
1396
1397 static void
1398 acos_test_downward (void)
1399 {
1400   errno = 0;
1401   FUNC(acos) (0);
1402   if (errno == ENOSYS)
1403     /* Function not implemented.  */
1404     return;
1405
1406   START (acos_downward);
1407   RUN_TEST_LOOP_f_f (acos, acos_downward_test_data, FE_DOWNWARD);
1408   END (acos_downward);
1409 }
1410
1411
1412 static const struct test_f_f_data acos_upward_test_data[] =
1413   {
1414     START_DATA (acos_upward),
1415     TEST_f_f (acos, 0, M_PI_2l),
1416     TEST_f_f (acos, minus_zero, M_PI_2l),
1417     TEST_f_f (acos, 1, 0),
1418     TEST_f_f (acos, -1, M_PIl),
1419     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1420     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1421     END_DATA (acos_upward)
1422   };
1423
1424 static void
1425 acos_test_upward (void)
1426 {
1427   errno = 0;
1428   FUNC(acos) (0);
1429   if (errno == ENOSYS)
1430     /* Function not implemented.  */
1431     return;
1432
1433   START (acos_upward);
1434   RUN_TEST_LOOP_f_f (acos, acos_upward_test_data, FE_UPWARD);
1435   END (acos_upward);
1436 }
1437
1438 static const struct test_f_f_data acosh_test_data[] =
1439   {
1440     START_DATA (acosh),
1441     TEST_f_f (acosh, plus_infty, plus_infty),
1442     TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION),
1443     TEST_f_f (acosh, qnan_value, qnan_value),
1444
1445     /* x < 1:  */
1446     TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION),
1447     TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION),
1448
1449     TEST_f_f (acosh, 1, 0),
1450     TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L),
1451     END_DATA (acosh)
1452   };
1453
1454 static void
1455 acosh_test (void)
1456 {
1457   errno = 0;
1458   FUNC(acosh) (7);
1459   if (errno == ENOSYS)
1460     /* Function not implemented.  */
1461     return;
1462
1463   START (acosh);
1464   RUN_TEST_LOOP_f_f (acosh, acosh_test_data, );
1465   END (acosh);
1466 }
1467
1468 static const struct test_f_f_data asin_test_data[] =
1469   {
1470     START_DATA (asin),
1471     TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION),
1472     TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION),
1473     TEST_f_f (asin, qnan_value, qnan_value),
1474
1475     /* asin x == qNaN plus invalid exception for |x| > 1.  */
1476     TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION),
1477     TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION),
1478     TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION),
1479     TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION),
1480
1481     TEST_f_f (asin, 0, 0),
1482     TEST_f_f (asin, minus_zero, minus_zero),
1483     TEST_f_f (asin, 0.5, M_PI_6l),
1484     TEST_f_f (asin, -0.5, -M_PI_6l),
1485     TEST_f_f (asin, 1.0, M_PI_2l),
1486     TEST_f_f (asin, -1.0, -M_PI_2l),
1487     TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L),
1488     TEST_f_f (asin, 0x0.ffffffp0L, 1.5704510598101804156437184421571127056013L),
1489     TEST_f_f (asin, -0x0.ffffffp0L, -1.5704510598101804156437184421571127056013L),
1490 #ifndef TEST_FLOAT
1491     TEST_f_f (asin, 0x0.ffffffff8p0L, 1.5707810680058339712015850710748035974710L),
1492     TEST_f_f (asin, -0x0.ffffffff8p0L, -1.5707810680058339712015850710748035974710L),
1493     TEST_f_f (asin, 0x0.ffffffffffffp0L, 1.5707962425011995974432331617542781977068L),
1494     TEST_f_f (asin, -0x0.ffffffffffffp0L, -1.5707962425011995974432331617542781977068L),
1495 #endif
1496 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1497     TEST_f_f (asin, 0x0.ffffffffffffffffp0L, 1.5707963264656243652399620683025688888978L),
1498     TEST_f_f (asin, -0x0.ffffffffffffffffp0L, -1.5707963264656243652399620683025688888978L),
1499 #endif
1500     END_DATA (asin)
1501   };
1502
1503 static void
1504 asin_test (void)
1505 {
1506   errno = 0;
1507   FUNC(asin) (0);
1508   if (errno == ENOSYS)
1509     /* Function not implemented.  */
1510     return;
1511
1512   START (asin);
1513   RUN_TEST_LOOP_f_f (asin, asin_test_data, );
1514   END (asin);
1515 }
1516
1517
1518 static const struct test_f_f_data asin_tonearest_test_data[] =
1519   {
1520     START_DATA (asin_tonearest),
1521     TEST_f_f (asin, 0, 0),
1522     TEST_f_f (asin, minus_zero, minus_zero),
1523     TEST_f_f (asin, 0.5, M_PI_6l),
1524     TEST_f_f (asin, -0.5, -M_PI_6l),
1525     TEST_f_f (asin, 1.0, M_PI_2l),
1526     TEST_f_f (asin, -1.0, -M_PI_2l),
1527     END_DATA (asin_tonearest)
1528   };
1529
1530 static void
1531 asin_test_tonearest (void)
1532 {
1533   errno = 0;
1534   FUNC(asin) (0);
1535   if (errno == ENOSYS)
1536     /* Function not implemented.  */
1537     return;
1538
1539   START (asin_tonearest);
1540   RUN_TEST_LOOP_f_f (asin, asin_tonearest_test_data, FE_TONEAREST);
1541   END (asin_tonearest);
1542 }
1543
1544
1545 static const struct test_f_f_data asin_towardzero_test_data[] =
1546   {
1547     START_DATA (asin_towardzero),
1548     TEST_f_f (asin, 0, 0),
1549     TEST_f_f (asin, minus_zero, minus_zero),
1550     TEST_f_f (asin, 0.5, M_PI_6l),
1551     TEST_f_f (asin, -0.5, -M_PI_6l),
1552     TEST_f_f (asin, 1.0, M_PI_2l),
1553     TEST_f_f (asin, -1.0, -M_PI_2l),
1554     END_DATA (asin_towardzero)
1555   };
1556
1557 static void
1558 asin_test_towardzero (void)
1559 {
1560   errno = 0;
1561   FUNC(asin) (0);
1562   if (errno == ENOSYS)
1563     /* Function not implemented.  */
1564     return;
1565
1566   START (asin_towardzero);
1567   RUN_TEST_LOOP_f_f (asin, asin_towardzero_test_data, FE_TOWARDZERO);
1568   END (asin_towardzero);
1569 }
1570
1571
1572 static const struct test_f_f_data asin_downward_test_data[] =
1573   {
1574     START_DATA (asin_downward),
1575     TEST_f_f (asin, 0, 0),
1576     TEST_f_f (asin, minus_zero, minus_zero),
1577     TEST_f_f (asin, 0.5, M_PI_6l),
1578     TEST_f_f (asin, -0.5, -M_PI_6l),
1579     TEST_f_f (asin, 1.0, M_PI_2l),
1580     TEST_f_f (asin, -1.0, -M_PI_2l),
1581     END_DATA (asin_downward)
1582   };
1583
1584 static void
1585 asin_test_downward (void)
1586 {
1587   errno = 0;
1588   FUNC(asin) (0);
1589   if (errno == ENOSYS)
1590     /* Function not implemented.  */
1591     return;
1592
1593   START (asin_downward);
1594   RUN_TEST_LOOP_f_f (asin, asin_downward_test_data, FE_DOWNWARD);
1595   END (asin_downward);
1596 }
1597
1598
1599 static const struct test_f_f_data asin_upward_test_data[] =
1600   {
1601     START_DATA (asin_upward),
1602     TEST_f_f (asin, 0, 0),
1603     TEST_f_f (asin, minus_zero, minus_zero),
1604     TEST_f_f (asin, 0.5, M_PI_6l),
1605     TEST_f_f (asin, -0.5, -M_PI_6l),
1606     TEST_f_f (asin, 1.0, M_PI_2l),
1607     TEST_f_f (asin, -1.0, -M_PI_2l),
1608     END_DATA (asin_upward)
1609   };
1610
1611 static void
1612 asin_test_upward (void)
1613 {
1614   errno = 0;
1615   FUNC(asin) (0);
1616   if (errno == ENOSYS)
1617     /* Function not implemented.  */
1618     return;
1619
1620   START (asin_upward);
1621   RUN_TEST_LOOP_f_f (asin, asin_upward_test_data, FE_UPWARD);
1622   END (asin_upward);
1623 }
1624
1625 static const struct test_f_f_data asinh_test_data[] =
1626   {
1627     START_DATA (asinh),
1628     TEST_f_f (asinh, 0, 0),
1629     TEST_f_f (asinh, minus_zero, minus_zero),
1630 #ifndef TEST_INLINE
1631     TEST_f_f (asinh, plus_infty, plus_infty),
1632     TEST_f_f (asinh, minus_infty, minus_infty),
1633 #endif
1634     TEST_f_f (asinh, qnan_value, qnan_value),
1635     TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L),
1636     END_DATA (asinh)
1637   };
1638
1639 static void
1640 asinh_test (void)
1641 {
1642   errno = 0;
1643   FUNC(asinh) (0.7L);
1644   if (errno == ENOSYS)
1645     /* Function not implemented.  */
1646     return;
1647
1648   START (asinh);
1649   RUN_TEST_LOOP_f_f (asinh, asinh_test_data, );
1650   END (asinh);
1651 }
1652
1653 static const struct test_f_f_data atan_test_data[] =
1654   {
1655     START_DATA (atan),
1656     TEST_f_f (atan, 0, 0),
1657     TEST_f_f (atan, minus_zero, minus_zero),
1658
1659     TEST_f_f (atan, plus_infty, M_PI_2l),
1660     TEST_f_f (atan, minus_infty, -M_PI_2l),
1661     TEST_f_f (atan, qnan_value, qnan_value),
1662     TEST_f_f (atan, max_value, M_PI_2l),
1663     TEST_f_f (atan, -max_value, -M_PI_2l),
1664
1665     TEST_f_f (atan, 1, M_PI_4l),
1666     TEST_f_f (atan, -1, -M_PI_4l),
1667
1668     TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L),
1669
1670     TEST_f_f (atan, 0x1p-100L, 0x1p-100L),
1671 #ifndef TEST_FLOAT
1672     TEST_f_f (atan, 0x1p-600L, 0x1p-600L),
1673 #endif
1674 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1675     TEST_f_f (atan, 0x1p-10000L, 0x1p-10000L),
1676 #endif
1677     END_DATA (atan)
1678   };
1679
1680 static void
1681 atan_test (void)
1682 {
1683   errno = 0;
1684   FUNC(atan) (0);
1685   if (errno == ENOSYS)
1686     /* Function not implemented.  */
1687     return;
1688
1689   START (atan);
1690   RUN_TEST_LOOP_f_f (atan, atan_test_data, );
1691   END (atan);
1692 }
1693
1694
1695
1696 static const struct test_f_f_data atanh_test_data[] =
1697   {
1698     START_DATA (atanh),
1699     TEST_f_f (atanh, 0, 0),
1700     TEST_f_f (atanh, minus_zero, minus_zero),
1701
1702     TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1703     TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1704     TEST_f_f (atanh, qnan_value, qnan_value),
1705
1706     /* atanh (x) == qNaN plus invalid exception if |x| > 1.  */
1707     TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION),
1708     TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION),
1709     TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION),
1710     TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION),
1711
1712     TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L),
1713     END_DATA (atanh)
1714   };
1715
1716 static void
1717 atanh_test (void)
1718 {
1719   errno = 0;
1720   FUNC(atanh) (0.7L);
1721   if (errno == ENOSYS)
1722     /* Function not implemented.  */
1723     return;
1724
1725   START (atanh);
1726   RUN_TEST_LOOP_f_f (atanh, atanh_test_data, );
1727   END (atanh);
1728 }
1729
1730 static const struct test_ff_f_data atan2_test_data[] =
1731   {
1732     START_DATA (atan2),
1733     /* atan2 (0,x) == 0 for x > 0.  */
1734     TEST_ff_f (atan2, 0, 1, 0),
1735
1736     /* atan2 (-0,x) == -0 for x > 0.  */
1737     TEST_ff_f (atan2, minus_zero, 1, minus_zero),
1738
1739     TEST_ff_f (atan2, 0, 0, 0),
1740     TEST_ff_f (atan2, minus_zero, 0, minus_zero),
1741
1742     /* atan2 (+0,x) == +pi for x < 0.  */
1743     TEST_ff_f (atan2, 0, -1, M_PIl),
1744
1745     /* atan2 (-0,x) == -pi for x < 0.  */
1746     TEST_ff_f (atan2, minus_zero, -1, -M_PIl),
1747
1748     TEST_ff_f (atan2, 0, minus_zero, M_PIl),
1749     TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl),
1750
1751     /* atan2 (y,+0) == pi/2 for y > 0.  */
1752     TEST_ff_f (atan2, 1, 0, M_PI_2l),
1753
1754     /* atan2 (y,-0) == pi/2 for y > 0.  */
1755     TEST_ff_f (atan2, 1, minus_zero, M_PI_2l),
1756
1757     /* atan2 (y,+0) == -pi/2 for y < 0.  */
1758     TEST_ff_f (atan2, -1, 0, -M_PI_2l),
1759
1760     /* atan2 (y,-0) == -pi/2 for y < 0.  */
1761     TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l),
1762
1763     /* atan2 (y,inf) == +0 for finite y > 0.  */
1764     TEST_ff_f (atan2, 1, plus_infty, 0),
1765
1766     /* atan2 (y,inf) == -0 for finite y < 0.  */
1767     TEST_ff_f (atan2, -1, plus_infty, minus_zero),
1768
1769     /* atan2(+inf, x) == pi/2 for finite x.  */
1770     TEST_ff_f (atan2, plus_infty, -1, M_PI_2l),
1771
1772     /* atan2(-inf, x) == -pi/2 for finite x.  */
1773     TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l),
1774
1775     /* atan2 (y,-inf) == +pi for finite y > 0.  */
1776     TEST_ff_f (atan2, 1, minus_infty, M_PIl),
1777
1778     /* atan2 (y,-inf) == -pi for finite y < 0.  */
1779     TEST_ff_f (atan2, -1, minus_infty, -M_PIl),
1780
1781     TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l),
1782     TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l),
1783     TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l),
1784     TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l),
1785     TEST_ff_f (atan2, qnan_value, qnan_value, qnan_value),
1786
1787     TEST_ff_f (atan2, max_value, max_value, M_PI_4l),
1788
1789     TEST_ff_f (atan2, max_value, min_value, M_PI_2l),
1790     TEST_ff_f (atan2, -max_value, -min_value, -M_PI_2l),
1791
1792     TEST_ff_f (atan2, 0.75L, 1, 0.643501108793284386802809228717322638L),
1793     TEST_ff_f (atan2, -0.75L, 1.0L, -0.643501108793284386802809228717322638L),
1794     TEST_ff_f (atan2, 0.75L, -1.0L, 2.49809154479650885165983415456218025L),
1795     TEST_ff_f (atan2, -0.75L, -1.0L, -2.49809154479650885165983415456218025L),
1796     TEST_ff_f (atan2, 0.390625L, .00029L, 1.57005392693128974780151246612928941L),
1797     TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L),
1798
1799     TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L),
1800 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1801     TEST_ff_f (atan2, 0x1.00000000000001p0L, 0x1.00000000000001p0L, M_PI_4l),
1802 #endif
1803     END_DATA (atan2)
1804   };
1805
1806 static void
1807 atan2_test (void)
1808 {
1809   errno = 0;
1810   FUNC(atan2) (-0, 1);
1811   if (errno == ENOSYS)
1812     /* Function not implemented.  */
1813     return;
1814
1815   START (atan2);
1816   RUN_TEST_LOOP_ff_f (atan2, atan2_test_data, );
1817   END (atan2);
1818 }
1819
1820 static const struct test_c_f_data cabs_test_data[] =
1821   {
1822     START_DATA (cabs);
1823     /* cabs (x + iy) is specified as hypot (x,y) */
1824
1825     /* cabs (+inf + i x) == +inf.  */
1826     TEST_c_f (cabs, plus_infty, 1.0, plus_infty),
1827     /* cabs (-inf + i x) == +inf.  */
1828     TEST_c_f (cabs, minus_infty, 1.0, plus_infty),
1829
1830     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1831     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1832
1833     TEST_c_f (cabs, qnan_value, qnan_value, qnan_value),
1834
1835     /* cabs (x,y) == cabs (y,x).  */
1836     TEST_c_f (cabs, 0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1837     /* cabs (x,y) == cabs (-x,y).  */
1838     TEST_c_f (cabs, -12.390625L, 0.75L, 12.4133028598606664302388810868156657L),
1839     /* cabs (x,y) == cabs (-y,x).  */
1840     TEST_c_f (cabs, -0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1841     /* cabs (x,y) == cabs (-x,-y).  */
1842     TEST_c_f (cabs, -12.390625L, -0.75L, 12.4133028598606664302388810868156657L),
1843     /* cabs (x,y) == cabs (-y,-x).  */
1844     TEST_c_f (cabs, -0.75L, -12.390625L, 12.4133028598606664302388810868156657L),
1845     /* cabs (x,0) == fabs (x).  */
1846     TEST_c_f (cabs, -0.75L, 0, 0.75L),
1847     TEST_c_f (cabs, 0.75L, 0, 0.75L),
1848     TEST_c_f (cabs, -1.0L, 0, 1.0L),
1849     TEST_c_f (cabs, 1.0L, 0, 1.0L),
1850     TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L),
1851     TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L),
1852
1853     TEST_c_f (cabs, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
1854     END_DATA (cabs);
1855   };
1856
1857 static void
1858 cabs_test (void)
1859 {
1860   errno = 0;
1861   FUNC(cabs) (BUILD_COMPLEX (0.7L, 12.4L));
1862   if (errno == ENOSYS)
1863     /* Function not implemented.  */
1864     return;
1865
1866   START (cabs);
1867   RUN_TEST_LOOP_c_f (cabs, cabs_test_data, );
1868   END (cabs);
1869 }
1870
1871
1872 static const struct test_c_c_data cacos_test_data[] =
1873   {
1874     START_DATA (cacos),
1875     TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero),
1876     TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero),
1877     TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0),
1878     TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0),
1879
1880     TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty),
1881     TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty),
1882
1883     TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty),
1884     TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty),
1885
1886     TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty),
1887     TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty),
1888     TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty),
1889     TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty),
1890     TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty),
1891     TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty),
1892
1893     TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty),
1894     TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty),
1895     TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty),
1896     TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty),
1897
1898     TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty),
1899     TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty),
1900     TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty),
1901     TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty),
1902
1903     TEST_c_c (cacos, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1904     TEST_c_c (cacos, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1905
1906     TEST_c_c (cacos, 0, qnan_value, M_PI_2l, qnan_value),
1907     TEST_c_c (cacos, minus_zero, qnan_value, M_PI_2l, qnan_value),
1908
1909     TEST_c_c (cacos, qnan_value, plus_infty, qnan_value, minus_infty),
1910     TEST_c_c (cacos, qnan_value, minus_infty, qnan_value, plus_infty),
1911
1912     TEST_c_c (cacos, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1913     TEST_c_c (cacos, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1914
1915     TEST_c_c (cacos, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1916     TEST_c_c (cacos, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1917
1918     TEST_c_c (cacos, qnan_value, qnan_value, qnan_value, qnan_value),
1919
1920     TEST_c_c (cacos, plus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1921     TEST_c_c (cacos, minus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1922     TEST_c_c (cacos, plus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1923     TEST_c_c (cacos, minus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1924     TEST_c_c (cacos, plus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1925     TEST_c_c (cacos, minus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1926     TEST_c_c (cacos, plus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1927     TEST_c_c (cacos, minus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1928     TEST_c_c (cacos, plus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1929     TEST_c_c (cacos, minus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1930     TEST_c_c (cacos, plus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1931     TEST_c_c (cacos, minus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1932
1933     TEST_c_c (cacos, -1.5L, plus_zero, M_PIl, -0.9624236501192068949955178268487368462704L),
1934     TEST_c_c (cacos, -1.5L, minus_zero, M_PIl, 0.9624236501192068949955178268487368462704L),
1935     TEST_c_c (cacos, -1.0L, plus_zero, M_PIl, minus_zero),
1936     TEST_c_c (cacos, -1.0L, minus_zero, M_PIl, plus_zero),
1937     TEST_c_c (cacos, -0.5L, plus_zero, 2.094395102393195492308428922186335256131L, minus_zero),
1938     TEST_c_c (cacos, -0.5L, minus_zero, 2.094395102393195492308428922186335256131L, plus_zero),
1939     TEST_c_c (cacos, 0.5L, plus_zero, 1.047197551196597746154214461093167628066L, minus_zero),
1940     TEST_c_c (cacos, 0.5L, minus_zero, 1.047197551196597746154214461093167628066L, plus_zero),
1941     TEST_c_c (cacos, 1.0L, plus_zero, plus_zero, minus_zero),
1942     TEST_c_c (cacos, 1.0L, minus_zero, plus_zero, plus_zero),
1943     TEST_c_c (cacos, 1.5L, plus_zero, plus_zero, -0.9624236501192068949955178268487368462704L),
1944     TEST_c_c (cacos, 1.5L, minus_zero, plus_zero, 0.9624236501192068949955178268487368462704L),
1945
1946     TEST_c_c (cacos, 0x1p50L, 1.0L, 8.881784197001252323389053344727730248720e-16L, -3.535050620855721078027883819436720218708e1L),
1947     TEST_c_c (cacos, 0x1p50L, -1.0L, 8.881784197001252323389053344727730248720e-16L, 3.535050620855721078027883819436720218708e1L),
1948     TEST_c_c (cacos, -0x1p50L, 1.0L, 3.141592653589792350284223683154270545292L, -3.535050620855721078027883819436720218708e1L),
1949     TEST_c_c (cacos, -0x1p50L, -1.0L, 3.141592653589792350284223683154270545292L, 3.535050620855721078027883819436720218708e1L),
1950     TEST_c_c (cacos, 1.0L, 0x1p50L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436759661753e1L),
1951     TEST_c_c (cacos, -1.0L, 0x1p50L, 1.570796326794897507409741391764983781004L, -3.535050620855721078027883819436759661753e1L),
1952     TEST_c_c (cacos, 1.0L, -0x1p50L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436759661753e1L),
1953     TEST_c_c (cacos, -1.0L, -0x1p50L, 1.570796326794897507409741391764983781004L, 3.535050620855721078027883819436759661753e1L),
1954 #ifndef TEST_FLOAT
1955     TEST_c_c (cacos, 0x1p500L, 1.0L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
1956     TEST_c_c (cacos, 0x1p500L, -1.0L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
1957     TEST_c_c (cacos, -0x1p500L, 1.0L, 3.141592653589793238462643383279502884197L, -3.472667374605326000180332928505464606058e2L),
1958     TEST_c_c (cacos, -0x1p500L, -1.0L, 3.141592653589793238462643383279502884197L, 3.472667374605326000180332928505464606058e2L),
1959     TEST_c_c (cacos, 1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1960     TEST_c_c (cacos, -1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1961     TEST_c_c (cacos, 1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1962     TEST_c_c (cacos, -1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1963 #endif
1964 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1965     TEST_c_c (cacos, 0x1p5000L, 1.0L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
1966     TEST_c_c (cacos, 0x1p5000L, -1.0L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
1967     TEST_c_c (cacos, -0x1p5000L, 1.0L, 3.141592653589793238462643383279502884197L, -3.466429049980286492395577839412341016946e3L),
1968     TEST_c_c (cacos, -0x1p5000L, -1.0L, 3.141592653589793238462643383279502884197L, 3.466429049980286492395577839412341016946e3L),
1969     TEST_c_c (cacos, 1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1970     TEST_c_c (cacos, -1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1971     TEST_c_c (cacos, 1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1972     TEST_c_c (cacos, -1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1973 #endif
1974
1975     TEST_c_c (cacos, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, -8.973081118419833726837456344608533993585e1L),
1976 #ifndef TEST_FLOAT
1977     TEST_c_c (cacos, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, -7.107906849659093345062145442726115449315e2L),
1978 #endif
1979 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1980     TEST_c_c (cacos, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, -1.135753137836666928715489992987020363057e4L),
1981 #endif
1982
1983     TEST_c_c (cacos, 0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442097L, -1.194763217287109304111930828519090523536L),
1984     TEST_c_c (cacos, 0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442097L, 1.194763217287109304111930828519090523536L),
1985     TEST_c_c (cacos, -0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442100L, -1.194763217287109304111930828519090523536L),
1986     TEST_c_c (cacos, -0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442100L, 1.194763217287109304111930828519090523536L),
1987     TEST_c_c (cacos, 1.5L, 0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1988     TEST_c_c (cacos, -1.5L, 0x1.fp-129L, 3.141592653589793238462643383279502884195L, -9.624236501192068949955178268487368462704e-1L),
1989     TEST_c_c (cacos, 1.5L, -0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1990     TEST_c_c (cacos, -1.5L, -0x1.fp-129L, 3.141592653589793238462643383279502884195L, 9.624236501192068949955178268487368462704e-1L),
1991 #ifndef TEST_FLOAT
1992     TEST_c_c (cacos, 0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1993     TEST_c_c (cacos, 0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1994     TEST_c_c (cacos, -0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1995     TEST_c_c (cacos, -0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1996     TEST_c_c (cacos, 1.5L, 0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1997     TEST_c_c (cacos, -1.5L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
1998     TEST_c_c (cacos, 1.5L, -0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1999     TEST_c_c (cacos, -1.5L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
2000 #endif
2001 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2002     TEST_c_c (cacos, 0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
2003     TEST_c_c (cacos, 0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
2004     TEST_c_c (cacos, -0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
2005     TEST_c_c (cacos, -0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
2006     TEST_c_c (cacos, 1.5L, 0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
2007     TEST_c_c (cacos, -1.5L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
2008     TEST_c_c (cacos, 1.5L, -0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
2009     TEST_c_c (cacos, -1.5L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
2010 #endif
2011
2012     TEST_c_c (cacos, 0.5L, 1.0L, 1.221357263937683325603909865564381489366L, -9.261330313501824245501244453057873152694e-1L),
2013     TEST_c_c (cacos, 0.5L, -1.0L, 1.221357263937683325603909865564381489366L, 9.261330313501824245501244453057873152694e-1L),
2014     TEST_c_c (cacos, -0.5L, 1.0L, 1.920235389652109912858733517715121394831L, -9.261330313501824245501244453057873152694e-1L),
2015     TEST_c_c (cacos, -0.5L, -1.0L, 1.920235389652109912858733517715121394831L, 9.261330313501824245501244453057873152694e-1L),
2016     TEST_c_c (cacos, 1.0L, 0.5L, 6.748888455860063801646649673121744318756e-1L, -7.328576759736452608886724437653071523305e-1L),
2017     TEST_c_c (cacos, -1.0L, 0.5L, 2.466703808003786858297978415967328452322L, -7.328576759736452608886724437653071523305e-1L),
2018     TEST_c_c (cacos, 1.0L, -0.5L, 6.748888455860063801646649673121744318756e-1L, 7.328576759736452608886724437653071523305e-1L),
2019     TEST_c_c (cacos, -1.0L, -0.5L, 2.466703808003786858297978415967328452322L, 7.328576759736452608886724437653071523305e-1L),
2020     TEST_c_c (cacos, 0.25L, 1.0L, 1.394493894017929688812643125003661339452L, -8.924633639033482359562124741744951972772e-1L),
2021     TEST_c_c (cacos, 0.25L, -1.0L, 1.394493894017929688812643125003661339452L, 8.924633639033482359562124741744951972772e-1L),
2022     TEST_c_c (cacos, -0.25L, 1.0L, 1.747098759571863549650000258275841544745L, -8.924633639033482359562124741744951972772e-1L),
2023     TEST_c_c (cacos, -0.25L, -1.0L, 1.747098759571863549650000258275841544745L, 8.924633639033482359562124741744951972772e-1L),
2024     TEST_c_c (cacos, 1.0L, 0.25L, 4.890443302710802929202843732146540079124e-1L, -5.097911466811016354623559941115413499164e-1L),
2025     TEST_c_c (cacos, -1.0L, 0.25L, 2.652548323318712945542359010064848876285L, -5.097911466811016354623559941115413499164e-1L),
2026     TEST_c_c (cacos, 1.0L, -0.25L, 4.890443302710802929202843732146540079124e-1L, 5.097911466811016354623559941115413499164e-1L),
2027     TEST_c_c (cacos, -1.0L, -0.25L, 2.652548323318712945542359010064848876285L, 5.097911466811016354623559941115413499164e-1L),
2028     TEST_c_c (cacos, 0x1.fp-10L, 1.0L, 1.569458417435338878318763342108699202986L, -8.813742198809567991336704287826445879025e-1L),
2029     TEST_c_c (cacos, 0x1.fp-10L, -1.0L, 1.569458417435338878318763342108699202986L, 8.813742198809567991336704287826445879025e-1L),
2030     TEST_c_c (cacos, -0x1.fp-10L, 1.0L, 1.572134236154454360143880041170803681211L, -8.813742198809567991336704287826445879025e-1L),
2031     TEST_c_c (cacos, -0x1.fp-10L, -1.0L, 1.572134236154454360143880041170803681211L, 8.813742198809567991336704287826445879025e-1L),
2032     TEST_c_c (cacos, 1.0L, 0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, -4.350501469856803800217957402220976497152e-2L),
2033     TEST_c_c (cacos, -1.0L, 0x1.fp-10L, 3.098101355958774410750062883737683164607L, -4.350501469856803800217957402220976497152e-2L),
2034     TEST_c_c (cacos, 1.0L, -0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, 4.350501469856803800217957402220976497152e-2L),
2035     TEST_c_c (cacos, -1.0L, -0x1.fp-10L, 3.098101355958774410750062883737683164607L, 4.350501469856803800217957402220976497152e-2L),
2036     TEST_c_c (cacos, 0x1.fp-30L, 1.0L, 1.570796325518966635014803151387033957091L, -8.813735870195430258081932989769495326854e-1L),
2037     TEST_c_c (cacos, 0x1.fp-30L, -1.0L, 1.570796325518966635014803151387033957091L, 8.813735870195430258081932989769495326854e-1L),
2038     TEST_c_c (cacos, -0x1.fp-30L, 1.0L, 1.570796328070826603447840231892468927106L, -8.813735870195430258081932989769495326854e-1L),
2039     TEST_c_c (cacos, -0x1.fp-30L, -1.0L, 1.570796328070826603447840231892468927106L, 8.813735870195430258081932989769495326854e-1L),
2040     TEST_c_c (cacos, 1.0L, 0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, -4.247867098745151888768727039216644758847e-5L),
2041     TEST_c_c (cacos, -1.0L, 0x1.fp-30L, 3.141550174918818561961484385371624132331L, -4.247867098745151888768727039216644758847e-5L),
2042     TEST_c_c (cacos, 1.0L, -0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, 4.247867098745151888768727039216644758847e-5L),
2043     TEST_c_c (cacos, -1.0L, -0x1.fp-30L, 3.141550174918818561961484385371624132331L, 4.247867098745151888768727039216644758847e-5L),
2044     TEST_c_c (cacos, 0x1.fp-100L, 1.0L, 1.570796326794896619231321691638670687364L, -8.813735870195430252326093249797923090282e-1L),
2045     TEST_c_c (cacos, 0x1.fp-100L, -1.0L, 1.570796326794896619231321691638670687364L, 8.813735870195430252326093249797923090282e-1L),
2046     TEST_c_c (cacos, -0x1.fp-100L, 1.0L, 1.570796326794896619231321691640832196834L, -8.813735870195430252326093249797923090282e-1L),
2047     TEST_c_c (cacos, -0x1.fp-100L, -1.0L, 1.570796326794896619231321691640832196834L, 8.813735870195430252326093249797923090282e-1L),
2048     TEST_c_c (cacos, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, -1.236292038260260888664514866457202186027e-15L),
2049     TEST_c_c (cacos, -1.0L, 0x1.fp-100L, 3.141592653589792002170605123018614219682L, -1.236292038260260888664514866457202186027e-15L),
2050     TEST_c_c (cacos, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, 1.236292038260260888664514866457202186027e-15L),
2051     TEST_c_c (cacos, -1.0L, -0x1.fp-100L, 3.141592653589792002170605123018614219682L, 1.236292038260260888664514866457202186027e-15L),
2052     TEST_c_c (cacos, 0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442097L, -8.813735870195430252326093249797923090282e-1L),
2053     TEST_c_c (cacos, 0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442097L, 8.813735870195430252326093249797923090282e-1L),
2054     TEST_c_c (cacos, -0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442101L, -8.813735870195430252326093249797923090282e-1L),
2055     TEST_c_c (cacos, -0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442101L, 8.813735870195430252326093249797923090282e-1L),
2056     TEST_c_c (cacos, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, -5.335635276982233498398987585285818977933e-20L),
2057     TEST_c_c (cacos, -1.0L, 0x1.fp-129L, 3.141592653589793238409287030509680549213L, -5.335635276982233498398987585285818977933e-20L),
2058     TEST_c_c (cacos, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, 5.335635276982233498398987585285818977933e-20L),
2059     TEST_c_c (cacos, -1.0L, -0x1.fp-129L, 3.141592653589793238409287030509680549213L, 5.335635276982233498398987585285818977933e-20L),
2060 #ifndef TEST_FLOAT
2061     TEST_c_c (cacos, 0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2062     TEST_c_c (cacos, 0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2063     TEST_c_c (cacos, -0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2064     TEST_c_c (cacos, -0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2065     TEST_c_c (cacos, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
2066     TEST_c_c (cacos, -1.0L, 0x1.fp-1000L, 3.141592653589793238462643383279502884197L, -4.252291453851660175550490409247739011867e-151L),
2067     TEST_c_c (cacos, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
2068     TEST_c_c (cacos, -1.0L, -0x1.fp-1000L, 3.141592653589793238462643383279502884197L, 4.252291453851660175550490409247739011867e-151L),
2069     TEST_c_c (cacos, 0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2070     TEST_c_c (cacos, 0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2071     TEST_c_c (cacos, -0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2072     TEST_c_c (cacos, -0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2073     TEST_c_c (cacos, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
2074     TEST_c_c (cacos, -1.0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -7.340879205566679497036857179189356754017e-155L),
2075     TEST_c_c (cacos, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
2076     TEST_c_c (cacos, -1.0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 7.340879205566679497036857179189356754017e-155L),
2077 #endif
2078 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2079     TEST_c_c (cacos, 0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2080     TEST_c_c (cacos, 0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2081     TEST_c_c (cacos, -0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2082     TEST_c_c (cacos, -0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2083     TEST_c_c (cacos, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
2084     TEST_c_c (cacos, -1.0L, 0x1.fp-10000L, 3.141592653589793238462643383279502884197L, -9.854680208706673586644342922051388714633e-1506L),
2085     TEST_c_c (cacos, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
2086     TEST_c_c (cacos, -1.0L, -0x1.fp-10000L, 3.141592653589793238462643383279502884197L, 9.854680208706673586644342922051388714633e-1506L),
2087     TEST_c_c (cacos, 0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2088     TEST_c_c (cacos, 0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2089     TEST_c_c (cacos, -0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
2090     TEST_c_c (cacos, -0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
2091     TEST_c_c (cacos, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
2092     TEST_c_c (cacos, -1.0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.023632056840860275214893047597614177639e-2467L),
2093     TEST_c_c (cacos, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
2094     TEST_c_c (cacos, -1.0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.023632056840860275214893047597614177639e-2467L),
2095 #endif
2096
2097     TEST_c_c (cacos, 0x1p-23L, 0x1.000002p0L, 1.570796242501204621739026081991856762292L, -8.813736713132400470205730751186547909968e-1L),
2098     TEST_c_c (cacos, 0x1p-23L, -0x1.000002p0L, 1.570796242501204621739026081991856762292L, 8.813736713132400470205730751186547909968e-1L),
2099     TEST_c_c (cacos, -0x1p-23L, 0x1.000002p0L, 1.570796411088588616723617301287646121905L, -8.813736713132400470205730751186547909968e-1L),
2100     TEST_c_c (cacos, -0x1p-23L, -0x1.000002p0L, 1.570796411088588616723617301287646121905L, 8.813736713132400470205730751186547909968e-1L),
2101     TEST_c_c (cacos, 0x1.000002p0L, 0x1p-23L, 2.222118384408546368406374049167636760903e-4L, -5.364668491573609633134147164031476452679e-4L),
2102     TEST_c_c (cacos, -0x1.000002p0L, 0x1p-23L, 3.141370441751352383825802745874586120521L, -5.364668491573609633134147164031476452679e-4L),
2103     TEST_c_c (cacos, 0x1.000002p0L, -0x1p-23L, 2.222118384408546368406374049167636760903e-4L, 5.364668491573609633134147164031476452679e-4L),
2104     TEST_c_c (cacos, -0x1.000002p0L, -0x1p-23L, 3.141370441751352383825802745874586120521L, 5.364668491573609633134147164031476452679e-4L),
2105     TEST_c_c (cacos, 0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442097L, -8.813736713132375348727889167749389235161e-1L),
2106     TEST_c_c (cacos, 0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442097L, 8.813736713132375348727889167749389235161e-1L),
2107     TEST_c_c (cacos, -0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442101L, -8.813736713132375348727889167749389235161e-1L),
2108     TEST_c_c (cacos, -0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442101L, 8.813736713132375348727889167749389235161e-1L),
2109     TEST_c_c (cacos, 0x1.000002p0L, 0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, -4.882812451493617206486388134172712975070e-4L),
2110     TEST_c_c (cacos, -0x1.000002p0L, 0x1.fp-129L, 3.141592653589793238462643383279502878367L, -4.882812451493617206486388134172712975070e-4L),
2111     TEST_c_c (cacos, 0x1.000002p0L, -0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, 4.882812451493617206486388134172712975070e-4L),
2112     TEST_c_c (cacos, -0x1.000002p0L, -0x1.fp-129L, 3.141592653589793238462643383279502878367L, 4.882812451493617206486388134172712975070e-4L),
2113     TEST_c_c (cacos, 0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
2114     TEST_c_c (cacos, 0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
2115     TEST_c_c (cacos, -0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
2116     TEST_c_c (cacos, -0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
2117     TEST_c_c (cacos, 0x1.000002p0L, 0.0L, 0.0L, -4.882812451493617206486388134172712975070e-4L),
2118     TEST_c_c (cacos, -0x1.000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.882812451493617206486388134172712975070e-4L),
2119     TEST_c_c (cacos, 0x1.000002p0L, -0.0L, 0.0L, 4.882812451493617206486388134172712975070e-4L),
2120     TEST_c_c (cacos, -0x1.000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.882812451493617206486388134172712975070e-4L),
2121 #ifndef TEST_FLOAT
2122     TEST_c_c (cacos, 0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, -8.813735870195431822418551933572982483664e-1L),
2123     TEST_c_c (cacos, 0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, 8.813735870195431822418551933572982483664e-1L),
2124     TEST_c_c (cacos, -0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, -8.813735870195431822418551933572982483664e-1L),
2125     TEST_c_c (cacos, -0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, 8.813735870195431822418551933572982483664e-1L),
2126     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1p-52L, 9.590301705980041385828904092662391018164e-9L, -2.315303644582684770975188768022139415020e-8L),
2127     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1p-52L, 3.141592643999491532482601997450598791535L, -2.315303644582684770975188768022139415020e-8L),
2128     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1p-52L, 9.590301705980041385828904092662391018164e-9L, 2.315303644582684770975188768022139415020e-8L),
2129     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1p-52L, 3.141592643999491532482601997450598791535L, 2.315303644582684770975188768022139415020e-8L),
2130     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2131     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2132     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2133     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2134     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, -2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2135     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
2136     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, 2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2137     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
2138     TEST_c_c (cacos, 0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2139     TEST_c_c (cacos, 0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2140     TEST_c_c (cacos, -0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2141     TEST_c_c (cacos, -0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2142     TEST_c_c (cacos, 0x1.0000000000001p0L, 0.0L, 0.0L, -2.107342425544701550354780375182800088393e-8L),
2143     TEST_c_c (cacos, -0x1.0000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
2144     TEST_c_c (cacos, 0x1.0000000000001p0L, -0.0L, 0.0L, 2.107342425544701550354780375182800088393e-8L),
2145     TEST_c_c (cacos, -0x1.0000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
2146 #endif
2147 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2148     TEST_c_c (cacos, 0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, -8.813735870195430253092739958139610131001e-1L),
2149     TEST_c_c (cacos, 0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, 8.813735870195430253092739958139610131001e-1L),
2150     TEST_c_c (cacos, -0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, -8.813735870195430253092739958139610131001e-1L),
2151     TEST_c_c (cacos, -0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, 8.813735870195430253092739958139610131001e-1L),
2152     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1p-63L, 2.119177303101063432592523199680782317447e-10L, -5.116146586219826555037807251857670783420e-10L),
2153     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1p-63L, 3.141592653377875508152537040020250564229L, -5.116146586219826555037807251857670783420e-10L),
2154     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1p-63L, 2.119177303101063432592523199680782317447e-10L, 5.116146586219826555037807251857670783420e-10L),
2155     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1p-63L, 3.141592653377875508152537040020250564229L, 5.116146586219826555037807251857670783420e-10L),
2156 # if LDBL_MIN_EXP <= -16381
2157     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2158     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2159     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2160     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2161     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, -4.656612873077392578082927418388212703712e-10L),
2162     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2163     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, 4.656612873077392578082927418388212703712e-10L),
2164     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2165 # endif
2166     TEST_c_c (cacos, 0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2167     TEST_c_c (cacos, 0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2168     TEST_c_c (cacos, -0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2169     TEST_c_c (cacos, -0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2170     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0.0L, 0.0L, -4.656612873077392578082927418388212703712e-10L),
2171     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2172     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0.0L, 0.0L, 4.656612873077392578082927418388212703712e-10L),
2173     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2174 #endif
2175 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2176     TEST_c_c (cacos, 0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, -8.813735870195430252326093249798097405561e-1L),
2177     TEST_c_c (cacos, 0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, 8.813735870195430252326093249798097405561e-1L),
2178     TEST_c_c (cacos, -0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, -8.813735870195430252326093249798097405561e-1L),
2179     TEST_c_c (cacos, -0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, 8.813735870195430252326093249798097405561e-1L),
2180     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1p-106L, 5.394221422390606848017034778914096659726e-17L, -2.285028863093221674154232933662774454211e-16L),
2181     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1p-106L, 3.141592653589793184520429159373434404027L, -2.285028863093221674154232933662774454211e-16L),
2182     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1p-106L, 5.394221422390606848017034778914096659726e-17L, 2.285028863093221674154232933662774454211e-16L),
2183     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1p-106L, 3.141592653589793184520429159373434404027L, 2.285028863093221674154232933662774454211e-16L),
2184     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2185     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2186     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2187     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2188     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, -2.220446049250313080847263336181636063482e-16L),
2189     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2190     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, 2.220446049250313080847263336181636063482e-16L),
2191     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2192     TEST_c_c (cacos, 0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2193     TEST_c_c (cacos, 0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2194     TEST_c_c (cacos, -0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2195     TEST_c_c (cacos, -0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2196     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0.0L, 0.0L, -2.220446049250313080847263336181636063482e-16L),
2197     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2198     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0.0L, 0.0L, 2.220446049250313080847263336181636063482e-16L),
2199     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2200 #endif
2201 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2202     TEST_c_c (cacos, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, -8.813735870195430252326093249797924452120e-1L),
2203     TEST_c_c (cacos, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, 8.813735870195430252326093249797924452120e-1L),
2204     TEST_c_c (cacos, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, -8.813735870195430252326093249797924452120e-1L),
2205     TEST_c_c (cacos, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, 8.813735870195430252326093249797924452120e-1L),
2206     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 4.767863183742677481693563511435642755521e-18L, -2.019699255375255198156433710951064632386e-17L),
2207     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 3.141592653589793233694780199536825402504L, -2.019699255375255198156433710951064632386e-17L),
2208     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 4.767863183742677481693563511435642755521e-18L, 2.019699255375255198156433710951064632386e-17L),
2209     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 3.141592653589793233694780199536825402504L, 2.019699255375255198156433710951064632386e-17L),
2210     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2211     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2212     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2213     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2214     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, -1.962615573354718824241727964954454332780e-17L),
2215     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2216     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, 1.962615573354718824241727964954454332780e-17L),
2217     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2218     TEST_c_c (cacos, 0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2219     TEST_c_c (cacos, 0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2220     TEST_c_c (cacos, -0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2221     TEST_c_c (cacos, -0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2222     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0.0L, 0.0L, -1.962615573354718824241727964954454332780e-17L),
2223     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2224     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0.0L, 0.0L, 1.962615573354718824241727964954454332780e-17L),
2225     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2226 #endif
2227
2228     TEST_c_c (cacos, 0x1p-23L, 0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, -8.813735448726963984495965873956465777250e-1L),
2229     TEST_c_c (cacos, 0x1p-23L, -0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, 8.813735448726963984495965873956465777250e-1L),
2230     TEST_c_c (cacos, -0x1p-23L, 0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, -8.813735448726963984495965873956465777250e-1L),
2231     TEST_c_c (cacos, -0x1p-23L, -0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, 8.813735448726963984495965873956465777250e-1L),
2232     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1p-23L, 4.391863861910487109445187743978204002614e-4L, -2.714321200917194650737217746780928423385e-4L),
2233     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1p-23L, 3.141153467203602189751698864505105063797L, -2.714321200917194650737217746780928423385e-4L),
2234     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1p-23L, 4.391863861910487109445187743978204002614e-4L, 2.714321200917194650737217746780928423385e-4L),
2235     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1p-23L, 3.141153467203602189751698864505105063797L, 2.714321200917194650737217746780928423385e-4L),
2236     TEST_c_c (cacos, 0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, -8.813735448726938863015878255140556727969e-1L),
2237     TEST_c_c (cacos, 0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, 8.813735448726938863015878255140556727969e-1L),
2238     TEST_c_c (cacos, -0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, -8.813735448726938863015878255140556727969e-1L),
2239     TEST_c_c (cacos, -0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, 8.813735448726938863015878255140556727969e-1L),
2240     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, -8.245504387859737323891843603996428534945e-36L),
2241     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1.fp-129L, 3.141247386605077034875040133796864147700L, -8.245504387859737323891843603996428534945e-36L),
2242     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, 8.245504387859737323891843603996428534945e-36L),
2243     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1.fp-129L, 3.141247386605077034875040133796864147700L, 8.245504387859737323891843603996428534945e-36L),
2244     TEST_c_c (cacos, 0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2245     TEST_c_c (cacos, 0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2246     TEST_c_c (cacos, -0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2247     TEST_c_c (cacos, -0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2248     TEST_c_c (cacos, 0x0.ffffffp0L, 0.0L, 3.452669847162035876032494826387364972849e-4L, -0.0L),
2249     TEST_c_c (cacos, -0x0.ffffffp0L, 0.0L, 3.141247386605077034875040133796864147700L, -0.0L),
2250     TEST_c_c (cacos, 0x0.ffffffp0L, -0.0L, 3.452669847162035876032494826387364972849e-4L, 0.0L),
2251     TEST_c_c (cacos, -0x0.ffffffp0L, -0.0L, 3.141247386605077034875040133796864147700L, 0.0L),
2252     TEST_c_c (cacos, 0x1p-23L, 0.5L, 1.570796220170866625230343643673321150378L, -4.812118250596059896127318386463676808798e-1L),
2253     TEST_c_c (cacos, 0x1p-23L, -0.5L, 1.570796220170866625230343643673321150378L, 4.812118250596059896127318386463676808798e-1L),
2254     TEST_c_c (cacos, -0x1p-23L, 0.5L, 1.570796433418926613232299739606181733819L, -4.812118250596059896127318386463676808798e-1L),
2255     TEST_c_c (cacos, -0x1p-23L, -0.5L, 1.570796433418926613232299739606181733819L, 4.812118250596059896127318386463676808798e-1L),
2256     TEST_c_c (cacos, 0.5L, 0x1p-23L, 1.047197551196603215914744618665204532273L, -1.376510308240943236356088341381173571841e-7L),
2257     TEST_c_c (cacos, -0.5L, 0x1p-23L, 2.094395102393190022547898764614298351924L, -1.376510308240943236356088341381173571841e-7L),
2258     TEST_c_c (cacos, 0.5L, -0x1p-23L, 1.047197551196603215914744618665204532273L, 1.376510308240943236356088341381173571841e-7L),
2259     TEST_c_c (cacos, -0.5L, -0x1p-23L, 2.094395102393190022547898764614298351924L, 1.376510308240943236356088341381173571841e-7L),
2260     TEST_c_c (cacos, 0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442096L, -4.812118250596034474977589134243684231352e-1L),
2261     TEST_c_c (cacos, 0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442096L, 4.812118250596034474977589134243684231352e-1L),
2262     TEST_c_c (cacos, -0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442101L, -4.812118250596034474977589134243684231352e-1L),
2263     TEST_c_c (cacos, -0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442101L, 4.812118250596034474977589134243684231352e-1L),
2264     TEST_c_c (cacos, 0.5L, 0x1.fp-129L, 1.047197551196597746154214461093167628066L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2265     TEST_c_c (cacos, -0.5L, 0x1.fp-129L, 2.094395102393195492308428922186335256131L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2266     TEST_c_c (cacos, 0.5L, -0x1.fp-129L, 1.047197551196597746154214461093167628066L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2267     TEST_c_c (cacos, -0.5L, -0x1.fp-129L, 2.094395102393195492308428922186335256131L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2268     TEST_c_c (cacos, 0x1p-23L, 0x1p-23L, 1.570796207585607068450636380271254316214L, -1.192092895507818146886315028596704749235e-7L),
2269     TEST_c_c (cacos, 0x1p-23L, -0x1p-23L, 1.570796207585607068450636380271254316214L, 1.192092895507818146886315028596704749235e-7L),
2270     TEST_c_c (cacos, -0x1p-23L, 0x1p-23L, 1.570796446004186170012007003008248567984L, -1.192092895507818146886315028596704749235e-7L),
2271     TEST_c_c (cacos, -0x1p-23L, -0x1p-23L, 1.570796446004186170012007003008248567984L, 1.192092895507818146886315028596704749235e-7L),
2272     TEST_c_c (cacos, 0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442096L, -1.192092895507809676556842485683592032154e-7L),
2273     TEST_c_c (cacos, 0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442096L, 1.192092895507809676556842485683592032154e-7L),
2274     TEST_c_c (cacos, -0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442101L, -1.192092895507809676556842485683592032154e-7L),
2275     TEST_c_c (cacos, -0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442101L, 1.192092895507809676556842485683592032154e-7L),
2276     TEST_c_c (cacos, 0x1p-23L, 0x1.fp-129L, 1.570796207585607068449789347324000006847L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2277     TEST_c_c (cacos, -0x1p-23L, 0x1.fp-129L, 1.570796446004186170012854035955502877351L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2278     TEST_c_c (cacos, 0x1p-23L, -0x1.fp-129L, 1.570796207585607068449789347324000006847L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2279     TEST_c_c (cacos, -0x1p-23L, -0x1.fp-129L, 1.570796446004186170012854035955502877351L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2280     TEST_c_c (cacos, 0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2281     TEST_c_c (cacos, 0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2282     TEST_c_c (cacos, -0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2283     TEST_c_c (cacos, -0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2284     TEST_c_c (cacos, 0x1p-23L, 0.0L, 1.570796207585607068449789347324000006847L, -0.0L),
2285     TEST_c_c (cacos, -0x1p-23L, 0.0L, 1.570796446004186170012854035955502877351L, -0.0L),
2286     TEST_c_c (cacos, 0x1p-23L, -0.0L, 1.570796207585607068449789347324000006847L, 0.0L),
2287     TEST_c_c (cacos, -0x1p-23L, -0.0L, 1.570796446004186170012854035955502877351L, 0.0L),
2288     TEST_c_c (cacos, 0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2289     TEST_c_c (cacos, 0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2290     TEST_c_c (cacos, -0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442101L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2291     TEST_c_c (cacos, -0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442101L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2292 #ifndef TEST_FLOAT
2293     TEST_c_c (cacos, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, -8.813735870195429467279863907910458761820e-1L),
2294     TEST_c_c (cacos, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, 8.813735870195429467279863907910458761820e-1L),
2295     TEST_c_c (cacos, -0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, -8.813735870195429467279863907910458761820e-1L),
2296     TEST_c_c (cacos, -0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, 8.813735870195429467279863907910458761820e-1L),
2297     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.895456983915074112227925127005564372844e-8L, -1.171456840272878582596796205397918831268e-8L),
2298     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1p-52L, 3.141592634635223399311902261000251614142L, -1.171456840272878582596796205397918831268e-8L),
2299     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.895456983915074112227925127005564372844e-8L, 1.171456840272878582596796205397918831268e-8L),
2300     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1p-52L, 3.141592634635223399311902261000251614142L, 1.171456840272878582596796205397918831268e-8L),
2301     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2302     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2303     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2304     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2305     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2306     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.141592638688632044614986995416067458693L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2307     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2308     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.141592638688632044614986995416067458693L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2309     TEST_c_c (cacos, 0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2310     TEST_c_c (cacos, 0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2311     TEST_c_c (cacos, -0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2312     TEST_c_c (cacos, -0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2313     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0.0L, 1.490116119384765638786343542550461592240e-8L, -0.0L),
2314     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0.0L, 3.141592638688632044614986995416067458693L, -0.0L),
2315     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0.0L, 1.490116119384765638786343542550461592240e-8L, 0.0L),
2316     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0.0L, 3.141592638688632044614986995416067458693L, 0.0L),
2317 #endif
2318     TEST_c_c (cacos, 0x1p-52L, 0.5L, 1.570796326794896420628589431857911675917L, -4.812118250596034474977589134243772428682e-1L),
2319     TEST_c_c (cacos, 0x1p-52L, -0.5L, 1.570796326794896420628589431857911675917L, 4.812118250596034474977589134243772428682e-1L),
2320     TEST_c_c (cacos, -0x1p-52L, 0.5L, 1.570796326794896817834053951421591208280L, -4.812118250596034474977589134243772428682e-1L),
2321     TEST_c_c (cacos, -0x1p-52L, -0.5L, 1.570796326794896817834053951421591208280L, 4.812118250596034474977589134243772428682e-1L),
2322     TEST_c_c (cacos, 0.5L, 0x1p-52L, 1.047197551196597746154214461093186605110L, -2.563950248511418570403591756798643804971e-16L),
2323     TEST_c_c (cacos, -0.5L, 0x1p-52L, 2.094395102393195492308428922186316279087L, -2.563950248511418570403591756798643804971e-16L),
2324     TEST_c_c (cacos, 0.5L, -0x1p-52L, 1.047197551196597746154214461093186605110L, 2.563950248511418570403591756798643804971e-16L),
2325     TEST_c_c (cacos, -0.5L, -0x1p-52L, 2.094395102393195492308428922186316279087L, 2.563950248511418570403591756798643804971e-16L),
2326 #ifndef TEST_FLOAT
2327     TEST_c_c (cacos, 0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2328     TEST_c_c (cacos, 0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2329     TEST_c_c (cacos, -0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2330     TEST_c_c (cacos, -0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2331     TEST_c_c (cacos, 0.5L, 0x1.fp-1025L, 1.047197551196597746154214461093167628066L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2332     TEST_c_c (cacos, -0.5L, 0x1.fp-1025L, 2.094395102393195492308428922186335256131L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2333     TEST_c_c (cacos, 0.5L, -0x1.fp-1025L, 1.047197551196597746154214461093167628066L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2334     TEST_c_c (cacos, -0.5L, -0x1.fp-1025L, 2.094395102393195492308428922186335256131L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2335 #endif
2336     TEST_c_c (cacos, 0x1p-52L, 0x1p-52L, 1.570796326794896397186716766608443357372L, -2.220446049250313080847263336181677117148e-16L),
2337     TEST_c_c (cacos, 0x1p-52L, -0x1p-52L, 1.570796326794896397186716766608443357372L, 2.220446049250313080847263336181677117148e-16L),
2338     TEST_c_c (cacos, -0x1p-52L, 0x1p-52L, 1.570796326794896841275926616671059526825L, -2.220446049250313080847263336181677117148e-16L),
2339     TEST_c_c (cacos, -0x1p-52L, -0x1p-52L, 1.570796326794896841275926616671059526825L, 2.220446049250313080847263336181677117148e-16L),
2340 #ifndef TEST_FLOAT
2341     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2342     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2343     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2344     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2345     TEST_c_c (cacos, 0x1p-52L, 0x1.fp-1025L, 1.570796326794896397186716766608443357372L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2346     TEST_c_c (cacos, -0x1p-52L, 0x1.fp-1025L, 1.570796326794896841275926616671059526825L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2347     TEST_c_c (cacos, 0x1p-52L, -0x1.fp-1025L, 1.570796326794896397186716766608443357372L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2348     TEST_c_c (cacos, -0x1p-52L, -0x1.fp-1025L, 1.570796326794896841275926616671059526825L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2349 #endif
2350     TEST_c_c (cacos, 0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2351     TEST_c_c (cacos, 0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2352     TEST_c_c (cacos, -0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2353     TEST_c_c (cacos, -0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2354     TEST_c_c (cacos, 0x1p-52L, 0.0L, 1.570796326794896397186716766608443357372L, -0.0L),
2355     TEST_c_c (cacos, -0x1p-52L, 0.0L, 1.570796326794896841275926616671059526825L, -0.0L),
2356     TEST_c_c (cacos, 0x1p-52L, -0.0L, 1.570796326794896397186716766608443357372L, 0.0L),
2357     TEST_c_c (cacos, -0x1p-52L, -0.0L, 1.570796326794896841275926616671059526825L, 0.0L),
2358 #ifndef TEST_FLOAT
2359     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2360     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2361     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2362     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2363 #endif
2364 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2365     TEST_c_c (cacos, 0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, -8.813735870195430251942769895627079569937e-1L),
2366     TEST_c_c (cacos, 0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, 8.813735870195430251942769895627079569937e-1L),
2367     TEST_c_c (cacos, -0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, -8.813735870195430251942769895627079569937e-1L),
2368     TEST_c_c (cacos, -0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, 8.813735870195430251942769895627079569937e-1L),
2369     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1p-63L, 4.188407771167967636741951941902992986043e-10L, -2.588578361325995866221775673638805081337e-10L),
2370     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1p-63L, 3.141592653170952461345846619605307690007L, -2.588578361325995866221775673638805081337e-10L),
2371     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1p-63L, 4.188407771167967636741951941902992986043e-10L, 2.588578361325995866221775673638805081337e-10L),
2372     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1p-63L, 3.141592653170952461345846619605307690007L, 2.588578361325995866221775673638805081337e-10L),
2373 # if LDBL_MIN_EXP <= -16381
2374     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2375     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2376     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2377     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2378     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, -2.472906068161537187835415298076415423459e-4923L),
2379     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.141592653260520984471283759942320330996L, -2.472906068161537187835415298076415423459e-4923L),
2380     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, 2.472906068161537187835415298076415423459e-4923L),
2381     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.141592653260520984471283759942320330996L, 2.472906068161537187835415298076415423459e-4923L),
2382 # endif
2383     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2384     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2385     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2386     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2387     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0.0L, 3.292722539913596233371825532007990724506e-10L, -0.0L),
2388     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0.0L, 3.141592653260520984471283759942320330996L, -0.0L),
2389     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0.0L, 3.292722539913596233371825532007990724506e-10L, 0.0L),
2390     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0.0L, 3.141592653260520984471283759942320330996L, 0.0L),
2391 #endif
2392     TEST_c_c (cacos, 0x1p-63L, 0.5L, 1.570796326794896619134347701278529840650L, -4.812118250596034474977589134243684231373e-1L),
2393     TEST_c_c (cacos, 0x1p-63L, -0.5L, 1.570796326794896619134347701278529840650L, 4.812118250596034474977589134243684231373e-1L),
2394     TEST_c_c (cacos, -0x1p-63L, 0.5L, 1.570796326794896619328295682000973043547L, -4.812118250596034474977589134243684231373e-1L),
2395     TEST_c_c (cacos, -0x1p-63L, -0.5L, 1.570796326794896619328295682000973043547L, 4.812118250596034474977589134243684231373e-1L),
2396     TEST_c_c (cacos, 0.5L, 0x1p-63L, 1.047197551196597746154214461093167628070L, -1.251928832280966098829878787499365228659e-19L),
2397     TEST_c_c (cacos, -0.5L, 0x1p-63L, 2.094395102393195492308428922186335256127L, -1.251928832280966098829878787499365228659e-19L),
2398     TEST_c_c (cacos, 0.5L, -0x1p-63L, 1.047197551196597746154214461093167628070L, 1.251928832280966098829878787499365228659e-19L),
2399     TEST_c_c (cacos, -0.5L, -0x1p-63L, 2.094395102393195492308428922186335256127L, 1.251928832280966098829878787499365228659e-19L),
2400 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2401     TEST_c_c (cacos, 0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2402     TEST_c_c (cacos, 0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2403     TEST_c_c (cacos, -0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2404     TEST_c_c (cacos, -0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2405     TEST_c_c (cacos, 0.5L, 0x1.fp-16385L, 1.047197551196597746154214461093167628066L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2406     TEST_c_c (cacos, -0.5L, 0x1.fp-16385L, 2.094395102393195492308428922186335256131L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2407     TEST_c_c (cacos, 0.5L, -0x1.fp-16385L, 1.047197551196597746154214461093167628066L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2408     TEST_c_c (cacos, -0.5L, -0x1.fp-16385L, 2.094395102393195492308428922186335256131L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2409 #endif
2410     TEST_c_c (cacos, 0x1p-63L, 0x1p-63L, 1.570796326794896619122901474391200998698L, -1.084202172485504434007452800869941711430e-19L),
2411     TEST_c_c (cacos, 0x1p-63L, -0x1p-63L, 1.570796326794896619122901474391200998698L, 1.084202172485504434007452800869941711430e-19L),
2412     TEST_c_c (cacos, -0x1p-63L, 0x1p-63L, 1.570796326794896619339741908888301885499L, -1.084202172485504434007452800869941711430e-19L),
2413     TEST_c_c (cacos, -0x1p-63L, -0x1p-63L, 1.570796326794896619339741908888301885499L, 1.084202172485504434007452800869941711430e-19L),
2414 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2415     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2416     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2417     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2418     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2419     TEST_c_c (cacos, 0x1p-63L, 0x1.fp-16385L, 1.570796326794896619122901474391200998698L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2420     TEST_c_c (cacos, -0x1p-63L, 0x1.fp-16385L, 1.570796326794896619339741908888301885499L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2421     TEST_c_c (cacos, 0x1p-63L, -0x1.fp-16385L, 1.570796326794896619122901474391200998698L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2422     TEST_c_c (cacos, -0x1p-63L, -0x1.fp-16385L, 1.570796326794896619339741908888301885499L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2423 #endif
2424     TEST_c_c (cacos, 0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2425     TEST_c_c (cacos, 0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2426     TEST_c_c (cacos, -0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2427     TEST_c_c (cacos, -0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2428     TEST_c_c (cacos, 0x1p-63L, 0.0L, 1.570796326794896619122901474391200998698L, -0.0L),
2429     TEST_c_c (cacos, -0x1p-63L, 0.0L, 1.570796326794896619339741908888301885499L, -0.0L),
2430     TEST_c_c (cacos, 0x1p-63L, -0.0L, 1.570796326794896619122901474391200998698L, 0.0L),
2431     TEST_c_c (cacos, -0x1p-63L, -0.0L, 1.570796326794896619339741908888301885499L, 0.0L),
2432 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2433     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2434     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2435     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2436     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2437 #endif
2438 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2439     TEST_c_c (cacos, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, -8.813735870195430252326093249797835932642e-1L),
2440     TEST_c_c (cacos, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, 8.813735870195430252326093249797835932642e-1L),
2441     TEST_c_c (cacos, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, -8.813735870195430252326093249797835932642e-1L),
2442     TEST_c_c (cacos, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, 8.813735870195430252326093249797835932642e-1L),
2443     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.997188458999618357060632049675702684031e-16L, -1.234330349600789959989661887846005659983e-16L),
2444     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 3.141592653589793038743797483317667178134L, -1.234330349600789959989661887846005659983e-16L),
2445     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.997188458999618357060632049675702684031e-16L, 1.234330349600789959989661887846005659983e-16L),
2446     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 3.141592653589793038743797483317667178134L, 1.234330349600789959989661887846005659983e-16L),
2447     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2448     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2449     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2450     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2451     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2452     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.141592653589793081453397514901996944859L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2453     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2454     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.141592653589793081453397514901996944859L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2455     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2456     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2457     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2458     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2459     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570092458683775059393382371963565104164e-16L, -0.0L),
2460     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 3.141592653589793081453397514901996944859L, -0.0L),
2461     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570092458683775059393382371963565104164e-16L, 0.0L),
2462     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 3.141592653589793081453397514901996944859L, 0.0L),
2463 #endif
2464     TEST_c_c (cacos, 0x1p-105L, 0.5L, 1.570796326794896619231321691639729392766L, -4.812118250596034474977589134243684231352e-1L),
2465     TEST_c_c (cacos, 0x1p-105L, -0.5L, 1.570796326794896619231321691639729392766L, 4.812118250596034474977589134243684231352e-1L),
2466     TEST_c_c (cacos, -0x1p-105L, 0.5L, 1.570796326794896619231321691639773491431L, -4.812118250596034474977589134243684231352e-1L),
2467     TEST_c_c (cacos, -0x1p-105L, -0.5L, 1.570796326794896619231321691639773491431L, 4.812118250596034474977589134243684231352e-1L),
2468     TEST_c_c (cacos, 0.5L, 0x1p-105L, 1.047197551196597746154214461093167628066L, -2.846556599890768890940941645338546615370e-32L),
2469     TEST_c_c (cacos, -0.5L, 0x1p-105L, 2.094395102393195492308428922186335256131L, -2.846556599890768890940941645338546615370e-32L),
2470     TEST_c_c (cacos, 0.5L, -0x1p-105L, 1.047197551196597746154214461093167628066L, 2.846556599890768890940941645338546615370e-32L),
2471     TEST_c_c (cacos, -0.5L, -0x1p-105L, 2.094395102393195492308428922186335256131L, 2.846556599890768890940941645338546615370e-32L),
2472     TEST_c_c (cacos, 0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639726790195L, -2.465190328815661891911651766508706967729e-32L),
2473     TEST_c_c (cacos, 0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639726790195L, 2.465190328815661891911651766508706967729e-32L),
2474     TEST_c_c (cacos, -0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639776094002L, -2.465190328815661891911651766508706967729e-32L),
2475     TEST_c_c (cacos, -0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639776094002L, 2.465190328815661891911651766508706967729e-32L),
2476 #ifndef TEST_FLOAT
2477     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2478     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2479     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2480     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2481     TEST_c_c (cacos, 0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639726790195L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2482     TEST_c_c (cacos, -0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639776094002L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2483     TEST_c_c (cacos, 0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639726790195L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2484     TEST_c_c (cacos, -0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639776094002L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2485 #endif
2486     TEST_c_c (cacos, 0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2487     TEST_c_c (cacos, 0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2488     TEST_c_c (cacos, -0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2489     TEST_c_c (cacos, -0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2490     TEST_c_c (cacos, 0x1p-105L, 0.0L, 1.570796326794896619231321691639726790195L, -0.0L),
2491     TEST_c_c (cacos, -0x1p-105L, 0.0L, 1.570796326794896619231321691639776094002L, -0.0L),
2492     TEST_c_c (cacos, 0x1p-105L, -0.0L, 1.570796326794896619231321691639726790195L, 0.0L),
2493     TEST_c_c (cacos, -0x1p-105L, -0.0L, 1.570796326794896619231321691639776094002L, 0.0L),
2494 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2495     TEST_c_c (cacos, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, -8.813735870195430252326093249797922409363e-1L),
2496     TEST_c_c (cacos, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, 8.813735870195430252326093249797922409363e-1L),
2497     TEST_c_c (cacos, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, -8.813735870195430252326093249797922409363e-1L),
2498     TEST_c_c (cacos, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, 8.813735870195430252326093249797922409363e-1L),
2499     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.765281878332676474347460257221369818872e-17L, -1.091004200533850618345330909857103457781e-17L),
2500     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 3.141592653589793220809824599952738140723L, -1.091004200533850618345330909857103457781e-17L),
2501     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.765281878332676474347460257221369818872e-17L, 1.091004200533850618345330909857103457781e-17L),
2502     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 3.141592653589793220809824599952738140723L, 1.091004200533850618345330909857103457781e-17L),
2503     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2504     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2505     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2506     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2507     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, -5.867357004219059108790368268900490184505e-4916L),
2508     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 3.141592653589793224584855575465046128902L, -5.867357004219059108790368268900490184505e-4916L),
2509     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, 5.867357004219059108790368268900490184505e-4916L),
2510     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 3.141592653589793224584855575465046128902L, 5.867357004219059108790368268900490184505e-4916L),
2511     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2512     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2513     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2514     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2515     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.387778780781445675529539585113525401762e-17L, -0.0L),
2516     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 3.141592653589793224584855575465046128902L, -0.0L),
2517     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.387778780781445675529539585113525401762e-17L, 0.0L),
2518     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 3.141592653589793224584855575465046128902L, 0.0L),
2519 #endif
2520     TEST_c_c (cacos, 0x1p-112L, 0.5L, 1.570796326794896619231321691639751269838L, -4.812118250596034474977589134243684231352e-1L),
2521     TEST_c_c (cacos, 0x1p-112L, -0.5L, 1.570796326794896619231321691639751269838L, 4.812118250596034474977589134243684231352e-1L),
2522     TEST_c_c (cacos, -0x1p-112L, 0.5L, 1.570796326794896619231321691639751614359L, -4.812118250596034474977589134243684231352e-1L),
2523     TEST_c_c (cacos, -0x1p-112L, -0.5L, 1.570796326794896619231321691639751614359L, 4.812118250596034474977589134243684231352e-1L),
2524     TEST_c_c (cacos, 0.5L, 0x1p-112L, 1.047197551196597746154214461093167628066L, -2.223872343664663196047610660420739543258e-34L),
2525     TEST_c_c (cacos, -0.5L, 0x1p-112L, 2.094395102393195492308428922186335256131L, -2.223872343664663196047610660420739543258e-34L),
2526     TEST_c_c (cacos, 0.5L, -0x1p-112L, 1.047197551196597746154214461093167628066L, 2.223872343664663196047610660420739543258e-34L),
2527     TEST_c_c (cacos, -0.5L, -0x1p-112L, 2.094395102393195492308428922186335256131L, 2.223872343664663196047610660420739543258e-34L),
2528     TEST_c_c (cacos, 0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751249506L, -1.925929944387235853055977942584927318538e-34L),
2529     TEST_c_c (cacos, 0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751249506L, 1.925929944387235853055977942584927318538e-34L),
2530     TEST_c_c (cacos, -0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751634692L, -1.925929944387235853055977942584927318538e-34L),
2531     TEST_c_c (cacos, -0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751634692L, 1.925929944387235853055977942584927318538e-34L),
2532 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2533     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2534     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2535     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2536     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2537     TEST_c_c (cacos, 0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751249506L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2538     TEST_c_c (cacos, -0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751634692L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2539     TEST_c_c (cacos, 0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751249506L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2540     TEST_c_c (cacos, -0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751634692L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2541 #endif
2542     TEST_c_c (cacos, 0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2543     TEST_c_c (cacos, 0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2544     TEST_c_c (cacos, -0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2545     TEST_c_c (cacos, -0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2546     TEST_c_c (cacos, 0x1p-112L, 0.0L, 1.570796326794896619231321691639751249506L, -0.0L),
2547     TEST_c_c (cacos, -0x1p-112L, 0.0L, 1.570796326794896619231321691639751634692L, -0.0L),
2548     TEST_c_c (cacos, 0x1p-112L, -0.0L, 1.570796326794896619231321691639751249506L, 0.0L),
2549     TEST_c_c (cacos, -0x1p-112L, -0.0L, 1.570796326794896619231321691639751634692L, 0.0L),
2550
2551     TEST_c_c (cacos, 0.75L, 1.25L, 1.11752014915610270578240049553777969L, -1.13239363160530819522266333696834467L),
2552     TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L),
2553     END_DATA (cacos)
2554   };
2555
2556 static void
2557 cacos_test (void)
2558 {
2559   errno = 0;
2560   FUNC(cacos) (BUILD_COMPLEX (0.7L, 1.2L));
2561   if (errno == ENOSYS)
2562     /* Function not implemented.  */
2563     return;
2564
2565   START (cacos);
2566   RUN_TEST_LOOP_c_c (cacos, cacos_test_data, );
2567   END (cacos, complex);
2568 }
2569
2570 static const struct test_c_c_data cacosh_test_data[] =
2571   {
2572     START_DATA (cacosh),
2573     TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l),
2574     TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l),
2575     TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l),
2576     TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l),
2577     TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l),
2578     TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l),
2579
2580     TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l),
2581     TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
2582
2583     TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l),
2584     TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l),
2585     TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l),
2586     TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l),
2587     TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l),
2588     TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
2589
2590     TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl),
2591     TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl),
2592     TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl),
2593     TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl),
2594
2595     TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0),
2596     TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero),
2597     TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0),
2598     TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero),
2599
2600     TEST_c_c (cacosh, plus_infty, qnan_value, plus_infty, qnan_value),
2601     TEST_c_c (cacosh, minus_infty, qnan_value, plus_infty, qnan_value),
2602
2603     TEST_c_c (cacosh, 0, qnan_value, qnan_value, qnan_value),
2604     TEST_c_c (cacosh, minus_zero, qnan_value, qnan_value, qnan_value),
2605
2606     TEST_c_c (cacosh, qnan_value, plus_infty, plus_infty, qnan_value),
2607     TEST_c_c (cacosh, qnan_value, minus_infty, plus_infty, qnan_value),
2608
2609     TEST_c_c (cacosh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2610     TEST_c_c (cacosh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2611
2612     TEST_c_c (cacosh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2613     TEST_c_c (cacosh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2614
2615     TEST_c_c (cacosh, qnan_value, qnan_value, qnan_value, qnan_value),
2616
2617     TEST_c_c (cacosh, plus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2618     TEST_c_c (cacosh, minus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2619     TEST_c_c (cacosh, plus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2620     TEST_c_c (cacosh, minus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2621     TEST_c_c (cacosh, plus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2622     TEST_c_c (cacosh, minus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2623     TEST_c_c (cacosh, plus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2624     TEST_c_c (cacosh, minus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2625     TEST_c_c (cacosh, plus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2626     TEST_c_c (cacosh, minus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2627     TEST_c_c (cacosh, plus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2628     TEST_c_c (cacosh, minus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2629
2630     TEST_c_c (cacosh, -1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, M_PIl),
2631     TEST_c_c (cacosh, -1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, -M_PIl),
2632     TEST_c_c (cacosh, -1.0L, plus_zero, plus_zero, M_PIl),
2633     TEST_c_c (cacosh, -1.0L, minus_zero, plus_zero, -M_PIl),
2634     TEST_c_c (cacosh, -0.5L, plus_zero, plus_zero, 2.094395102393195492308428922186335256131L),
2635     TEST_c_c (cacosh, -0.5L, minus_zero, plus_zero, -2.094395102393195492308428922186335256131L),
2636     TEST_c_c (cacosh, 0.5L, plus_zero, plus_zero, 1.047197551196597746154214461093167628066L),
2637     TEST_c_c (cacosh, 0.5L, minus_zero, plus_zero, -1.047197551196597746154214461093167628066L),
2638     TEST_c_c (cacosh, 1.0L, plus_zero, plus_zero, plus_zero),
2639     TEST_c_c (cacosh, 1.0L, minus_zero, plus_zero, minus_zero),
2640     TEST_c_c (cacosh, 1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, plus_zero),
2641     TEST_c_c (cacosh, 1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, minus_zero),
2642
2643     TEST_c_c (cacosh, 0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 8.881784197001252323389053344727730248720e-16L),
2644     TEST_c_c (cacosh, 0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -8.881784197001252323389053344727730248720e-16L),
2645     TEST_c_c (cacosh, -0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 3.141592653589792350284223683154270545292L),
2646     TEST_c_c (cacosh, -0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -3.141592653589792350284223683154270545292L),
2647     TEST_c_c (cacosh, 1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794895731052901991514519103193L),
2648     TEST_c_c (cacosh, -1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794897507409741391764983781004L),
2649     TEST_c_c (cacosh, 1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794895731052901991514519103193L),
2650     TEST_c_c (cacosh, -1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794897507409741391764983781004L),
2651 #ifndef TEST_FLOAT
2652     TEST_c_c (cacosh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
2653     TEST_c_c (cacosh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
2654     TEST_c_c (cacosh, -0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.141592653589793238462643383279502884197L),
2655     TEST_c_c (cacosh, -0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.141592653589793238462643383279502884197L),
2656     TEST_c_c (cacosh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2657     TEST_c_c (cacosh, -1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2658     TEST_c_c (cacosh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2659     TEST_c_c (cacosh, -1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2660 #endif
2661 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2662     TEST_c_c (cacosh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
2663     TEST_c_c (cacosh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
2664     TEST_c_c (cacosh, -0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 3.141592653589793238462643383279502884197L),
2665     TEST_c_c (cacosh, -0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -3.141592653589793238462643383279502884197L),
2666     TEST_c_c (cacosh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2667     TEST_c_c (cacosh, -1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2668     TEST_c_c (cacosh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2669     TEST_c_c (cacosh, -1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2670 #endif
2671     TEST_c_c (cacosh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
2672 #ifndef TEST_FLOAT
2673     TEST_c_c (cacosh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
2674 #endif
2675 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2676     TEST_c_c (cacosh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
2677 #endif
2678     TEST_c_c (cacosh, 0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442097L),
2679     TEST_c_c (cacosh, 0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442097L),
2680     TEST_c_c (cacosh, -0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442100L),
2681     TEST_c_c (cacosh, -0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442100L),
2682     TEST_c_c (cacosh, 1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2683     TEST_c_c (cacosh, -1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884195L),
2684     TEST_c_c (cacosh, 1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2685     TEST_c_c (cacosh, -1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884195L),
2686 #ifndef TEST_FLOAT
2687     TEST_c_c (cacosh, 0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2688     TEST_c_c (cacosh, 0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2689     TEST_c_c (cacosh, -0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2690     TEST_c_c (cacosh, -0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2691     TEST_c_c (cacosh, 1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2692     TEST_c_c (cacosh, -1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2693     TEST_c_c (cacosh, 1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2694     TEST_c_c (cacosh, -1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2695 #endif
2696 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2697     TEST_c_c (cacosh, 0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2698     TEST_c_c (cacosh, 0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2699     TEST_c_c (cacosh, -0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2700     TEST_c_c (cacosh, -0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2701     TEST_c_c (cacosh, 1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2702     TEST_c_c (cacosh, -1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2703     TEST_c_c (cacosh, 1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2704     TEST_c_c (cacosh, -1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2705 #endif
2706     TEST_c_c (cacosh, 0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.221357263937683325603909865564381489366L),
2707     TEST_c_c (cacosh, 0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.221357263937683325603909865564381489366L),
2708     TEST_c_c (cacosh, -0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.920235389652109912858733517715121394831L),
2709     TEST_c_c (cacosh, -0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.920235389652109912858733517715121394831L),
2710     TEST_c_c (cacosh, 1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 6.748888455860063801646649673121744318756e-1L),
2711     TEST_c_c (cacosh, -1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 2.466703808003786858297978415967328452322L),
2712     TEST_c_c (cacosh, 1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -6.748888455860063801646649673121744318756e-1L),
2713     TEST_c_c (cacosh, -1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -2.466703808003786858297978415967328452322L),
2714     TEST_c_c (cacosh, 0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.394493894017929688812643125003661339452L),
2715     TEST_c_c (cacosh, 0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.394493894017929688812643125003661339452L),
2716     TEST_c_c (cacosh, -0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.747098759571863549650000258275841544745L),
2717     TEST_c_c (cacosh, -0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.747098759571863549650000258275841544745L),
2718     TEST_c_c (cacosh, 1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 4.890443302710802929202843732146540079124e-1L),
2719     TEST_c_c (cacosh, -1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 2.652548323318712945542359010064848876285L),
2720     TEST_c_c (cacosh, 1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -4.890443302710802929202843732146540079124e-1L),
2721     TEST_c_c (cacosh, -1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -2.652548323318712945542359010064848876285L),
2722     TEST_c_c (cacosh, 0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.569458417435338878318763342108699202986L),
2723     TEST_c_c (cacosh, 0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.569458417435338878318763342108699202986L),
2724     TEST_c_c (cacosh, -0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.572134236154454360143880041170803681211L),
2725     TEST_c_c (cacosh, -0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.572134236154454360143880041170803681211L),
2726     TEST_c_c (cacosh, 1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 4.349129763101882771258049954181971959031e-2L),
2727     TEST_c_c (cacosh, -1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 3.098101355958774410750062883737683164607L),
2728     TEST_c_c (cacosh, 1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -4.349129763101882771258049954181971959031e-2L),
2729     TEST_c_c (cacosh, -1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -3.098101355958774410750062883737683164607L),
2730     TEST_c_c (cacosh, 0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796325518966635014803151387033957091L),
2731     TEST_c_c (cacosh, 0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796325518966635014803151387033957091L),
2732     TEST_c_c (cacosh, -0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796328070826603447840231892468927106L),
2733     TEST_c_c (cacosh, -0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796328070826603447840231892468927106L),
2734     TEST_c_c (cacosh, 1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 4.247867097467650115899790787875186617316e-5L),
2735     TEST_c_c (cacosh, -1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 3.141550174918818561961484385371624132331L),
2736     TEST_c_c (cacosh, 1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -4.247867097467650115899790787875186617316e-5L),
2737     TEST_c_c (cacosh, -1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -3.141550174918818561961484385371624132331L),
2738     TEST_c_c (cacosh, 0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691638670687364L),
2739     TEST_c_c (cacosh, 0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691638670687364L),
2740     TEST_c_c (cacosh, -0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691640832196834L),
2741     TEST_c_c (cacosh, -0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691640832196834L),
2742     TEST_c_c (cacosh, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 1.236292038260260888664514866456887257525e-15L),
2743     TEST_c_c (cacosh, -1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 3.141592653589792002170605123018614219682L),
2744     TEST_c_c (cacosh, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -1.236292038260260888664514866456887257525e-15L),
2745     TEST_c_c (cacosh, -1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -3.141592653589792002170605123018614219682L),
2746     TEST_c_c (cacosh, 0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442097L),
2747     TEST_c_c (cacosh, 0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442097L),
2748     TEST_c_c (cacosh, -0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442101L),
2749     TEST_c_c (cacosh, -0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442101L),
2750     TEST_c_c (cacosh, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 5.335635276982233498398987585285818977930e-20L),
2751     TEST_c_c (cacosh, -1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 3.141592653589793238409287030509680549213L),
2752     TEST_c_c (cacosh, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -5.335635276982233498398987585285818977930e-20L),
2753     TEST_c_c (cacosh, -1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -3.141592653589793238409287030509680549213L),
2754 #ifndef TEST_FLOAT
2755     TEST_c_c (cacosh, 0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2756     TEST_c_c (cacosh, 0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2757     TEST_c_c (cacosh, -0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2758     TEST_c_c (cacosh, -0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2759     TEST_c_c (cacosh, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
2760     TEST_c_c (cacosh, -1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 3.141592653589793238462643383279502884197L),
2761     TEST_c_c (cacosh, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
2762     TEST_c_c (cacosh, -1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -3.141592653589793238462643383279502884197L),
2763     TEST_c_c (cacosh, 0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2764     TEST_c_c (cacosh, 0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2765     TEST_c_c (cacosh, -0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2766     TEST_c_c (cacosh, -0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2767     TEST_c_c (cacosh, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
2768     TEST_c_c (cacosh, -1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 3.141592653589793238462643383279502884197L),
2769     TEST_c_c (cacosh, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
2770     TEST_c_c (cacosh, -1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -3.141592653589793238462643383279502884197L),
2771 #endif
2772 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2773     TEST_c_c (cacosh, 0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2774     TEST_c_c (cacosh, 0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2775     TEST_c_c (cacosh, -0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2776     TEST_c_c (cacosh, -0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2777     TEST_c_c (cacosh, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
2778     TEST_c_c (cacosh, -1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 3.141592653589793238462643383279502884197L),
2779     TEST_c_c (cacosh, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
2780     TEST_c_c (cacosh, -1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -3.141592653589793238462643383279502884197L),
2781     TEST_c_c (cacosh, 0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2782     TEST_c_c (cacosh, 0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2783     TEST_c_c (cacosh, -0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2784     TEST_c_c (cacosh, -0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2785     TEST_c_c (cacosh, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
2786     TEST_c_c (cacosh, -1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 3.141592653589793238462643383279502884197L),
2787     TEST_c_c (cacosh, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
2788     TEST_c_c (cacosh, -1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -3.141592653589793238462643383279502884197L),
2789 #endif
2790     TEST_c_c (cacosh, 0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796242501204621739026081991856762292L),
2791     TEST_c_c (cacosh, 0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796242501204621739026081991856762292L),
2792     TEST_c_c (cacosh, -0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796411088588616723617301287646121905L),
2793     TEST_c_c (cacosh, -0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796411088588616723617301287646121905L),
2794     TEST_c_c (cacosh, 0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 2.222118384408546368406374049167636760903e-4L),
2795     TEST_c_c (cacosh, -0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 3.141370441751352383825802745874586120521L),
2796     TEST_c_c (cacosh, 0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -2.222118384408546368406374049167636760903e-4L),
2797     TEST_c_c (cacosh, -0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -3.141370441751352383825802745874586120521L),
2798     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442097L),
2799     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442097L),
2800     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442101L),
2801     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442101L),
2802     TEST_c_c (cacosh, 0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 5.830451806317544230969669308596361881467e-36L),
2803     TEST_c_c (cacosh, -0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502878367L),
2804     TEST_c_c (cacosh, 0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -5.830451806317544230969669308596361881467e-36L),
2805     TEST_c_c (cacosh, -0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502878367L),
2806     TEST_c_c (cacosh, 0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2807     TEST_c_c (cacosh, 0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2808     TEST_c_c (cacosh, -0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2809     TEST_c_c (cacosh, -0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2810     TEST_c_c (cacosh, 0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 0.0L),
2811     TEST_c_c (cacosh, -0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502884197L),
2812     TEST_c_c (cacosh, 0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -0.0L),
2813     TEST_c_c (cacosh, -0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502884197L),
2814 #ifndef TEST_FLOAT
2815     TEST_c_c (cacosh, 0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896462222075823262262934288L),
2816     TEST_c_c (cacosh, 0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896462222075823262262934288L),
2817     TEST_c_c (cacosh, -0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896776240567560017239949909L),
2818     TEST_c_c (cacosh, -0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896776240567560017239949909L),
2819     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 9.590301705980041385828904092662391018164e-9L),
2820     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 3.141592643999491532482601997450598791535L),
2821     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -9.590301705980041385828904092662391018164e-9L),
2822     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -3.141592643999491532482601997450598791535L),
2823     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2824     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2825     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2826     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2827     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2828     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2829     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2830     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2831     TEST_c_c (cacosh, 0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2832     TEST_c_c (cacosh, 0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2833     TEST_c_c (cacosh, -0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2834     TEST_c_c (cacosh, -0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2835     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 0.0L),
2836     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2837     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -0.0L),
2838     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2839 #endif
2840 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2841     TEST_c_c (cacosh, 0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619154657020805582738031L),
2842     TEST_c_c (cacosh, 0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619154657020805582738031L),
2843     TEST_c_c (cacosh, -0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619307986362473920146166L),
2844     TEST_c_c (cacosh, -0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619307986362473920146166L),
2845     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 2.119177303101063432592523199680782317447e-10L),
2846     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 3.141592653377875508152537040020250564229L),
2847     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -2.119177303101063432592523199680782317447e-10L),
2848     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -3.141592653377875508152537040020250564229L),
2849 # if LDBL_MIN_EXP <= -16381
2850     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2851     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2852     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2853     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2854     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 1.748608650034385653922359120438227480943e-4923L),
2855     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2856     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -1.748608650034385653922359120438227480943e-4923L),
2857     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2858 # endif
2859     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2860     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2861     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2862     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2863     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 0.0L),
2864     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2865     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -0.0L),
2866     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2867 #endif
2868 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2869     TEST_c_c (cacosh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639742726335L),
2870     TEST_c_c (cacosh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639742726335L),
2871     TEST_c_c (cacosh, -0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639760157863L),
2872     TEST_c_c (cacosh, -0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639760157863L),
2873     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 5.394221422390606848017034778914096659726e-17L),
2874     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 3.141592653589793184520429159373434404027L),
2875     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -5.394221422390606848017034778914096659726e-17L),
2876     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -3.141592653589793184520429159373434404027L),
2877     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2878     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2879     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2880     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2881     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2882     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2883     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2884     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2885     TEST_c_c (cacosh, 0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2886     TEST_c_c (cacosh, 0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2887     TEST_c_c (cacosh, -0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2888     TEST_c_c (cacosh, -0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2889     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 0.0L),
2890     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2891     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -0.0L),
2892     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2893 #endif
2894 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2895     TEST_c_c (cacosh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751374007L),
2896     TEST_c_c (cacosh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751374007L),
2897     TEST_c_c (cacosh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751510190L),
2898     TEST_c_c (cacosh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751510190L),
2899     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 4.767863183742677481693563511435642755521e-18L),
2900     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 3.141592653589793233694780199536825402504L),
2901     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -4.767863183742677481693563511435642755521e-18L),
2902     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -3.141592653589793233694780199536825402504L),
2903     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2904     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2905     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2906     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2907     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 4.148847925325683229178506116378864361396e-4916L),
2908     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2909     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -4.148847925325683229178506116378864361396e-4916L),
2910     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2911     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2912     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2913     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2914     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2915     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 0.0L),
2916     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2917     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -0.0L),
2918     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2919 #endif
2920     TEST_c_c (cacosh, 0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796242501197085295336701632142060969L),
2921     TEST_c_c (cacosh, 0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796242501197085295336701632142060969L),
2922     TEST_c_c (cacosh, -0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796411088596153167306681647360823228L),
2923     TEST_c_c (cacosh, -0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796411088596153167306681647360823228L),
2924     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 4.391863861910487109445187743978204002614e-4L),
2925     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 3.141153467203602189751698864505105063797L),
2926     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -4.391863861910487109445187743978204002614e-4L),
2927     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -3.141153467203602189751698864505105063797L),
2928     TEST_c_c (cacosh, 0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442097L),
2929     TEST_c_c (cacosh, 0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442097L),
2930     TEST_c_c (cacosh, -0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442101L),
2931     TEST_c_c (cacosh, -0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442101L),
2932     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.452669847162035876032494826387364972849e-4L),
2933     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.141247386605077034875040133796864147700L),
2934     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.452669847162035876032494826387364972849e-4L),
2935     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.141247386605077034875040133796864147700L),
2936     TEST_c_c (cacosh, 0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2937     TEST_c_c (cacosh, 0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2938     TEST_c_c (cacosh, -0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2939     TEST_c_c (cacosh, -0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2940     TEST_c_c (cacosh, 0x0.ffffffp0L, 0.0L, 0.0L, 3.452669847162035876032494826387364972849e-4L),
2941     TEST_c_c (cacosh, -0x0.ffffffp0L, 0.0L, 0.0L, 3.141247386605077034875040133796864147700L),
2942     TEST_c_c (cacosh, 0x0.ffffffp0L, -0.0L, 0.0L, -3.452669847162035876032494826387364972849e-4L),
2943     TEST_c_c (cacosh, -0x0.ffffffp0L, -0.0L, 0.0L, -3.141247386605077034875040133796864147700L),
2944     TEST_c_c (cacosh, 0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796220170866625230343643673321150378L),
2945     TEST_c_c (cacosh, 0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796220170866625230343643673321150378L),
2946     TEST_c_c (cacosh, -0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796433418926613232299739606181733819L),
2947     TEST_c_c (cacosh, -0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796433418926613232299739606181733819L),
2948     TEST_c_c (cacosh, 0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 1.047197551196603215914744618665204532273L),
2949     TEST_c_c (cacosh, -0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 2.094395102393190022547898764614298351924L),
2950     TEST_c_c (cacosh, 0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -1.047197551196603215914744618665204532273L),
2951     TEST_c_c (cacosh, -0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -2.094395102393190022547898764614298351924L),
2952     TEST_c_c (cacosh, 0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442096L),
2953     TEST_c_c (cacosh, 0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442096L),
2954     TEST_c_c (cacosh, -0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442101L),
2955     TEST_c_c (cacosh, -0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442101L),
2956     TEST_c_c (cacosh, 0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2957     TEST_c_c (cacosh, -0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2958     TEST_c_c (cacosh, 0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2959     TEST_c_c (cacosh, -0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2960     TEST_c_c (cacosh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796207585607068450636380271254316214L),
2961     TEST_c_c (cacosh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796207585607068450636380271254316214L),
2962     TEST_c_c (cacosh, -0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796446004186170012007003008248567984L),
2963     TEST_c_c (cacosh, -0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796446004186170012007003008248567984L),
2964     TEST_c_c (cacosh, 0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442096L),
2965     TEST_c_c (cacosh, 0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442096L),
2966     TEST_c_c (cacosh, -0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442101L),
2967     TEST_c_c (cacosh, -0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442101L),
2968     TEST_c_c (cacosh, 0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2969     TEST_c_c (cacosh, -0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2970     TEST_c_c (cacosh, 0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2971     TEST_c_c (cacosh, -0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2972     TEST_c_c (cacosh, 0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2973     TEST_c_c (cacosh, 0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2974     TEST_c_c (cacosh, -0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2975     TEST_c_c (cacosh, -0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2976     TEST_c_c (cacosh, 0x1p-23L, 0.0L, 0.0L, 1.570796207585607068449789347324000006847L),
2977     TEST_c_c (cacosh, -0x1p-23L, 0.0L, 0.0L, 1.570796446004186170012854035955502877351L),
2978     TEST_c_c (cacosh, 0x1p-23L, -0.0L, 0.0L, -1.570796207585607068449789347324000006847L),
2979     TEST_c_c (cacosh, -0x1p-23L, -0.0L, 0.0L, -1.570796446004186170012854035955502877351L),
2980     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2981     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2982     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2983     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2984 #ifndef TEST_FLOAT
2985     TEST_c_c (cacosh, 0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896462222075823262236786996L),
2986     TEST_c_c (cacosh, 0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896462222075823262236786996L),
2987     TEST_c_c (cacosh, -0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896776240567560017266097201L),
2988     TEST_c_c (cacosh, -0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896776240567560017266097201L),
2989     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 1.895456983915074112227925127005564372844e-8L),
2990     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 3.141592634635223399311902261000251614142L),
2991     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -1.895456983915074112227925127005564372844e-8L),
2992     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -3.141592634635223399311902261000251614142L),
2993     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2994     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2995     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2996     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2997     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2998     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2999     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3000     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3001     TEST_c_c (cacosh, 0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
3002     TEST_c_c (cacosh, 0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
3003     TEST_c_c (cacosh, -0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
3004     TEST_c_c (cacosh, -0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
3005     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0.0L, 0.0L, 1.490116119384765638786343542550461592240e-8L),
3006     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0.0L, 0.0L, 3.141592638688632044614986995416067458693L),
3007     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0.0L, 0.0L, -1.490116119384765638786343542550461592240e-8L),
3008     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0.0L, 0.0L, -3.141592638688632044614986995416067458693L),
3009 #endif
3010     TEST_c_c (cacosh, 0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896420628589431857911675917L),
3011     TEST_c_c (cacosh, 0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896420628589431857911675917L),
3012     TEST_c_c (cacosh, -0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896817834053951421591208280L),
3013     TEST_c_c (cacosh, -0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896817834053951421591208280L),
3014     TEST_c_c (cacosh, 0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 1.047197551196597746154214461093186605110L),
3015     TEST_c_c (cacosh, -0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 2.094395102393195492308428922186316279087L),
3016     TEST_c_c (cacosh, 0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -1.047197551196597746154214461093186605110L),
3017     TEST_c_c (cacosh, -0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -2.094395102393195492308428922186316279087L),
3018 #ifndef TEST_FLOAT
3019     TEST_c_c (cacosh, 0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3020     TEST_c_c (cacosh, 0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3021     TEST_c_c (cacosh, -0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3022     TEST_c_c (cacosh, -0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3023     TEST_c_c (cacosh, 0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
3024     TEST_c_c (cacosh, -0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
3025     TEST_c_c (cacosh, 0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
3026     TEST_c_c (cacosh, -0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
3027 #endif
3028     TEST_c_c (cacosh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896397186716766608443357372L),
3029     TEST_c_c (cacosh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896397186716766608443357372L),
3030     TEST_c_c (cacosh, -0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896841275926616671059526825L),
3031     TEST_c_c (cacosh, -0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896841275926616671059526825L),
3032 #ifndef TEST_FLOAT
3033     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3034     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3035     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3036     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3037     TEST_c_c (cacosh, 0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
3038     TEST_c_c (cacosh, -0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
3039     TEST_c_c (cacosh, 0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
3040     TEST_c_c (cacosh, -0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
3041 #endif
3042     TEST_c_c (cacosh, 0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3043     TEST_c_c (cacosh, 0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3044     TEST_c_c (cacosh, -0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
3045     TEST_c_c (cacosh, -0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
3046     TEST_c_c (cacosh, 0x1p-52L, 0.0L, 0.0L, 1.570796326794896397186716766608443357372L),
3047     TEST_c_c (cacosh, -0x1p-52L, 0.0L, 0.0L, 1.570796326794896841275926616671059526825L),
3048     TEST_c_c (cacosh, 0x1p-52L, -0.0L, 0.0L, -1.570796326794896397186716766608443357372L),
3049     TEST_c_c (cacosh, -0x1p-52L, -0.0L, 0.0L, -1.570796326794896841275926616671059526825L),
3050 #ifndef TEST_FLOAT
3051     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3052     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3053     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3054     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
3055 #endif
3056 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3057     TEST_c_c (cacosh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619154657020805582738025L),
3058     TEST_c_c (cacosh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619154657020805582738025L),
3059     TEST_c_c (cacosh, -0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619307986362473920146173L),
3060     TEST_c_c (cacosh, -0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619307986362473920146173L),
3061     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 4.188407771167967636741951941902992986043e-10L),
3062     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 3.141592653170952461345846619605307690007L),
3063     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -4.188407771167967636741951941902992986043e-10L),
3064     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -3.141592653170952461345846619605307690007L),
3065 # if LDBL_MIN_EXP <= -16381
3066     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3067     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3068     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3069     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3070     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.292722539913596233371825532007990724506e-10L),
3071     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.141592653260520984471283759942320330996L),
3072     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.292722539913596233371825532007990724506e-10L),
3073     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.141592653260520984471283759942320330996L),
3074 # endif
3075     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3076     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3077     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
3078     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
3079     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.292722539913596233371825532007990724506e-10L),
3080     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.141592653260520984471283759942320330996L),
3081     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.292722539913596233371825532007990724506e-10L),
3082     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.141592653260520984471283759942320330996L),
3083 #endif
3084     TEST_c_c (cacosh, 0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619134347701278529840650L),
3085     TEST_c_c (cacosh, 0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619134347701278529840650L),
3086     TEST_c_c (cacosh, -0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619328295682000973043547L),
3087     TEST_c_c (cacosh, -0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619328295682000973043547L),
3088     TEST_c_c (cacosh, 0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 1.047197551196597746154214461093167628070L),
3089     TEST_c_c (cacosh, -0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 2.094395102393195492308428922186335256127L),
3090     TEST_c_c (cacosh, 0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -1.047197551196597746154214461093167628070L),
3091     TEST_c_c (cacosh, -0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -2.094395102393195492308428922186335256127L),
3092 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3093     TEST_c_c (cacosh, 0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3094     TEST_c_c (cacosh, 0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3095     TEST_c_c (cacosh, -0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
3096     TEST_c_c (cacosh, -0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
3097     TEST_c_c (cacosh, 0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
3098     TEST_c_c (cacosh, -0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
3099     TEST_c_c (cacosh, 0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
3100     TEST_c_c (cacosh, -0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
3101 #endif
3102     TEST_c_c (cacosh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619122901474391200998698L),
3103     TEST_c_c (cacosh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619122901474391200998698L),
3104     TEST_c_c (cacosh, -0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619339741908888301885499L),
3105     TEST_c_c (cacosh, -0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619339741908888301885499L),
3106 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3107     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3108     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3109     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3110     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3111     TEST_c_c (cacosh, 0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
3112     TEST_c_c (cacosh, -0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
3113     TEST_c_c (cacosh, 0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
3114     TEST_c_c (cacosh, -0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
3115 #endif
3116     TEST_c_c (cacosh, 0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3117     TEST_c_c (cacosh, 0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3118     TEST_c_c (cacosh, -0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
3119     TEST_c_c (cacosh, -0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
3120     TEST_c_c (cacosh, 0x1p-63L, 0.0L, 0.0L, 1.570796326794896619122901474391200998698L),
3121     TEST_c_c (cacosh, -0x1p-63L, 0.0L, 0.0L, 1.570796326794896619339741908888301885499L),
3122     TEST_c_c (cacosh, 0x1p-63L, -0.0L, 0.0L, -1.570796326794896619122901474391200998698L),
3123     TEST_c_c (cacosh, -0x1p-63L, -0.0L, 0.0L, -1.570796326794896619339741908888301885499L),
3124 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3125     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3126     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3127     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3128     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
3129 #endif
3130 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3131     TEST_c_c (cacosh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639734010571L),
3132     TEST_c_c (cacosh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639734010571L),
3133     TEST_c_c (cacosh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639768873627L),
3134     TEST_c_c (cacosh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639768873627L),
3135     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 1.997188458999618357060632049675702684031e-16L),
3136     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 3.141592653589793038743797483317667178134L),
3137     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -1.997188458999618357060632049675702684031e-16L),
3138     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -3.141592653589793038743797483317667178134L),
3139     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3140     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3141     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3142     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3143     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3144     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3145     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3146     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3147     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3148     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3149     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3150     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3151     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 1.570092458683775059393382371963565104164e-16L),
3152     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 3.141592653589793081453397514901996944859L),
3153     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -1.570092458683775059393382371963565104164e-16L),
3154     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -3.141592653589793081453397514901996944859L),
3155 #endif
3156     TEST_c_c (cacosh, 0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639729392766L),
3157     TEST_c_c (cacosh, 0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639729392766L),
3158     TEST_c_c (cacosh, -0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639773491431L),
3159     TEST_c_c (cacosh, -0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639773491431L),
3160     TEST_c_c (cacosh, 0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 1.047197551196597746154214461093167628066L),
3161     TEST_c_c (cacosh, -0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 2.094395102393195492308428922186335256131L),
3162     TEST_c_c (cacosh, 0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -1.047197551196597746154214461093167628066L),
3163     TEST_c_c (cacosh, -0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -2.094395102393195492308428922186335256131L),
3164     TEST_c_c (cacosh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639726790195L),
3165     TEST_c_c (cacosh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639726790195L),
3166     TEST_c_c (cacosh, -0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639776094002L),
3167     TEST_c_c (cacosh, -0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639776094002L),
3168 #ifndef TEST_FLOAT
3169     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3170     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3171     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3172     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3173     TEST_c_c (cacosh, 0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3174     TEST_c_c (cacosh, -0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3175     TEST_c_c (cacosh, 0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3176     TEST_c_c (cacosh, -0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3177 #endif
3178     TEST_c_c (cacosh, 0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3179     TEST_c_c (cacosh, 0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3180     TEST_c_c (cacosh, -0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3181     TEST_c_c (cacosh, -0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3182     TEST_c_c (cacosh, 0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639726790195L),
3183     TEST_c_c (cacosh, -0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639776094002L),
3184     TEST_c_c (cacosh, 0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639726790195L),
3185     TEST_c_c (cacosh, -0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639776094002L),
3186 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3187     TEST_c_c (cacosh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751305915L),
3188     TEST_c_c (cacosh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751305915L),
3189     TEST_c_c (cacosh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751578282L),
3190     TEST_c_c (cacosh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751578282L),
3191     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 1.765281878332676474347460257221369818872e-17L),
3192     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 3.141592653589793220809824599952738140723L),
3193     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -1.765281878332676474347460257221369818872e-17L),
3194     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -3.141592653589793220809824599952738140723L),
3195     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3196     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3197     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3198     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3199     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 1.387778780781445675529539585113525401762e-17L),
3200     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 3.141592653589793224584855575465046128902L),
3201     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -1.387778780781445675529539585113525401762e-17L),
3202     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -3.141592653589793224584855575465046128902L),
3203     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3204     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3205     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3206     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3207     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 1.387778780781445675529539585113525401762e-17L),
3208     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 3.141592653589793224584855575465046128902L),
3209     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -1.387778780781445675529539585113525401762e-17L),
3210     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -3.141592653589793224584855575465046128902L),
3211 #endif
3212     TEST_c_c (cacosh, 0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751269838L),
3213     TEST_c_c (cacosh, 0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751269838L),
3214     TEST_c_c (cacosh, -0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751614359L),
3215     TEST_c_c (cacosh, -0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751614359L),
3216     TEST_c_c (cacosh, 0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 1.047197551196597746154214461093167628066L),
3217     TEST_c_c (cacosh, -0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 2.094395102393195492308428922186335256131L),
3218     TEST_c_c (cacosh, 0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -1.047197551196597746154214461093167628066L),
3219     TEST_c_c (cacosh, -0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -2.094395102393195492308428922186335256131L),
3220     TEST_c_c (cacosh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751249506L),
3221     TEST_c_c (cacosh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751249506L),
3222     TEST_c_c (cacosh, -0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751634692L),
3223     TEST_c_c (cacosh, -0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751634692L),
3224 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3225     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3226     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3227     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3228     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3229     TEST_c_c (cacosh, 0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3230     TEST_c_c (cacosh, -0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3231     TEST_c_c (cacosh, 0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3232     TEST_c_c (cacosh, -0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3233 #endif
3234     TEST_c_c (cacosh, 0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3235     TEST_c_c (cacosh, 0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3236     TEST_c_c (cacosh, -0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3237     TEST_c_c (cacosh, -0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3238     TEST_c_c (cacosh, 0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751249506L),
3239     TEST_c_c (cacosh, -0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751634692L),
3240     TEST_c_c (cacosh, 0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751249506L),
3241     TEST_c_c (cacosh, -0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751634692L),
3242
3243     TEST_c_c (cacosh, 0.75L, 1.25L, 1.13239363160530819522266333696834467L, 1.11752014915610270578240049553777969L),
3244     TEST_c_c (cacosh, -2, -3, 1.9833870299165354323470769028940395L, -2.1414491111159960199416055713254211L),
3245     END_DATA (cacosh)
3246   };
3247
3248 static void
3249 cacosh_test (void)
3250 {
3251   errno = 0;
3252   FUNC(cacosh) (BUILD_COMPLEX (0.7L, 1.2L));
3253   if (errno == ENOSYS)
3254     /* Function not implemented.  */
3255     return;
3256
3257   START (cacosh);
3258   RUN_TEST_LOOP_c_c (cacosh, cacosh_test_data, );
3259   END (cacosh, complex);
3260 }
3261
3262
3263 static const struct test_c_f_data carg_test_data[] =
3264   {
3265     START_DATA (carg);
3266     /* carg (x + iy) is specified as atan2 (y, x) */
3267
3268     /* carg (x + i 0) == 0 for x > 0.  */
3269     TEST_c_f (carg, 2.0, 0, 0),
3270     /* carg (x - i 0) == -0 for x > 0.  */
3271     TEST_c_f (carg, 2.0, minus_zero, minus_zero),
3272
3273     TEST_c_f (carg, 0, 0, 0),
3274     TEST_c_f (carg, 0, minus_zero, minus_zero),
3275
3276     /* carg (x + i 0) == +pi for x < 0.  */
3277     TEST_c_f (carg, -2.0, 0, M_PIl),
3278
3279     /* carg (x - i 0) == -pi for x < 0.  */
3280     TEST_c_f (carg, -2.0, minus_zero, -M_PIl),
3281
3282     TEST_c_f (carg, minus_zero, 0, M_PIl),
3283     TEST_c_f (carg, minus_zero, minus_zero, -M_PIl),
3284
3285     /* carg (+0 + i y) == pi/2 for y > 0.  */
3286     TEST_c_f (carg, 0, 2.0, M_PI_2l),
3287
3288     /* carg (-0 + i y) == pi/2 for y > 0.  */
3289     TEST_c_f (carg, minus_zero, 2.0, M_PI_2l),
3290
3291     /* carg (+0 + i y) == -pi/2 for y < 0.  */
3292     TEST_c_f (carg, 0, -2.0, -M_PI_2l),
3293
3294     /* carg (-0 + i y) == -pi/2 for y < 0.  */
3295     TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l),
3296
3297     /* carg (inf + i y) == +0 for finite y > 0.  */
3298     TEST_c_f (carg, plus_infty, 2.0, 0),
3299
3300     /* carg (inf + i y) == -0 for finite y < 0.  */
3301     TEST_c_f (carg, plus_infty, -2.0, minus_zero),
3302
3303     /* carg(x + i inf) == pi/2 for finite x.  */
3304     TEST_c_f (carg, 10.0, plus_infty, M_PI_2l),
3305
3306     /* carg(x - i inf) == -pi/2 for finite x.  */
3307     TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l),
3308
3309     /* carg (-inf + i y) == +pi for finite y > 0.  */
3310     TEST_c_f (carg, minus_infty, 10.0, M_PIl),
3311
3312     /* carg (-inf + i y) == -pi for finite y < 0.  */
3313     TEST_c_f (carg, minus_infty, -10.0, -M_PIl),
3314
3315     TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l),
3316
3317     TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l),
3318
3319     TEST_c_f (carg, minus_infty, plus_infty, M_PI_34l),
3320
3321     TEST_c_f (carg, minus_infty, minus_infty, -M_PI_34l),
3322
3323     TEST_c_f (carg, qnan_value, qnan_value, qnan_value),
3324     END_DATA (carg);
3325   };
3326
3327 static void
3328 carg_test (void)
3329 {
3330   START (carg);
3331   RUN_TEST_LOOP_c_f (carg, carg_test_data, );
3332   END (carg);
3333 }
3334
3335 static const struct test_c_c_data casin_test_data[] =
3336   {
3337     START_DATA (casin),
3338     TEST_c_c (casin, 0, 0, 0.0, 0.0),
3339     TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0),
3340     TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero),
3341     TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero),
3342
3343     TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty),
3344     TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty),
3345     TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty),
3346     TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty),
3347
3348     TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty),
3349     TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty),
3350     TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty),
3351     TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty),
3352     TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty),
3353     TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty),
3354     TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty),
3355     TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty),
3356
3357     TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty),
3358     TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty),
3359     TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty),
3360     TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty),
3361
3362     TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty),
3363     TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty),
3364     TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty),
3365     TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty),
3366
3367     TEST_c_c (casin, qnan_value, plus_infty, qnan_value, plus_infty),
3368     TEST_c_c (casin, qnan_value, minus_infty, qnan_value, minus_infty),
3369
3370     TEST_c_c (casin, 0.0, qnan_value, 0.0, qnan_value),
3371     TEST_c_c (casin, minus_zero, qnan_value, minus_zero, qnan_value),
3372
3373     TEST_c_c (casin, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3374     TEST_c_c (casin, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3375
3376     TEST_c_c (casin, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3377     TEST_c_c (casin, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3378
3379     TEST_c_c (casin, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3380     TEST_c_c (casin, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3381
3382     TEST_c_c (casin, qnan_value, qnan_value, qnan_value, qnan_value),
3383
3384     TEST_c_c (casin, plus_zero, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L),
3385     TEST_c_c (casin, minus_zero, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L),
3386     TEST_c_c (casin, plus_zero, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L),
3387     TEST_c_c (casin, minus_zero, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L),
3388     TEST_c_c (casin, plus_zero, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L),
3389     TEST_c_c (casin, minus_zero, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L),
3390     TEST_c_c (casin, plus_zero, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L),
3391     TEST_c_c (casin, minus_zero, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L),
3392     TEST_c_c (casin, plus_zero, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L),
3393     TEST_c_c (casin, minus_zero, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L),
3394     TEST_c_c (casin, plus_zero, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L),
3395     TEST_c_c (casin, minus_zero, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L),
3396
3397     TEST_c_c (casin, -1.5L, plus_zero, -M_PI_2l, 0.9624236501192068949955178268487368462704L),
3398     TEST_c_c (casin, -1.5L, minus_zero, -M_PI_2l, -0.9624236501192068949955178268487368462704L),
3399     TEST_c_c (casin, -1.0L, plus_zero, -M_PI_2l, plus_zero),
3400     TEST_c_c (casin, -1.0L, minus_zero, -M_PI_2l, minus_zero),
3401     TEST_c_c (casin, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L, plus_zero),
3402     TEST_c_c (casin, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L, minus_zero),
3403     TEST_c_c (casin, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L, plus_zero),
3404     TEST_c_c (casin, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L, minus_zero),
3405     TEST_c_c (casin, 1.0L, plus_zero, M_PI_2l, plus_zero),
3406     TEST_c_c (casin, 1.0L, minus_zero, M_PI_2l, minus_zero),
3407     TEST_c_c (casin, 1.5L, plus_zero, M_PI_2l, 0.9624236501192068949955178268487368462704L),
3408     TEST_c_c (casin, 1.5L, minus_zero, M_PI_2l, -0.9624236501192068949955178268487368462704L),
3409
3410     TEST_c_c (casin, 0x1p50L, 1.0L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3411     TEST_c_c (casin, 0x1p50L, -1.0L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3412     TEST_c_c (casin, -0x1p50L, 1.0L, -1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3413     TEST_c_c (casin, -0x1p50L, -1.0L, -1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3414     TEST_c_c (casin, 1.0L, 0x1p50L, 8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3415     TEST_c_c (casin, -1.0L, 0x1p50L, -8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3416     TEST_c_c (casin, 1.0L, -0x1p50L, 8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3417     TEST_c_c (casin, -1.0L, -0x1p50L, -8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3418 #ifndef TEST_FLOAT
3419     TEST_c_c (casin, 0x1p500L, 1.0L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3420     TEST_c_c (casin, 0x1p500L, -1.0L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3421     TEST_c_c (casin, -0x1p500L, 1.0L, -1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3422     TEST_c_c (casin, -0x1p500L, -1.0L, -1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3423     TEST_c_c (casin, 1.0L, 0x1p500L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3424     TEST_c_c (casin, -1.0L, 0x1p500L, -3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3425     TEST_c_c (casin, 1.0L, -0x1p500L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3426     TEST_c_c (casin, -1.0L, -0x1p500L, -3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3427 #endif
3428 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3429     TEST_c_c (casin, 0x1p5000L, 1.0L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3430     TEST_c_c (casin, 0x1p5000L, -1.0L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3431     TEST_c_c (casin, -0x1p5000L, 1.0L, -1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3432     TEST_c_c (casin, -0x1p5000L, -1.0L, -1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3433     TEST_c_c (casin, 1.0L, 0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3434     TEST_c_c (casin, -1.0L, 0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3435     TEST_c_c (casin, 1.0L, -0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3436     TEST_c_c (casin, -1.0L, -0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3437 #endif
3438
3439     TEST_c_c (casin, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, 8.973081118419833726837456344608533993585e1L),
3440 #ifndef TEST_FLOAT
3441     TEST_c_c (casin, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, 7.107906849659093345062145442726115449315e2L),
3442 #endif
3443 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3444     TEST_c_c (casin, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, 1.135753137836666928715489992987020363057e4L),
3445 #endif
3446
3447     TEST_c_c (casin, 0x1.fp-129L, 1.5L, 1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3448     TEST_c_c (casin, 0x1.fp-129L, -1.5L, 1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3449     TEST_c_c (casin, -0x1.fp-129L, 1.5L, -1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3450     TEST_c_c (casin, -0x1.fp-129L, -1.5L, -1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3451     TEST_c_c (casin, 1.5L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3452     TEST_c_c (casin, -1.5L, 0x1.fp-129L, -1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3453     TEST_c_c (casin, 1.5L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3454     TEST_c_c (casin, -1.5L, -0x1.fp-129L, -1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3455 #ifndef TEST_FLOAT
3456     TEST_c_c (casin, 0x1.fp-1025L, 1.5L, 2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3457     TEST_c_c (casin, 0x1.fp-1025L, -1.5L, 2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3458     TEST_c_c (casin, -0x1.fp-1025L, 1.5L, -2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3459     TEST_c_c (casin, -0x1.fp-1025L, -1.5L, -2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3460     TEST_c_c (casin, 1.5L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3461     TEST_c_c (casin, -1.5L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3462     TEST_c_c (casin, 1.5L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3463     TEST_c_c (casin, -1.5L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3464 #endif
3465 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3466     TEST_c_c (casin, 0x1.fp-16385L, 1.5L, 4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3467     TEST_c_c (casin, 0x1.fp-16385L, -1.5L, 4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3468     TEST_c_c (casin, -0x1.fp-16385L, 1.5L, -4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3469     TEST_c_c (casin, -0x1.fp-16385L, -1.5L, -4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3470     TEST_c_c (casin, 1.5L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3471     TEST_c_c (casin, -1.5L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3472     TEST_c_c (casin, 1.5L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3473     TEST_c_c (casin, -1.5L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3474 #endif
3475
3476     TEST_c_c (casin, 0.5L, 1.0L, 3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3477     TEST_c_c (casin, 0.5L, -1.0L, 3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3478     TEST_c_c (casin, -0.5L, 1.0L, -3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3479     TEST_c_c (casin, -0.5L, -1.0L, -3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3480     TEST_c_c (casin, 1.0L, 0.5L, 8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3481     TEST_c_c (casin, -1.0L, 0.5L, -8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3482     TEST_c_c (casin, 1.0L, -0.5L, 8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3483     TEST_c_c (casin, -1.0L, -0.5L, -8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3484     TEST_c_c (casin, 0.25L, 1.0L, 1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3485     TEST_c_c (casin, 0.25L, -1.0L, 1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3486     TEST_c_c (casin, -0.25L, 1.0L, -1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3487     TEST_c_c (casin, -0.25L, -1.0L, -1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3488     TEST_c_c (casin, 1.0L, 0.25L, 1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3489     TEST_c_c (casin, -1.0L, 0.25L, -1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3490     TEST_c_c (casin, 1.0L, -0.25L, 1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3491     TEST_c_c (casin, -1.0L, -0.25L, -1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3492     TEST_c_c (casin, 0x1.fp-10L, 1.0L, 1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3493     TEST_c_c (casin, 0x1.fp-10L, -1.0L, 1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3494     TEST_c_c (casin, -0x1.fp-10L, 1.0L, -1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3495     TEST_c_c (casin, -0x1.fp-10L, -1.0L, -1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3496     TEST_c_c (casin, 1.0L, 0x1.fp-10L, 1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3497     TEST_c_c (casin, -1.0L, 0x1.fp-10L, -1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3498     TEST_c_c (casin, 1.0L, -0x1.fp-10L, 1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3499     TEST_c_c (casin, -1.0L, -0x1.fp-10L, -1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3500     TEST_c_c (casin, 0x1.fp-30L, 1.0L, 1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3501     TEST_c_c (casin, 0x1.fp-30L, -1.0L, 1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3502     TEST_c_c (casin, -0x1.fp-30L, 1.0L, -1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3503     TEST_c_c (casin, -0x1.fp-30L, -1.0L, -1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3504     TEST_c_c (casin, 1.0L, 0x1.fp-30L, 1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3505     TEST_c_c (casin, -1.0L, 0x1.fp-30L, -1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3506     TEST_c_c (casin, 1.0L, -0x1.fp-30L, 1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3507     TEST_c_c (casin, -1.0L, -0x1.fp-30L, -1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3508     TEST_c_c (casin, 0x1.fp-100L, 1.0L, 1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3509     TEST_c_c (casin, 0x1.fp-100L, -1.0L, 1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3510     TEST_c_c (casin, -0x1.fp-100L, 1.0L, -1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3511     TEST_c_c (casin, -0x1.fp-100L, -1.0L, -1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3512     TEST_c_c (casin, 1.0L, 0x1.fp-100L, 1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3513     TEST_c_c (casin, -1.0L, 0x1.fp-100L, -1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3514     TEST_c_c (casin, 1.0L, -0x1.fp-100L, 1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3515     TEST_c_c (casin, -1.0L, -0x1.fp-100L, -1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3516     TEST_c_c (casin, 0x1.fp-129L, 1.0L, 2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3517     TEST_c_c (casin, 0x1.fp-129L, -1.0L, 2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3518     TEST_c_c (casin, -0x1.fp-129L, 1.0L, -2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3519     TEST_c_c (casin, -0x1.fp-129L, -1.0L, -2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3520     TEST_c_c (casin, 1.0L, 0x1.fp-129L, 1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3521     TEST_c_c (casin, -1.0L, 0x1.fp-129L, -1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3522     TEST_c_c (casin, 1.0L, -0x1.fp-129L, 1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3523     TEST_c_c (casin, -1.0L, -0x1.fp-129L, -1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3524 #ifndef TEST_FLOAT
3525     TEST_c_c (casin, 0x1.fp-1000L, 1.0L, 1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3526     TEST_c_c (casin, 0x1.fp-1000L, -1.0L, 1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3527     TEST_c_c (casin, -0x1.fp-1000L, 1.0L, -1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3528     TEST_c_c (casin, -0x1.fp-1000L, -1.0L, -1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3529     TEST_c_c (casin, 1.0L, 0x1.fp-1000L, 1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3530     TEST_c_c (casin, -1.0L, 0x1.fp-1000L, -1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3531     TEST_c_c (casin, 1.0L, -0x1.fp-1000L, 1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3532     TEST_c_c (casin, -1.0L, -0x1.fp-1000L, -1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3533     TEST_c_c (casin, 0x1.fp-1025L, 1.0L, 3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3534     TEST_c_c (casin, 0x1.fp-1025L, -1.0L, 3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3535     TEST_c_c (casin, -0x1.fp-1025L, 1.0L, -3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3536     TEST_c_c (casin, -0x1.fp-1025L, -1.0L, -3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3537     TEST_c_c (casin, 1.0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3538     TEST_c_c (casin, -1.0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3539     TEST_c_c (casin, 1.0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3540     TEST_c_c (casin, -1.0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3541 #endif
3542 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3543     TEST_c_c (casin, 0x1.fp-10000L, 1.0L, 6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3544     TEST_c_c (casin, 0x1.fp-10000L, -1.0L, 6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3545     TEST_c_c (casin, -0x1.fp-10000L, 1.0L, -6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3546     TEST_c_c (casin, -0x1.fp-10000L, -1.0L, -6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3547     TEST_c_c (casin, 1.0L, 0x1.fp-10000L, 1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3548     TEST_c_c (casin, -1.0L, 0x1.fp-10000L, -1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3549     TEST_c_c (casin, 1.0L, -0x1.fp-10000L, 1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3550     TEST_c_c (casin, -1.0L, -0x1.fp-10000L, -1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3551     TEST_c_c (casin, 0x1.fp-16385L, 1.0L, 5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3552     TEST_c_c (casin, 0x1.fp-16385L, -1.0L, 5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3553     TEST_c_c (casin, -0x1.fp-16385L, 1.0L, -5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3554     TEST_c_c (casin, -0x1.fp-16385L, -1.0L, -5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3555     TEST_c_c (casin, 1.0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3556     TEST_c_c (casin, -1.0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3557     TEST_c_c (casin, 1.0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3558     TEST_c_c (casin, -1.0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3559 #endif
3560
3561     TEST_c_c (casin, 0x1p-23L, 0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3562     TEST_c_c (casin, 0x1p-23L, -0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3563     TEST_c_c (casin, -0x1p-23L, 0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3564     TEST_c_c (casin, -0x1p-23L, -0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3565     TEST_c_c (casin, 0x1.000002p0L, 0x1p-23L, 1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3566     TEST_c_c (casin, -0x1.000002p0L, 0x1p-23L, -1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3567     TEST_c_c (casin, 0x1.000002p0L, -0x1p-23L, 1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3568     TEST_c_c (casin, -0x1.000002p0L, -0x1p-23L, -1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3569     TEST_c_c (casin, 0x1.fp-129L, 0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3570     TEST_c_c (casin, 0x1.fp-129L, -0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3571     TEST_c_c (casin, -0x1.fp-129L, 0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3572     TEST_c_c (casin, -0x1.fp-129L, -0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3573     TEST_c_c (casin, 0x1.000002p0L, 0x1.fp-129L, 1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3574     TEST_c_c (casin, -0x1.000002p0L, 0x1.fp-129L, -1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3575     TEST_c_c (casin, 0x1.000002p0L, -0x1.fp-129L, 1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3576     TEST_c_c (casin, -0x1.000002p0L, -0x1.fp-129L, -1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3577     TEST_c_c (casin, 0.0L, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L),
3578     TEST_c_c (casin, 0.0L, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L),
3579     TEST_c_c (casin, -0.0L, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L),
3580     TEST_c_c (casin, -0.0L, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L),
3581     TEST_c_c (casin, 0x1.000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3582     TEST_c_c (casin, -0x1.000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3583     TEST_c_c (casin, 0x1.000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3584     TEST_c_c (casin, -0x1.000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3585 #ifndef TEST_FLOAT
3586     TEST_c_c (casin, 0x1p-52L, 0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3587     TEST_c_c (casin, 0x1p-52L, -0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3588     TEST_c_c (casin, -0x1p-52L, 0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3589     TEST_c_c (casin, -0x1p-52L, -0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3590     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1p-52L, 1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3591     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1p-52L, -1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3592     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1p-52L, 1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3593     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1p-52L, -1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3594     TEST_c_c (casin, 0x1.fp-1025L, 0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3595     TEST_c_c (casin, 0x1.fp-1025L, -0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3596     TEST_c_c (casin, -0x1.fp-1025L, 0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3597     TEST_c_c (casin, -0x1.fp-1025L, -0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3598     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3599     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3600     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3601     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3602     TEST_c_c (casin, 0.0L, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L),
3603     TEST_c_c (casin, 0.0L, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L),
3604     TEST_c_c (casin, -0.0L, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L),
3605     TEST_c_c (casin, -0.0L, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L),
3606     TEST_c_c (casin, 0x1.0000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3607     TEST_c_c (casin, -0x1.0000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3608     TEST_c_c (casin, 0x1.0000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3609     TEST_c_c (casin, -0x1.0000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3610 #endif
3611 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3612     TEST_c_c (casin, 0x1p-63L, 0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3613     TEST_c_c (casin, 0x1p-63L, -0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3614     TEST_c_c (casin, -0x1p-63L, 0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3615     TEST_c_c (casin, -0x1p-63L, -0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3616     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1p-63L, 1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3617     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1p-63L, -1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3618     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1p-63L, 1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3619     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1p-63L, -1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3620 # if LDBL_MIN_EXP <= -16381
3621     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3622     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3623     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3624     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3625     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3626     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3627     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3628     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3629 # endif
3630     TEST_c_c (casin, 0.0L, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L),
3631     TEST_c_c (casin, 0.0L, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L),
3632     TEST_c_c (casin, -0.0L, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L),
3633     TEST_c_c (casin, -0.0L, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L),
3634     TEST_c_c (casin, 0x1.0000000000000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3635     TEST_c_c (casin, -0x1.0000000000000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3636     TEST_c_c (casin, 0x1.0000000000000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3637     TEST_c_c (casin, -0x1.0000000000000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3638 #endif
3639 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3640     TEST_c_c (casin, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3641     TEST_c_c (casin, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3642     TEST_c_c (casin, -0x1p-106L, 0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3643     TEST_c_c (casin, -0x1p-106L, -0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3644     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1p-106L, 1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3645     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1p-106L, -1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3646     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1p-106L, 1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3647     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1p-106L, -1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3648     TEST_c_c (casin, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3649     TEST_c_c (casin, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3650     TEST_c_c (casin, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3651     TEST_c_c (casin, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3652     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3653     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3654     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3655     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3656     TEST_c_c (casin, 0.0L, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L),
3657     TEST_c_c (casin, 0.0L, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L),
3658     TEST_c_c (casin, -0.0L, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L),
3659     TEST_c_c (casin, -0.0L, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L),
3660     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3661     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3662     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3663     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3664 #endif
3665 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3666     TEST_c_c (casin, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3667     TEST_c_c (casin, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3668     TEST_c_c (casin, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3669     TEST_c_c (casin, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3670     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3671     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3672     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3673     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3674     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3675     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3676     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3677     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3678     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3679     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3680     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3681     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3682     TEST_c_c (casin, 0.0L, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L),
3683     TEST_c_c (casin, 0.0L, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L),
3684     TEST_c_c (casin, -0.0L, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L),
3685     TEST_c_c (casin, -0.0L, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L),
3686     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3687     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3688     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3689     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3690 #endif
3691
3692     TEST_c_c (casin, 0x1p-23L, 0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3693     TEST_c_c (casin, 0x1p-23L, -0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3694     TEST_c_c (casin, -0x1p-23L, 0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3695     TEST_c_c (casin, -0x1p-23L, -0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3696     TEST_c_c (casin, 0x0.ffffffp0L, 0x1p-23L, 1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3697     TEST_c_c (casin, -0x0.ffffffp0L, 0x1p-23L, -1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3698     TEST_c_c (casin, 0x0.ffffffp0L, -0x1p-23L, 1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3699     TEST_c_c (casin, -0x0.ffffffp0L, -0x1p-23L, -1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3700     TEST_c_c (casin, 0x1.fp-129L, 0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3701     TEST_c_c (casin, 0x1.fp-129L, -0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3702     TEST_c_c (casin, -0x1.fp-129L, 0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3703     TEST_c_c (casin, -0x1.fp-129L, -0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3704     TEST_c_c (casin, 0x0.ffffffp0L, 0x1.fp-129L, 1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3705     TEST_c_c (casin, -0x0.ffffffp0L, 0x1.fp-129L, -1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3706     TEST_c_c (casin, 0x0.ffffffp0L, -0x1.fp-129L, 1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3707     TEST_c_c (casin, -0x0.ffffffp0L, -0x1.fp-129L, -1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3708     TEST_c_c (casin, 0.0L, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L),
3709     TEST_c_c (casin, 0.0L, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L),
3710     TEST_c_c (casin, -0.0L, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L),
3711     TEST_c_c (casin, -0.0L, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L),
3712     TEST_c_c (casin, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L, 0.0L),
3713     TEST_c_c (casin, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L, 0.0L),
3714     TEST_c_c (casin, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L, -0.0L),
3715     TEST_c_c (casin, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L, -0.0L),
3716     TEST_c_c (casin, 0x1p-23L, 0.5L, 1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3717     TEST_c_c (casin, 0x1p-23L, -0.5L, 1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3718     TEST_c_c (casin, -0x1p-23L, 0.5L, -1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3719     TEST_c_c (casin, -0x1p-23L, -0.5L, -1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3720     TEST_c_c (casin, 0.5L, 0x1p-23L, 5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3721     TEST_c_c (casin, -0.5L, 0x1p-23L, -5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3722     TEST_c_c (casin, 0.5L, -0x1p-23L, 5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3723     TEST_c_c (casin, -0.5L, -0x1p-23L, -5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3724     TEST_c_c (casin, 0x1.fp-129L, 0.5L, 2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3725     TEST_c_c (casin, 0x1.fp-129L, -0.5L, 2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3726     TEST_c_c (casin, -0x1.fp-129L, 0.5L, -2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3727     TEST_c_c (casin, -0x1.fp-129L, -0.5L, -2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3728     TEST_c_c (casin, 0.5L, 0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3729     TEST_c_c (casin, -0.5L, 0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3730     TEST_c_c (casin, 0.5L, -0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3731     TEST_c_c (casin, -0.5L, -0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3732     TEST_c_c (casin, 0x1p-23L, 0x1p-23L, 1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3733     TEST_c_c (casin, 0x1p-23L, -0x1p-23L, 1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3734     TEST_c_c (casin, -0x1p-23L, 0x1p-23L, -1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3735     TEST_c_c (casin, -0x1p-23L, -0x1p-23L, -1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3736     /* Bug 15319: underflow exception may be missing.  */
3737     TEST_c_c (casin, 0x1.fp-129L, 0x1p-23L, 2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3738     TEST_c_c (casin, 0x1.fp-129L, -0x1p-23L, 2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3739     TEST_c_c (casin, -0x1.fp-129L, 0x1p-23L, -2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3740     TEST_c_c (casin, -0x1.fp-129L, -0x1p-23L, -2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3741     TEST_c_c (casin, 0x1p-23L, 0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3742     TEST_c_c (casin, -0x1p-23L, 0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3743     TEST_c_c (casin, 0x1p-23L, -0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3744     TEST_c_c (casin, -0x1p-23L, -0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3745     TEST_c_c (casin, 0.0L, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L),
3746     TEST_c_c (casin, 0.0L, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L),
3747     TEST_c_c (casin, -0.0L, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L),
3748     TEST_c_c (casin, -0.0L, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L),
3749     TEST_c_c (casin, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L, 0.0L),
3750     TEST_c_c (casin, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L, 0.0L),
3751     TEST_c_c (casin, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L, -0.0L),
3752     TEST_c_c (casin, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L, -0.0L),
3753     TEST_c_c (casin, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3754     TEST_c_c (casin, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3755     TEST_c_c (casin, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3756     TEST_c_c (casin, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3757 #ifndef TEST_FLOAT
3758     TEST_c_c (casin, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3759     TEST_c_c (casin, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3760     TEST_c_c (casin, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3761     TEST_c_c (casin, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3762     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3763     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1p-52L, -1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3764     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3765     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1p-52L, -1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3766     TEST_c_c (casin, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3767     TEST_c_c (casin, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3768     TEST_c_c (casin, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3769     TEST_c_c (casin, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3770     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3771     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3772     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3773     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3774     TEST_c_c (casin, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L),
3775     TEST_c_c (casin, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L),
3776     TEST_c_c (casin, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L),
3777     TEST_c_c (casin, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L),
3778     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L, 0.0L),
3779     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L, 0.0L),
3780     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L, -0.0L),
3781     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L, -0.0L),
3782 #endif
3783     TEST_c_c (casin, 0x1p-52L, 0.5L, 1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3784     TEST_c_c (casin, 0x1p-52L, -0.5L, 1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3785     TEST_c_c (casin, -0x1p-52L, 0.5L, -1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3786     TEST_c_c (casin, -0x1p-52L, -0.5L, -1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3787     TEST_c_c (casin, 0.5L, 0x1p-52L, 5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3788     TEST_c_c (casin, -0.5L, 0x1p-52L, -5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3789     TEST_c_c (casin, 0.5L, -0x1p-52L, 5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3790     TEST_c_c (casin, -0.5L, -0x1p-52L, -5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3791 #ifndef TEST_FLOAT
3792     TEST_c_c (casin, 0x1.fp-1025L, 0.5L, 4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3793     TEST_c_c (casin, 0x1.fp-1025L, -0.5L, 4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3794     TEST_c_c (casin, -0x1.fp-1025L, 0.5L, -4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3795     TEST_c_c (casin, -0x1.fp-1025L, -0.5L, -4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3796     TEST_c_c (casin, 0.5L, 0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3797     TEST_c_c (casin, -0.5L, 0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3798     TEST_c_c (casin, 0.5L, -0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3799     TEST_c_c (casin, -0.5L, -0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3800 #endif
3801     TEST_c_c (casin, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3802     TEST_c_c (casin, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3803     TEST_c_c (casin, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3804     TEST_c_c (casin, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3805 #ifndef TEST_FLOAT
3806     /* Bug 15319: underflow exception may be missing.  */
3807     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3808     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3809     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3810     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3811     TEST_c_c (casin, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3812     TEST_c_c (casin, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3813     TEST_c_c (casin, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3814     TEST_c_c (casin, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3815 #endif
3816     TEST_c_c (casin, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L),
3817     TEST_c_c (casin, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L),
3818     TEST_c_c (casin, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L),
3819     TEST_c_c (casin, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L),
3820     TEST_c_c (casin, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L, 0.0L),
3821     TEST_c_c (casin, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L, 0.0L),
3822     TEST_c_c (casin, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L, -0.0L),
3823     TEST_c_c (casin, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L, -0.0L),
3824 #ifndef TEST_FLOAT
3825     TEST_c_c (casin, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3826     TEST_c_c (casin, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3827     TEST_c_c (casin, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3828     TEST_c_c (casin, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3829 #endif
3830 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3831     TEST_c_c (casin, 0x1p-63L, 0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3832     TEST_c_c (casin, 0x1p-63L, -0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3833     TEST_c_c (casin, -0x1p-63L, 0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3834     TEST_c_c (casin, -0x1p-63L, -0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3835     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1p-63L, 1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3836     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1p-63L, -1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3837     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1p-63L, 1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3838     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1p-63L, -1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3839 # if LDBL_MIN_EXP <= -16381
3840     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3841     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3842     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3843     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3844     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3845     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3846     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3847     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3848 # endif
3849     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L),
3850     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L),
3851     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L),
3852     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L),
3853     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L, 0.0L),
3854     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L, 0.0L),
3855     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L, -0.0L),
3856     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L, -0.0L),
3857 #endif
3858     TEST_c_c (casin, 0x1p-63L, 0.5L, 9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3859     TEST_c_c (casin, 0x1p-63L, -0.5L, 9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3860     TEST_c_c (casin, -0x1p-63L, 0.5L, -9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3861     TEST_c_c (casin, -0x1p-63L, -0.5L, -9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3862     TEST_c_c (casin, 0.5L, 0x1p-63L, 5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3863     TEST_c_c (casin, -0.5L, 0x1p-63L, -5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3864     TEST_c_c (casin, 0.5L, -0x1p-63L, 5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3865     TEST_c_c (casin, -0.5L, -0x1p-63L, -5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3866 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3867     TEST_c_c (casin, 0x1.fp-16385L, 0.5L, 7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3868     TEST_c_c (casin, 0x1.fp-16385L, -0.5L, 7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3869     TEST_c_c (casin, -0x1.fp-16385L, 0.5L, -7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3870     TEST_c_c (casin, -0x1.fp-16385L, -0.5L, -7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3871     TEST_c_c (casin, 0.5L, 0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3872     TEST_c_c (casin, -0.5L, 0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3873     TEST_c_c (casin, 0.5L, -0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3874     TEST_c_c (casin, -0.5L, -0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3875 #endif
3876     TEST_c_c (casin, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3877     TEST_c_c (casin, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3878     TEST_c_c (casin, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3879     TEST_c_c (casin, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3880 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3881     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3882     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3883     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3884     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3885     TEST_c_c (casin, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3886     TEST_c_c (casin, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3887     TEST_c_c (casin, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3888     TEST_c_c (casin, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3889 #endif
3890     TEST_c_c (casin, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L),
3891     TEST_c_c (casin, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L),
3892     TEST_c_c (casin, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L),
3893     TEST_c_c (casin, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L),
3894     TEST_c_c (casin, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L, 0.0L),
3895     TEST_c_c (casin, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L, 0.0L),
3896     TEST_c_c (casin, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L, -0.0L),
3897     TEST_c_c (casin, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L, -0.0L),
3898 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3899     TEST_c_c (casin, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3900     TEST_c_c (casin, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3901     TEST_c_c (casin, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3902     TEST_c_c (casin, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3903 #endif
3904 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3905     TEST_c_c (casin, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3906     TEST_c_c (casin, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3907     TEST_c_c (casin, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3908     TEST_c_c (casin, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3909     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3910     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3911     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3912     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3913     TEST_c_c (casin, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3914     TEST_c_c (casin, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3915     TEST_c_c (casin, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3916     TEST_c_c (casin, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3917     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3918     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3919     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3920     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3921     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L),
3922     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L),
3923     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L),
3924     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L),
3925     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L, 0.0L),
3926     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L, 0.0L),
3927     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L, -0.0L),
3928     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L, -0.0L),
3929 #endif
3930     TEST_c_c (casin, 0x1p-105L, 0.5L, 2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3931     TEST_c_c (casin, 0x1p-105L, -0.5L, 2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3932     TEST_c_c (casin, -0x1p-105L, 0.5L, -2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3933     TEST_c_c (casin, -0x1p-105L, -0.5L, -2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3934     TEST_c_c (casin, 0.5L, 0x1p-105L, 5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3935     TEST_c_c (casin, -0.5L, 0x1p-105L, -5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3936     TEST_c_c (casin, 0.5L, -0x1p-105L, 5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3937     TEST_c_c (casin, -0.5L, -0x1p-105L, -5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3938     TEST_c_c (casin, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3939     TEST_c_c (casin, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3940     TEST_c_c (casin, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3941     TEST_c_c (casin, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3942 #ifndef TEST_FLOAT
3943     /* Bug 15319: underflow exception may be missing.  */
3944     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3945     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3946     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3947     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3948     TEST_c_c (casin, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3949     TEST_c_c (casin, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3950     TEST_c_c (casin, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3951     TEST_c_c (casin, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3952 #endif
3953     TEST_c_c (casin, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
3954     TEST_c_c (casin, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
3955     TEST_c_c (casin, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
3956     TEST_c_c (casin, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
3957     TEST_c_c (casin, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
3958     TEST_c_c (casin, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
3959     TEST_c_c (casin, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
3960     TEST_c_c (casin, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
3961 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3962     TEST_c_c (casin, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3963     TEST_c_c (casin, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3964     TEST_c_c (casin, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3965     TEST_c_c (casin, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3966     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3967     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3968     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3969     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3970     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3971     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3972     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3973     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3974     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3975     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3976     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3977     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3978     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L),
3979     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L),
3980     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L),
3981     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L),
3982     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L, 0.0L),
3983     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L, 0.0L),
3984     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L, -0.0L),
3985     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L, -0.0L),
3986 #endif
3987     TEST_c_c (casin, 0x1p-112L, 0.5L, 1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3988     TEST_c_c (casin, 0x1p-112L, -0.5L, 1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3989     TEST_c_c (casin, -0x1p-112L, 0.5L, -1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3990     TEST_c_c (casin, -0x1p-112L, -0.5L, -1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3991     TEST_c_c (casin, 0.5L, 0x1p-112L, 5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3992     TEST_c_c (casin, -0.5L, 0x1p-112L, -5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3993     TEST_c_c (casin, 0.5L, -0x1p-112L, 5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3994     TEST_c_c (casin, -0.5L, -0x1p-112L, -5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3995     TEST_c_c (casin, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3996     TEST_c_c (casin, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3997     TEST_c_c (casin, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3998     TEST_c_c (casin, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3999 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4000     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4001     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4002     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4003     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4004     TEST_c_c (casin, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4005     TEST_c_c (casin, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4006     TEST_c_c (casin, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4007     TEST_c_c (casin, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4008 #endif
4009     TEST_c_c (casin, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
4010     TEST_c_c (casin, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
4011     TEST_c_c (casin, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
4012     TEST_c_c (casin, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
4013     TEST_c_c (casin, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
4014     TEST_c_c (casin, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
4015     TEST_c_c (casin, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
4016     TEST_c_c (casin, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
4017
4018     TEST_c_c (casin, 0.75L, 1.25L, 0.453276177638793913448921196101971749L, 1.13239363160530819522266333696834467L),
4019     TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L),
4020     END_DATA (casin)
4021   };
4022
4023 static void
4024 casin_test (void)
4025 {
4026   errno = 0;
4027   FUNC(casin) (BUILD_COMPLEX (0.7L, 1.2L));
4028   if (errno == ENOSYS)
4029     /* Function not implemented.  */
4030     return;
4031
4032   START (casin);
4033   RUN_TEST_LOOP_c_c (casin, casin_test_data, );
4034   END (casin, complex);
4035 }
4036
4037
4038 static const struct test_c_c_data casinh_test_data[] =
4039   {
4040     START_DATA (casinh),
4041     TEST_c_c (casinh, 0, 0, 0.0, 0.0),
4042     TEST_c_c (casinh, minus_zero, 0, minus_zero, 0),
4043     TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero),
4044     TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero),
4045
4046     TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l),
4047     TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
4048     TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l),
4049     TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l),
4050
4051     TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l),
4052     TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l),
4053     TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l),
4054     TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l),
4055     TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l),
4056     TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l),
4057     TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l),
4058     TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
4059
4060     TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0),
4061     TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero),
4062     TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0),
4063     TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero),
4064
4065     TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0),
4066     TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero),
4067     TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0),
4068     TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero),
4069
4070     TEST_c_c (casinh, plus_infty, qnan_value, plus_infty, qnan_value),
4071     TEST_c_c (casinh, minus_infty, qnan_value, minus_infty, qnan_value),
4072
4073     TEST_c_c (casinh, qnan_value, 0, qnan_value, 0.0),
4074     TEST_c_c (casinh, qnan_value, minus_zero, qnan_value, minus_zero),
4075
4076     TEST_c_c (casinh, qnan_value, plus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
4077     TEST_c_c (casinh, qnan_value, minus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
4078
4079     TEST_c_c (casinh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4080     TEST_c_c (casinh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4081
4082     TEST_c_c (casinh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4083     TEST_c_c (casinh, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4084
4085     TEST_c_c (casinh, qnan_value, qnan_value, qnan_value, qnan_value),
4086
4087     TEST_c_c (casinh, plus_zero, -1.5L, 0.9624236501192068949955178268487368462704L, -M_PI_2l),
4088     TEST_c_c (casinh, minus_zero, -1.5L, -0.9624236501192068949955178268487368462704L, -M_PI_2l),
4089     TEST_c_c (casinh, plus_zero, -1.0L, plus_zero, -M_PI_2l),
4090     TEST_c_c (casinh, minus_zero, -1.0L, minus_zero, -M_PI_2l),
4091     TEST_c_c (casinh, plus_zero, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L),
4092     TEST_c_c (casinh, minus_zero, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L),
4093     TEST_c_c (casinh, plus_zero, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L),
4094     TEST_c_c (casinh, minus_zero, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L),
4095     TEST_c_c (casinh, plus_zero, 1.0L, plus_zero, M_PI_2l),
4096     TEST_c_c (casinh, minus_zero, 1.0L, minus_zero, M_PI_2l),
4097     TEST_c_c (casinh, plus_zero, 1.5L, 0.9624236501192068949955178268487368462704L, M_PI_2l),
4098     TEST_c_c (casinh, minus_zero, 1.5L, -0.9624236501192068949955178268487368462704L, M_PI_2l),
4099
4100     TEST_c_c (casinh, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L, plus_zero),
4101     TEST_c_c (casinh, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L, minus_zero),
4102     TEST_c_c (casinh, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L, plus_zero),
4103     TEST_c_c (casinh, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L, minus_zero),
4104     TEST_c_c (casinh, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L, plus_zero),
4105     TEST_c_c (casinh, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L, minus_zero),
4106     TEST_c_c (casinh, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L, plus_zero),
4107     TEST_c_c (casinh, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L, minus_zero),
4108     TEST_c_c (casinh, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L, plus_zero),
4109     TEST_c_c (casinh, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L, minus_zero),
4110     TEST_c_c (casinh, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L, plus_zero),
4111     TEST_c_c (casinh, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L, minus_zero),
4112
4113     TEST_c_c (casinh, 0x1p50L, 1.0L, 3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
4114     TEST_c_c (casinh, 0x1p50L, -1.0L, 3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
4115     TEST_c_c (casinh, -0x1p50L, 1.0L, -3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
4116     TEST_c_c (casinh, -0x1p50L, -1.0L, -3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
4117     TEST_c_c (casinh, 1.0L, 0x1p50L, 3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
4118     TEST_c_c (casinh, -1.0L, 0x1p50L, -3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
4119     TEST_c_c (casinh, 1.0L, -0x1p50L, 3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
4120     TEST_c_c (casinh, -1.0L, -0x1p50L, -3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
4121 #ifndef TEST_FLOAT
4122     TEST_c_c (casinh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
4123     TEST_c_c (casinh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
4124     TEST_c_c (casinh, -0x1p500L, 1.0L, -3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
4125     TEST_c_c (casinh, -0x1p500L, -1.0L, -3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
4126     TEST_c_c (casinh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
4127     TEST_c_c (casinh, -1.0L, 0x1p500L, -3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
4128     TEST_c_c (casinh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
4129     TEST_c_c (casinh, -1.0L, -0x1p500L, -3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
4130 #endif
4131 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4132     TEST_c_c (casinh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
4133     TEST_c_c (casinh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
4134     TEST_c_c (casinh, -0x1p5000L, 1.0L, -3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
4135     TEST_c_c (casinh, -0x1p5000L, -1.0L, -3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
4136     TEST_c_c (casinh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
4137     TEST_c_c (casinh, -1.0L, 0x1p5000L, -3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
4138     TEST_c_c (casinh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
4139     TEST_c_c (casinh, -1.0L, -0x1p5000L, -3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
4140 #endif
4141
4142     TEST_c_c (casinh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
4143 #ifndef TEST_FLOAT
4144     TEST_c_c (casinh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
4145 #endif
4146 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4147     TEST_c_c (casinh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
4148 #endif
4149
4150     TEST_c_c (casinh, 0x1.fp-129L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4151     TEST_c_c (casinh, 0x1.fp-129L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4152     TEST_c_c (casinh, -0x1.fp-129L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4153     TEST_c_c (casinh, -0x1.fp-129L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4154     TEST_c_c (casinh, 1.5L, 0x1.fp-129L, 1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4155     TEST_c_c (casinh, -1.5L, 0x1.fp-129L, -1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4156     TEST_c_c (casinh, 1.5L, -0x1.fp-129L, 1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4157     TEST_c_c (casinh, -1.5L, -0x1.fp-129L, -1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4158 #ifndef TEST_FLOAT
4159     TEST_c_c (casinh, 0x1.fp-1025L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4160     TEST_c_c (casinh, 0x1.fp-1025L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4161     TEST_c_c (casinh, -0x1.fp-1025L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4162     TEST_c_c (casinh, -0x1.fp-1025L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4163     TEST_c_c (casinh, 1.5L, 0x1.fp-1025L, 1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4164     TEST_c_c (casinh, -1.5L, 0x1.fp-1025L, -1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4165     TEST_c_c (casinh, 1.5L, -0x1.fp-1025L, 1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4166     TEST_c_c (casinh, -1.5L, -0x1.fp-1025L, -1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4167 #endif
4168 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4169     TEST_c_c (casinh, 0x1.fp-16385L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4170     TEST_c_c (casinh, 0x1.fp-16385L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4171     TEST_c_c (casinh, -0x1.fp-16385L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4172     TEST_c_c (casinh, -0x1.fp-16385L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4173     TEST_c_c (casinh, 1.5L, 0x1.fp-16385L, 1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4174     TEST_c_c (casinh, -1.5L, 0x1.fp-16385L, -1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4175     TEST_c_c (casinh, 1.5L, -0x1.fp-16385L, 1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4176     TEST_c_c (casinh, -1.5L, -0x1.fp-16385L, -1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4177 #endif
4178
4179     TEST_c_c (casinh, 0.5L, 1.0L, 7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4180     TEST_c_c (casinh, 0.5L, -1.0L, 7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4181     TEST_c_c (casinh, -0.5L, 1.0L, -7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4182     TEST_c_c (casinh, -0.5L, -1.0L, -7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4183     TEST_c_c (casinh, 1.0L, 0.5L, 9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4184     TEST_c_c (casinh, -1.0L, 0.5L, -9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4185     TEST_c_c (casinh, 1.0L, -0.5L, 9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4186     TEST_c_c (casinh, -1.0L, -0.5L, -9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4187     TEST_c_c (casinh, 0.25L, 1.0L, 5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4188     TEST_c_c (casinh, 0.25L, -1.0L, 5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4189     TEST_c_c (casinh, -0.25L, 1.0L, -5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4190     TEST_c_c (casinh, -0.25L, -1.0L, -5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4191     TEST_c_c (casinh, 1.0L, 0.25L, 8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4192     TEST_c_c (casinh, -1.0L, 0.25L, -8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4193     TEST_c_c (casinh, 1.0L, -0.25L, 8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4194     TEST_c_c (casinh, -1.0L, -0.25L, -8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4195     TEST_c_c (casinh, 0x1.fp-10L, 1.0L, 4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4196     TEST_c_c (casinh, 0x1.fp-10L, -1.0L, 4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4197     TEST_c_c (casinh, -0x1.fp-10L, 1.0L, -4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4198     TEST_c_c (casinh, -0x1.fp-10L, -1.0L, -4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4199     TEST_c_c (casinh, 1.0L, 0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4200     TEST_c_c (casinh, -1.0L, 0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4201     TEST_c_c (casinh, 1.0L, -0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4202     TEST_c_c (casinh, -1.0L, -0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4203     TEST_c_c (casinh, 0x1.fp-30L, 1.0L, 4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4204     TEST_c_c (casinh, 0x1.fp-30L, -1.0L, 4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4205     TEST_c_c (casinh, -0x1.fp-30L, 1.0L, -4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4206     TEST_c_c (casinh, -0x1.fp-30L, -1.0L, -4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4207     TEST_c_c (casinh, 1.0L, 0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4208     TEST_c_c (casinh, -1.0L, 0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4209     TEST_c_c (casinh, 1.0L, -0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4210     TEST_c_c (casinh, -1.0L, -0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4211     TEST_c_c (casinh, 0x1.fp-100L, 1.0L, 1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4212     TEST_c_c (casinh, 0x1.fp-100L, -1.0L, 1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4213     TEST_c_c (casinh, -0x1.fp-100L, 1.0L, -1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4214     TEST_c_c (casinh, -0x1.fp-100L, -1.0L, -1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4215     TEST_c_c (casinh, 1.0L, 0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4216     TEST_c_c (casinh, -1.0L, 0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4217     TEST_c_c (casinh, 1.0L, -0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4218     TEST_c_c (casinh, -1.0L, -0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4219     TEST_c_c (casinh, 0x1.fp-129L, 1.0L, 5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4220     TEST_c_c (casinh, 0x1.fp-129L, -1.0L, 5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4221     TEST_c_c (casinh, -0x1.fp-129L, 1.0L, -5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4222     TEST_c_c (casinh, -0x1.fp-129L, -1.0L, -5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4223     TEST_c_c (casinh, 1.0L, 0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4224     TEST_c_c (casinh, -1.0L, 0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4225     TEST_c_c (casinh, 1.0L, -0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4226     TEST_c_c (casinh, -1.0L, -0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4227 #ifndef TEST_FLOAT
4228     TEST_c_c (casinh, 0x1.fp-1000L, 1.0L, 4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4229     TEST_c_c (casinh, 0x1.fp-1000L, -1.0L, 4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4230     TEST_c_c (casinh, -0x1.fp-1000L, 1.0L, -4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4231     TEST_c_c (casinh, -0x1.fp-1000L, -1.0L, -4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4232     TEST_c_c (casinh, 1.0L, 0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4233     TEST_c_c (casinh, -1.0L, 0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4234     TEST_c_c (casinh, 1.0L, -0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4235     TEST_c_c (casinh, -1.0L, -0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4236     TEST_c_c (casinh, 0x1.fp-1025L, 1.0L, 7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4237     TEST_c_c (casinh, 0x1.fp-1025L, -1.0L, 7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4238     TEST_c_c (casinh, -0x1.fp-1025L, 1.0L, -7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4239     TEST_c_c (casinh, -0x1.fp-1025L, -1.0L, -7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4240     TEST_c_c (casinh, 1.0L, 0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4241     TEST_c_c (casinh, -1.0L, 0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4242     TEST_c_c (casinh, 1.0L, -0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4243     TEST_c_c (casinh, -1.0L, -0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4244 #endif
4245 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4246     TEST_c_c (casinh, 0x1.fp-10000L, 1.0L, 9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4247     TEST_c_c (casinh, 0x1.fp-10000L, -1.0L, 9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4248     TEST_c_c (casinh, -0x1.fp-10000L, 1.0L, -9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4249     TEST_c_c (casinh, -0x1.fp-10000L, -1.0L, -9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4250     TEST_c_c (casinh, 1.0L, 0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4251     TEST_c_c (casinh, -1.0L, 0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4252     TEST_c_c (casinh, 1.0L, -0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4253     TEST_c_c (casinh, -1.0L, -0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4254     TEST_c_c (casinh, 0x1.fp-16385L, 1.0L, 9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4255     TEST_c_c (casinh, 0x1.fp-16385L, -1.0L, 9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4256     TEST_c_c (casinh, -0x1.fp-16385L, 1.0L, -9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4257     TEST_c_c (casinh, -0x1.fp-16385L, -1.0L, -9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4258     TEST_c_c (casinh, 1.0L, 0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4259     TEST_c_c (casinh, -1.0L, 0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4260     TEST_c_c (casinh, 1.0L, -0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4261     TEST_c_c (casinh, -1.0L, -0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4262 #endif
4263
4264     TEST_c_c (casinh, 0x1p-23L, 0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4265     TEST_c_c (casinh, 0x1p-23L, -0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4266     TEST_c_c (casinh, -0x1p-23L, 0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4267     TEST_c_c (casinh, -0x1p-23L, -0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4268     TEST_c_c (casinh, 0x1.000002p0L, 0x1p-23L, 8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4269     TEST_c_c (casinh, -0x1.000002p0L, 0x1p-23L, -8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4270     TEST_c_c (casinh, 0x1.000002p0L, -0x1p-23L, 8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4271     TEST_c_c (casinh, -0x1.000002p0L, -0x1p-23L, -8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4272     TEST_c_c (casinh, 0x1.fp-129L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4273     TEST_c_c (casinh, 0x1.fp-129L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4274     TEST_c_c (casinh, -0x1.fp-129L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4275     TEST_c_c (casinh, -0x1.fp-129L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4276     TEST_c_c (casinh, 0x1.000002p0L, 0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4277     TEST_c_c (casinh, -0x1.000002p0L, 0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4278     TEST_c_c (casinh, 0x1.000002p0L, -0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4279     TEST_c_c (casinh, -0x1.000002p0L, -0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4280     TEST_c_c (casinh, 0.0L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4281     TEST_c_c (casinh, 0.0L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4282     TEST_c_c (casinh, -0.0L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4283     TEST_c_c (casinh, -0.0L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4284     TEST_c_c (casinh, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L, 0.0L),
4285     TEST_c_c (casinh, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L, 0.0L),
4286     TEST_c_c (casinh, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L, -0.0L),
4287     TEST_c_c (casinh, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L, -0.0L),
4288 #ifndef TEST_FLOAT
4289     TEST_c_c (casinh, 0x1p-52L, 0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4290     TEST_c_c (casinh, 0x1p-52L, -0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4291     TEST_c_c (casinh, -0x1p-52L, 0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4292     TEST_c_c (casinh, -0x1p-52L, -0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4293     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1p-52L, 8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4294     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1p-52L, -8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4295     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1p-52L, 8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4296     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1p-52L, -8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4297     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4298     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4299     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4300     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4301     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4302     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4303     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4304     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4305     TEST_c_c (casinh, 0.0L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4306     TEST_c_c (casinh, 0.0L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4307     TEST_c_c (casinh, -0.0L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4308     TEST_c_c (casinh, -0.0L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4309     TEST_c_c (casinh, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L, 0.0L),
4310     TEST_c_c (casinh, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L, 0.0L),
4311     TEST_c_c (casinh, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L, -0.0L),
4312     TEST_c_c (casinh, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L, -0.0L),
4313 #endif
4314 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4315     TEST_c_c (casinh, 0x1p-63L, 0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4316     TEST_c_c (casinh, 0x1p-63L, -0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4317     TEST_c_c (casinh, -0x1p-63L, 0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4318     TEST_c_c (casinh, -0x1p-63L, -0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4319     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1p-63L, 8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4320     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1p-63L, -8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4321     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1p-63L, 8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4322     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1p-63L, -8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4323 # if LDBL_MIN_EXP <= -16381
4324     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4325     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4326     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4327     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4328     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4329     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4330     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4331     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4332 # endif
4333     TEST_c_c (casinh, 0.0L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4334     TEST_c_c (casinh, 0.0L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4335     TEST_c_c (casinh, -0.0L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4336     TEST_c_c (casinh, -0.0L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4337     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L, 0.0L),
4338     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L, 0.0L),
4339     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L, -0.0L),
4340     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L, -0.0L),
4341 #endif
4342 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4343     TEST_c_c (casinh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4344     TEST_c_c (casinh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4345     TEST_c_c (casinh, -0x1p-106L, 0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4346     TEST_c_c (casinh, -0x1p-106L, -0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4347     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4348     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1p-106L, -8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4349     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4350     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1p-106L, -8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4351     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4352     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4353     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4354     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4355     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4356     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4357     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4358     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4359     TEST_c_c (casinh, 0.0L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4360     TEST_c_c (casinh, 0.0L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4361     TEST_c_c (casinh, -0.0L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4362     TEST_c_c (casinh, -0.0L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4363     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L, 0.0L),
4364     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L, 0.0L),
4365     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L, -0.0L),
4366     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L, -0.0L),
4367 #endif
4368 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4369     TEST_c_c (casinh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4370     TEST_c_c (casinh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4371     TEST_c_c (casinh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4372     TEST_c_c (casinh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4373     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4374     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4375     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4376     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4377     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4378     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4379     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4380     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4381     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4382     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4383     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4384     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4385     TEST_c_c (casinh, 0.0L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4386     TEST_c_c (casinh, 0.0L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4387     TEST_c_c (casinh, -0.0L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4388     TEST_c_c (casinh, -0.0L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4389     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L, 0.0L),
4390     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L, 0.0L),
4391     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L, -0.0L),
4392     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L, -0.0L),
4393 #endif
4394
4395     TEST_c_c (casinh, 0x1p-23L, 0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4396     TEST_c_c (casinh, 0x1p-23L, -0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4397     TEST_c_c (casinh, -0x1p-23L, 0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4398     TEST_c_c (casinh, -0x1p-23L, -0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4399     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1p-23L, 8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4400     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1p-23L, -8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4401     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1p-23L, 8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4402     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1p-23L, -8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4403     TEST_c_c (casinh, 0x1.fp-129L, 0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4404     TEST_c_c (casinh, 0x1.fp-129L, -0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4405     TEST_c_c (casinh, -0x1.fp-129L, 0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4406     TEST_c_c (casinh, -0x1.fp-129L, -0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4407     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4408     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4409     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4410     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4411     TEST_c_c (casinh, 0.0L, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L),
4412     TEST_c_c (casinh, 0.0L, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L),
4413     TEST_c_c (casinh, -0.0L, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L),
4414     TEST_c_c (casinh, -0.0L, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L),
4415     TEST_c_c (casinh, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L, 0.0L),
4416     TEST_c_c (casinh, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L, 0.0L),
4417     TEST_c_c (casinh, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L, -0.0L),
4418     TEST_c_c (casinh, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L, -0.0L),
4419     TEST_c_c (casinh, 0x1p-23L, 0.5L, 1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4420     TEST_c_c (casinh, 0x1p-23L, -0.5L, 1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4421     TEST_c_c (casinh, -0x1p-23L, 0.5L, -1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4422     TEST_c_c (casinh, -0x1p-23L, -0.5L, -1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4423     TEST_c_c (casinh, 0.5L, 0x1p-23L, 4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4424     TEST_c_c (casinh, -0.5L, 0x1p-23L, -4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4425     TEST_c_c (casinh, 0.5L, -0x1p-23L, 4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4426     TEST_c_c (casinh, -0.5L, -0x1p-23L, -4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4427     TEST_c_c (casinh, 0x1.fp-129L, 0.5L, 3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4428     TEST_c_c (casinh, 0x1.fp-129L, -0.5L, 3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4429     TEST_c_c (casinh, -0x1.fp-129L, 0.5L, -3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4430     TEST_c_c (casinh, -0x1.fp-129L, -0.5L, -3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4431     TEST_c_c (casinh, 0.5L, 0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4432     TEST_c_c (casinh, -0.5L, 0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4433     TEST_c_c (casinh, 0.5L, -0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4434     TEST_c_c (casinh, -0.5L, -0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4435     TEST_c_c (casinh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4436     TEST_c_c (casinh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4437     TEST_c_c (casinh, -0x1p-23L, 0x1p-23L, -1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4438     TEST_c_c (casinh, -0x1p-23L, -0x1p-23L, -1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4439     TEST_c_c (casinh, 0x1.fp-129L, 0x1p-23L, 2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4440     TEST_c_c (casinh, 0x1.fp-129L, -0x1p-23L, 2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4441     TEST_c_c (casinh, -0x1.fp-129L, 0x1p-23L, -2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4442     TEST_c_c (casinh, -0x1.fp-129L, -0x1p-23L, -2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4443     /* Bug 15319: underflow exception may be missing.  */
4444     TEST_c_c (casinh, 0x1p-23L, 0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4445     TEST_c_c (casinh, -0x1p-23L, 0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4446     TEST_c_c (casinh, 0x1p-23L, -0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4447     TEST_c_c (casinh, -0x1p-23L, -0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4448     TEST_c_c (casinh, 0.0L, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L),
4449     TEST_c_c (casinh, 0.0L, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L),
4450     TEST_c_c (casinh, -0.0L, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L),
4451     TEST_c_c (casinh, -0.0L, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L),
4452     TEST_c_c (casinh, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L, 0.0L),
4453     TEST_c_c (casinh, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L, 0.0L),
4454     TEST_c_c (casinh, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L, -0.0L),
4455     TEST_c_c (casinh, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L, -0.0L),
4456     TEST_c_c (casinh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4457     TEST_c_c (casinh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4458     TEST_c_c (casinh, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4459     TEST_c_c (casinh, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4460 #ifndef TEST_FLOAT
4461     TEST_c_c (casinh, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4462     TEST_c_c (casinh, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4463     TEST_c_c (casinh, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4464     TEST_c_c (casinh, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4465     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1p-52L, 8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4466     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1p-52L, -8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4467     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1p-52L, 8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4468     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1p-52L, -8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4469     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4470     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4471     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4472     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4473     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4474     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4475     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4476     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4477     TEST_c_c (casinh, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L),
4478     TEST_c_c (casinh, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L),
4479     TEST_c_c (casinh, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L),
4480     TEST_c_c (casinh, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L),
4481     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L, 0.0L),
4482     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L, 0.0L),
4483     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L, -0.0L),
4484     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L, -0.0L),
4485 #endif
4486     TEST_c_c (casinh, 0x1p-52L, 0.5L, 2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4487     TEST_c_c (casinh, 0x1p-52L, -0.5L, 2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4488     TEST_c_c (casinh, -0x1p-52L, 0.5L, -2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4489     TEST_c_c (casinh, -0x1p-52L, -0.5L, -2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4490     TEST_c_c (casinh, 0.5L, 0x1p-52L, 4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4491     TEST_c_c (casinh, -0.5L, 0x1p-52L, -4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4492     TEST_c_c (casinh, 0.5L, -0x1p-52L, 4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4493     TEST_c_c (casinh, -0.5L, -0x1p-52L, -4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4494 #ifndef TEST_FLOAT
4495     TEST_c_c (casinh, 0x1.fp-1025L, 0.5L, 6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4496     TEST_c_c (casinh, 0x1.fp-1025L, -0.5L, 6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4497     TEST_c_c (casinh, -0x1.fp-1025L, 0.5L, -6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4498     TEST_c_c (casinh, -0x1.fp-1025L, -0.5L, -6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4499     TEST_c_c (casinh, 0.5L, 0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4500     TEST_c_c (casinh, -0.5L, 0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4501     TEST_c_c (casinh, 0.5L, -0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4502     TEST_c_c (casinh, -0.5L, -0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4503 #endif
4504     TEST_c_c (casinh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4505     TEST_c_c (casinh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4506     TEST_c_c (casinh, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4507     TEST_c_c (casinh, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4508 #ifndef TEST_FLOAT
4509     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4510     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4511     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4512     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4513     /* Bug 15319: underflow exception may be missing.  */
4514     TEST_c_c (casinh, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4515     TEST_c_c (casinh, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4516     TEST_c_c (casinh, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4517     TEST_c_c (casinh, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4518 #endif
4519     TEST_c_c (casinh, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L),
4520     TEST_c_c (casinh, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L),
4521     TEST_c_c (casinh, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L),
4522     TEST_c_c (casinh, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L),
4523     TEST_c_c (casinh, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L, 0.0L),
4524     TEST_c_c (casinh, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L, 0.0L),
4525     TEST_c_c (casinh, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L, -0.0L),
4526     TEST_c_c (casinh, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L, -0.0L),
4527 #ifndef TEST_FLOAT
4528     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4529     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4530     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4531     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4532 #endif
4533 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4534     TEST_c_c (casinh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4535     TEST_c_c (casinh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4536     TEST_c_c (casinh, -0x1p-63L, 0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4537     TEST_c_c (casinh, -0x1p-63L, -0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4538     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4539     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1p-63L, -8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4540     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4541     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1p-63L, -8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4542 # if LDBL_MIN_EXP <= -16381
4543     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4544     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4545     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4546     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4547     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4548     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4549     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4550     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4551 # endif
4552     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L),
4553     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L),
4554     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L),
4555     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L),
4556     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L, 0.0L),
4557     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L, 0.0L),
4558     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L, -0.0L),
4559     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L, -0.0L),
4560 #endif
4561     TEST_c_c (casinh, 0x1p-63L, 0.5L, 1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4562     TEST_c_c (casinh, 0x1p-63L, -0.5L, 1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4563     TEST_c_c (casinh, -0x1p-63L, 0.5L, -1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4564     TEST_c_c (casinh, -0x1p-63L, -0.5L, -1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4565     TEST_c_c (casinh, 0.5L, 0x1p-63L, 4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4566     TEST_c_c (casinh, -0.5L, 0x1p-63L, -4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4567     TEST_c_c (casinh, 0.5L, -0x1p-63L, 4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4568     TEST_c_c (casinh, -0.5L, -0x1p-63L, -4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4569 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4570     TEST_c_c (casinh, 0x1.fp-16385L, 0.5L, 9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4571     TEST_c_c (casinh, 0x1.fp-16385L, -0.5L, 9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4572     TEST_c_c (casinh, -0x1.fp-16385L, 0.5L, -9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4573     TEST_c_c (casinh, -0x1.fp-16385L, -0.5L, -9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4574     TEST_c_c (casinh, 0.5L, 0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4575     TEST_c_c (casinh, -0.5L, 0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4576     TEST_c_c (casinh, 0.5L, -0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4577     TEST_c_c (casinh, -0.5L, -0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4578 #endif
4579     TEST_c_c (casinh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4580     TEST_c_c (casinh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4581     TEST_c_c (casinh, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4582     TEST_c_c (casinh, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4583 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4584     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4585     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4586     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4587     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4588     TEST_c_c (casinh, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4589     TEST_c_c (casinh, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4590     TEST_c_c (casinh, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4591     TEST_c_c (casinh, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4592 #endif
4593     TEST_c_c (casinh, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L),
4594     TEST_c_c (casinh, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L),
4595     TEST_c_c (casinh, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L),
4596     TEST_c_c (casinh, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L),
4597     TEST_c_c (casinh, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L, 0.0L),
4598     TEST_c_c (casinh, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L, 0.0L),
4599     TEST_c_c (casinh, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L, -0.0L),
4600     TEST_c_c (casinh, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L, -0.0L),
4601 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4602     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4603     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4604     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4605     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4606 #endif
4607 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4608     TEST_c_c (casinh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4609     TEST_c_c (casinh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4610     TEST_c_c (casinh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4611     TEST_c_c (casinh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4612     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4613     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4614     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4615     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4616     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4617     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4618     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4619     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4620     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4621     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4622     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4623     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4624     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L),
4625     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L),
4626     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L),
4627     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L),
4628     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L, 0.0L),
4629     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L, 0.0L),
4630     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L, -0.0L),
4631     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L, -0.0L),
4632 #endif
4633     TEST_c_c (casinh, 0x1p-105L, 0.5L, 2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4634     TEST_c_c (casinh, 0x1p-105L, -0.5L, 2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4635     TEST_c_c (casinh, -0x1p-105L, 0.5L, -2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4636     TEST_c_c (casinh, -0x1p-105L, -0.5L, -2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4637     TEST_c_c (casinh, 0.5L, 0x1p-105L, 4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4638     TEST_c_c (casinh, -0.5L, 0x1p-105L, -4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4639     TEST_c_c (casinh, 0.5L, -0x1p-105L, 4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4640     TEST_c_c (casinh, -0.5L, -0x1p-105L, -4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4641     TEST_c_c (casinh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4642     TEST_c_c (casinh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4643     TEST_c_c (casinh, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4644     TEST_c_c (casinh, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4645 #ifndef TEST_FLOAT
4646     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4647     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4648     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4649     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4650     /* Bug 15319: underflow exception may be missing.  */
4651     TEST_c_c (casinh, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4652     TEST_c_c (casinh, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4653     TEST_c_c (casinh, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4654     TEST_c_c (casinh, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4655 #endif
4656     TEST_c_c (casinh, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
4657     TEST_c_c (casinh, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
4658     TEST_c_c (casinh, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
4659     TEST_c_c (casinh, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
4660     TEST_c_c (casinh, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
4661     TEST_c_c (casinh, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
4662     TEST_c_c (casinh, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
4663     TEST_c_c (casinh, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
4664 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4665     TEST_c_c (casinh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4666     TEST_c_c (casinh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4667     TEST_c_c (casinh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4668     TEST_c_c (casinh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4669     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4670     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4671     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4672     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4673     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4674     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4675     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4676     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4677     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4678     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4679     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4680     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4681     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L),
4682     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L),
4683     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L),
4684     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L),
4685     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L, 0.0L),
4686     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L, 0.0L),
4687     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L, -0.0L),
4688     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L, -0.0L),
4689 #endif
4690     TEST_c_c (casinh, 0x1p-112L, 0.5L, 2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4691     TEST_c_c (casinh, 0x1p-112L, -0.5L, 2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4692     TEST_c_c (casinh, -0x1p-112L, 0.5L, -2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4693     TEST_c_c (casinh, -0x1p-112L, -0.5L, -2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4694     TEST_c_c (casinh, 0.5L, 0x1p-112L, 4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4695     TEST_c_c (casinh, -0.5L, 0x1p-112L, -4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4696     TEST_c_c (casinh, 0.5L, -0x1p-112L, 4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4697     TEST_c_c (casinh, -0.5L, -0x1p-112L, -4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4698     TEST_c_c (casinh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4699     TEST_c_c (casinh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4700     TEST_c_c (casinh, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4701     TEST_c_c (casinh, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4702 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4703     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4704     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4705     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4706     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4707     TEST_c_c (casinh, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4708     TEST_c_c (casinh, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4709     TEST_c_c (casinh, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4710     TEST_c_c (casinh, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4711 #endif
4712     TEST_c_c (casinh, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
4713     TEST_c_c (casinh, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
4714     TEST_c_c (casinh, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
4715     TEST_c_c (casinh, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
4716     TEST_c_c (casinh, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
4717     TEST_c_c (casinh, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
4718     TEST_c_c (casinh, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
4719     TEST_c_c (casinh, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
4720
4721     TEST_c_c (casinh, 0.75L, 1.25L, 1.03171853444778027336364058631006594L, 0.911738290968487636358489564316731207L),
4722     TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L),
4723     END_DATA (casinh)
4724   };
4725
4726 static void
4727 casinh_test (void)
4728 {
4729   errno = 0;
4730   FUNC(casinh) (BUILD_COMPLEX (0.7L, 1.2L));
4731   if (errno == ENOSYS)
4732     /* Function not implemented.  */
4733     return;
4734
4735   START (casinh);
4736   RUN_TEST_LOOP_c_c (casinh, casinh_test_data, );
4737   END (casinh, complex);
4738 }
4739
4740
4741 static const struct test_c_c_data catan_test_data[] =
4742   {
4743     START_DATA (catan),
4744     TEST_c_c (catan, 0, 0, 0, 0),
4745     TEST_c_c (catan, minus_zero, 0, minus_zero, 0),
4746     TEST_c_c (catan, 0, minus_zero, 0, minus_zero),
4747     TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero),
4748
4749     TEST_c_c (catan, 1.0L, plus_zero, M_PI_4l, plus_zero),
4750     TEST_c_c (catan, 1.0L, minus_zero, M_PI_4l, minus_zero),
4751     TEST_c_c (catan, -1.0L, plus_zero, -M_PI_4l, plus_zero),
4752     TEST_c_c (catan, -1.0L, minus_zero, -M_PI_4l, minus_zero),
4753     TEST_c_c (catan, plus_zero, 1.0L, plus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4754     TEST_c_c (catan, minus_zero, 1.0L, minus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4755     TEST_c_c (catan, plus_zero, -1.0L, plus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4756     TEST_c_c (catan, minus_zero, -1.0L, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4757
4758     TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0),
4759     TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero),
4760     TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0),
4761     TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero),
4762
4763
4764     TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero),
4765     TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero),
4766     TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero),
4767     TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero),
4768     TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0),
4769     TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0),
4770     TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0),
4771     TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0),
4772
4773     TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero),
4774     TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero),
4775     TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero),
4776     TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero),
4777
4778     TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0),
4779     TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0),
4780     TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0),
4781     TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0),
4782
4783     TEST_c_c (catan, qnan_value, 0.0, qnan_value, 0),
4784     TEST_c_c (catan, qnan_value, minus_zero, qnan_value, minus_zero),
4785
4786     TEST_c_c (catan, qnan_value, plus_infty, qnan_value, 0),
4787     TEST_c_c (catan, qnan_value, minus_infty, qnan_value, minus_zero),
4788
4789     TEST_c_c (catan, 0.0, qnan_value, qnan_value, qnan_value),
4790     TEST_c_c (catan, minus_zero, qnan_value, qnan_value, qnan_value),
4791
4792     TEST_c_c (catan, plus_infty, qnan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4793     TEST_c_c (catan, minus_infty, qnan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4794
4795     TEST_c_c (catan, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4796     TEST_c_c (catan, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4797
4798     TEST_c_c (catan, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4799     TEST_c_c (catan, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4800
4801     TEST_c_c (catan, qnan_value, qnan_value, qnan_value, qnan_value),
4802
4803     TEST_c_c (catan, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L, 0.0L),
4804     TEST_c_c (catan, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L, -0.0L),
4805     TEST_c_c (catan, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L, 0.0L),
4806     TEST_c_c (catan, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L, -0.0L),
4807     TEST_c_c (catan, 0.0L, 0x1p50L, 1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4808     TEST_c_c (catan, -0.0L, 0x1p50L, -1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4809     TEST_c_c (catan, 0.0L, -0x1p50L, 1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4810     TEST_c_c (catan, -0.0L, -0x1p50L, -1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4811 #ifndef TEST_FLOAT
4812     TEST_c_c (catan, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4813     TEST_c_c (catan, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4814     TEST_c_c (catan, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4815     TEST_c_c (catan, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4816     TEST_c_c (catan, 0.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4817     TEST_c_c (catan, -0.0L, 0x1p500L, -1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4818     TEST_c_c (catan, 0.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4819     TEST_c_c (catan, -0.0L, -0x1p500L, -1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4820 #endif
4821 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4822     TEST_c_c (catan, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4823     TEST_c_c (catan, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4824     TEST_c_c (catan, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4825     TEST_c_c (catan, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4826     TEST_c_c (catan, 0.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4827     TEST_c_c (catan, -0.0L, 0x1p5000L, -1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4828     TEST_c_c (catan, 0.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4829     TEST_c_c (catan, -0.0L, -0x1p5000L, -1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4830 #endif
4831     TEST_c_c (catan, 0x1p63L, 0.5L, 1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4832     TEST_c_c (catan, 0x1p63L, -0.5L, 1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4833     TEST_c_c (catan, -0x1p63L, 0.5L, -1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4834     TEST_c_c (catan, -0x1p63L, -0.5L, -1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4835     TEST_c_c (catan, 0.5L, 0x1p63L, 1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4836     TEST_c_c (catan, -0.5L, 0x1p63L, -1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4837     TEST_c_c (catan, 0.5L, -0x1p63L, 1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4838     TEST_c_c (catan, -0.5L, -0x1p63L, -1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4839 #ifndef TEST_FLOAT
4840     TEST_c_c (catan, 0x1p511L, 0.5L, 1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4841     TEST_c_c (catan, 0x1p511L, -0.5L, 1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4842     TEST_c_c (catan, -0x1p511L, 0.5L, -1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4843     TEST_c_c (catan, -0x1p511L, -0.5L, -1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4844     TEST_c_c (catan, 0.5L, 0x1p511L, 1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4845     TEST_c_c (catan, -0.5L, 0x1p511L, -1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4846     TEST_c_c (catan, 0.5L, -0x1p511L, 1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4847     TEST_c_c (catan, -0.5L, -0x1p511L, -1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4848 #endif
4849 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4850     TEST_c_c (catan, 0x1p8191L, 0.5L, 1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4851     TEST_c_c (catan, 0x1p8191L, -0.5L, 1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4852     TEST_c_c (catan, -0x1p8191L, 0.5L, -1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4853     TEST_c_c (catan, -0x1p8191L, -0.5L, -1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4854     TEST_c_c (catan, 0.5L, 0x1p8191L, 1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4855     TEST_c_c (catan, -0.5L, 0x1p8191L, -1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4856     TEST_c_c (catan, 0.5L, -0x1p8191L, 1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4857     TEST_c_c (catan, -0.5L, -0x1p8191L, -1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4858 #endif
4859     TEST_c_c (catan, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L, 0.0L),
4860     TEST_c_c (catan, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L, -0.0L),
4861     TEST_c_c (catan, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L, 0.0L),
4862     TEST_c_c (catan, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L, -0.0L),
4863     TEST_c_c (catan, 0.0L, 0x1p100L, 1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4864     TEST_c_c (catan, -0.0L, 0x1p100L, -1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4865     TEST_c_c (catan, 0.0L, -0x1p100L, 1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4866     TEST_c_c (catan, -0.0L, -0x1p100L, -1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4867     TEST_c_c (catan, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L, 0.0L),
4868     TEST_c_c (catan, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L, -0.0L),
4869     TEST_c_c (catan, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L, 0.0L),
4870     TEST_c_c (catan, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L, -0.0L),
4871     TEST_c_c (catan, 0.0L, 0x1.fp127L, 1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4872     TEST_c_c (catan, -0.0L, 0x1.fp127L, -1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4873     TEST_c_c (catan, 0.0L, -0x1.fp127L, 1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4874     TEST_c_c (catan, -0.0L, -0x1.fp127L, -1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4875     TEST_c_c (catan, 0x1.fp127L, 0x1.fp127L, 1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4876     TEST_c_c (catan, 0x1.fp127L, -0x1.fp127L, 1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4877     TEST_c_c (catan, -0x1.fp127L, 0x1.fp127L, -1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4878     TEST_c_c (catan, -0x1.fp127L, -0x1.fp127L, -1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4879 #ifndef TEST_FLOAT
4880     TEST_c_c (catan, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4881     TEST_c_c (catan, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4882     TEST_c_c (catan, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4883     TEST_c_c (catan, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4884     TEST_c_c (catan, 0.0L, 0x1p900L, 1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4885     TEST_c_c (catan, -0.0L, 0x1p900L, -1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4886     TEST_c_c (catan, 0.0L, -0x1p900L, 1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4887     TEST_c_c (catan, -0.0L, -0x1p900L, -1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4888     TEST_c_c (catan, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4889     TEST_c_c (catan, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4890     TEST_c_c (catan, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4891     TEST_c_c (catan, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4892     TEST_c_c (catan, 0.0L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4893     TEST_c_c (catan, -0.0L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4894     TEST_c_c (catan, 0.0L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4895     TEST_c_c (catan, -0.0L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4896     TEST_c_c (catan, 0x1.fp1023L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4897     TEST_c_c (catan, 0x1.fp1023L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4898     TEST_c_c (catan, -0x1.fp1023L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4899     TEST_c_c (catan, -0x1.fp1023L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4900 #endif
4901 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4902     TEST_c_c (catan, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4903     TEST_c_c (catan, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4904     TEST_c_c (catan, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4905     TEST_c_c (catan, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4906     TEST_c_c (catan, 0.0L, 0x1p10000L, 1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4907     TEST_c_c (catan, -0.0L, 0x1p10000L, -1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4908     TEST_c_c (catan, 0.0L, -0x1p10000L, 1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4909     TEST_c_c (catan, -0.0L, -0x1p10000L, -1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4910     TEST_c_c (catan, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4911     TEST_c_c (catan, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4912     TEST_c_c (catan, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4913     TEST_c_c (catan, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4914     TEST_c_c (catan, 0.0L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4915     TEST_c_c (catan, -0.0L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4916     TEST_c_c (catan, 0.0L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4917     TEST_c_c (catan, -0.0L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4918     TEST_c_c (catan, 0x1.fp16383L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4919     TEST_c_c (catan, 0x1.fp16383L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4920     TEST_c_c (catan, -0x1.fp16383L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4921     TEST_c_c (catan, -0x1.fp16383L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4922 #endif
4923     TEST_c_c (catan, 0x1p-13L, 1.0L, 7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4924     TEST_c_c (catan, 0x1p-13L, -1.0L, 7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4925     TEST_c_c (catan, -0x1p-13L, 1.0L, -7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4926     TEST_c_c (catan, -0x1p-13L, -1.0L, -7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4927     TEST_c_c (catan, 1.0L, 0x1p-13L, 7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4928     TEST_c_c (catan, -1.0L, 0x1p-13L, -7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4929     TEST_c_c (catan, 1.0L, -0x1p-13L, 7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4930     TEST_c_c (catan, -1.0L, -0x1p-13L, -7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4931     TEST_c_c (catan, 0x1p-27L, 1.0L, 7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4932     TEST_c_c (catan, 0x1p-27L, -1.0L, 7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4933     TEST_c_c (catan, -0x1p-27L, 1.0L, -7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4934     TEST_c_c (catan, -0x1p-27L, -1.0L, -7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4935     TEST_c_c (catan, 1.0L, 0x1p-27L, 7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4936     TEST_c_c (catan, -1.0L, 0x1p-27L, -7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4937     TEST_c_c (catan, 1.0L, -0x1p-27L, 7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4938     TEST_c_c (catan, -1.0L, -0x1p-27L, -7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4939     TEST_c_c (catan, 0x1p-33L, 1.0L, 7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4940     TEST_c_c (catan, 0x1p-33L, -1.0L, 7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4941     TEST_c_c (catan, -0x1p-33L, 1.0L, -7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4942     TEST_c_c (catan, -0x1p-33L, -1.0L, -7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4943     TEST_c_c (catan, 1.0L, 0x1p-33L, 7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4944     TEST_c_c (catan, -1.0L, 0x1p-33L, -7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4945     TEST_c_c (catan, 1.0L, -0x1p-33L, 7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4946     TEST_c_c (catan, -1.0L, -0x1p-33L, -7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4947     TEST_c_c (catan, 0x1p-54L, 1.0L, 7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4948     TEST_c_c (catan, 0x1p-54L, -1.0L, 7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4949     TEST_c_c (catan, -0x1p-54L, 1.0L, -7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4950     TEST_c_c (catan, -0x1p-54L, -1.0L, -7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4951     TEST_c_c (catan, 1.0L, 0x1p-54L, 7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4952     TEST_c_c (catan, -1.0L, 0x1p-54L, -7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4953     TEST_c_c (catan, 1.0L, -0x1p-54L, 7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4954     TEST_c_c (catan, -1.0L, -0x1p-54L, -7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4955     TEST_c_c (catan, 0x1p-57L, 1.0L, 7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4956     TEST_c_c (catan, 0x1p-57L, -1.0L, 7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4957     TEST_c_c (catan, -0x1p-57L, 1.0L, -7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4958     TEST_c_c (catan, -0x1p-57L, -1.0L, -7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4959     TEST_c_c (catan, 1.0L, 0x1p-57L, 7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4960     TEST_c_c (catan, -1.0L, 0x1p-57L, -7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4961     TEST_c_c (catan, 1.0L, -0x1p-57L, 7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4962     TEST_c_c (catan, -1.0L, -0x1p-57L, -7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4963     TEST_c_c (catan, 0x1p-13L, 0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4964     TEST_c_c (catan, 0x1p-13L, -0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4965     TEST_c_c (catan, -0x1p-13L, 0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4966     TEST_c_c (catan, -0x1p-13L, -0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4967     TEST_c_c (catan, 0x1.000002p0L, 0x1p-13L, 7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4968     TEST_c_c (catan, -0x1.000002p0L, 0x1p-13L, -7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4969     TEST_c_c (catan, 0x1.000002p0L, -0x1p-13L, 7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4970     TEST_c_c (catan, -0x1.000002p0L, -0x1p-13L, -7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4971     TEST_c_c (catan, 0x1p-13L, 0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4972     TEST_c_c (catan, 0x1p-13L, -0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4973     TEST_c_c (catan, -0x1p-13L, 0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4974     TEST_c_c (catan, -0x1p-13L, -0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4975     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-13L, 7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4976     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-13L, -7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4977     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-13L, 7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4978     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-13L, -7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4979 #ifndef TEST_FLOAT
4980     TEST_c_c (catan, 0x1p-27L, 0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4981     TEST_c_c (catan, 0x1p-27L, -0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4982     TEST_c_c (catan, -0x1p-27L, 0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4983     TEST_c_c (catan, -0x1p-27L, -0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4984     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-27L, 7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4985     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-27L, -7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4986     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-27L, 7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4987     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-27L, -7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4988     TEST_c_c (catan, 0x1p-27L, 0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4989     TEST_c_c (catan, 0x1p-27L, -0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4990     TEST_c_c (catan, -0x1p-27L, 0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4991     TEST_c_c (catan, -0x1p-27L, -0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4992     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-27L, 7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4993     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-27L, -7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4994     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-27L, 7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4995     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-27L, -7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4996 #endif
4997 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4998     TEST_c_c (catan, 0x1p-33L, 0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
4999     TEST_c_c (catan, 0x1p-33L, -0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
5000     TEST_c_c (catan, -0x1p-33L, 0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
5001     TEST_c_c (catan, -0x1p-33L, -0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
5002     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-33L, 7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
5003     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-33L, -7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
5004     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-33L, 7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
5005     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-33L, -7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
5006     TEST_c_c (catan, 0x1p-33L, 0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
5007     TEST_c_c (catan, 0x1p-33L, -0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
5008     TEST_c_c (catan, -0x1p-33L, 0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
5009     TEST_c_c (catan, -0x1p-33L, -0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
5010     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-33L, 7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
5011     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-33L, -7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
5012     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-33L, 7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
5013     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-33L, -7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
5014 #endif
5015 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5016     TEST_c_c (catan, 0x1p-54L, 0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
5017     TEST_c_c (catan, 0x1p-54L, -0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
5018     TEST_c_c (catan, -0x1p-54L, 0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
5019     TEST_c_c (catan, -0x1p-54L, -0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
5020     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-54L, 7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
5021     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-54L, -7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
5022     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-54L, 7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
5023     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-54L, -7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
5024     TEST_c_c (catan, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
5025     TEST_c_c (catan, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
5026     TEST_c_c (catan, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
5027     TEST_c_c (catan, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
5028     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
5029     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
5030     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
5031     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
5032 #endif
5033 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5034     TEST_c_c (catan, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
5035     TEST_c_c (catan, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
5036     TEST_c_c (catan, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
5037     TEST_c_c (catan, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
5038     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
5039     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
5040     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
5041     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
5042     TEST_c_c (catan, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
5043     TEST_c_c (catan, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
5044     TEST_c_c (catan, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
5045     TEST_c_c (catan, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
5046     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
5047     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
5048     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
5049     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
5050 #endif
5051     TEST_c_c (catan, 1.0L, 0x1p-64L, 7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
5052     TEST_c_c (catan, 1.0L, -0x1p-64L, 7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
5053     TEST_c_c (catan, -1.0L, 0x1p-64L, -7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
5054     TEST_c_c (catan, -1.0L, -0x1p-64L, -7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
5055     TEST_c_c (catan, 0x1p-64L, 1.0L, 7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
5056     TEST_c_c (catan, -0x1p-64L, 1.0L, -7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
5057     TEST_c_c (catan, 0x1p-64L, -1.0L, 7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
5058     TEST_c_c (catan, -0x1p-64L, -1.0L, -7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
5059     TEST_c_c (catan, 1.0L, 0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
5060     TEST_c_c (catan, 1.0L, -0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
5061     TEST_c_c (catan, -1.0L, 0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
5062     TEST_c_c (catan, -1.0L, -0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
5063     TEST_c_c (catan, 0x1.3p-73L, 1.0L, 7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
5064     TEST_c_c (catan, -0x1.3p-73L, 1.0L, -7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
5065     TEST_c_c (catan, 0x1.3p-73L, -1.0L, 7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
5066     TEST_c_c (catan, -0x1.3p-73L, -1.0L, -7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
5067     TEST_c_c (catan, 1.0L, 0x1p-124L, 7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
5068     TEST_c_c (catan, 1.0L, -0x1p-124L, 7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
5069     TEST_c_c (catan, -1.0L, 0x1p-124L, -7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
5070     TEST_c_c (catan, -1.0L, -0x1p-124L, -7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
5071     TEST_c_c (catan, 0x1p-124L, 1.0L, 7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
5072     TEST_c_c (catan, -0x1p-124L, 1.0L, -7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
5073     TEST_c_c (catan, 0x1p-124L, -1.0L, 7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
5074     TEST_c_c (catan, -0x1p-124L, -1.0L, -7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
5075     TEST_c_c (catan, 0x1.000002p0L, 0x1p-126L, 7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5076     TEST_c_c (catan, 0x1.000002p0L, -0x1p-126L, 7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5077     TEST_c_c (catan, -0x1.000002p0L, 0x1p-126L, -7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5078     TEST_c_c (catan, -0x1.000002p0L, -0x1p-126L, -7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5079     TEST_c_c (catan, 0x1p-126L, 0x1.000002p0L, 1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
5080     TEST_c_c (catan, -0x1p-126L, 0x1.000002p0L, -1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
5081     TEST_c_c (catan, 0x1p-126L, -0x1.000002p0L, 1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
5082     TEST_c_c (catan, -0x1p-126L, -0x1.000002p0L, -1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
5083     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-126L, 7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5084     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-126L, 7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5085     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-126L, -7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5086     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-126L, -7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
5087     TEST_c_c (catan, 0x1p-126L, 0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
5088     TEST_c_c (catan, -0x1p-126L, 0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
5089     TEST_c_c (catan, 0x1p-126L, -0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
5090     TEST_c_c (catan, -0x1p-126L, -0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
5091 #ifndef TEST_FLOAT
5092     TEST_c_c (catan, 1.0L, 0x1p-512L, 7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
5093     TEST_c_c (catan, 1.0L, -0x1p-512L, 7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
5094     TEST_c_c (catan, -1.0L, 0x1p-512L, -7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
5095     TEST_c_c (catan, -1.0L, -0x1p-512L, -7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
5096     TEST_c_c (catan, 0x1p-512L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
5097     TEST_c_c (catan, -0x1p-512L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
5098     TEST_c_c (catan, 0x1p-512L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
5099     TEST_c_c (catan, -0x1p-512L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
5100     TEST_c_c (catan, 1.0L, 0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
5101     TEST_c_c (catan, 1.0L, -0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
5102     TEST_c_c (catan, -1.0L, 0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
5103     TEST_c_c (catan, -1.0L, -0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
5104     TEST_c_c (catan, 0x1.3p-536L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
5105     TEST_c_c (catan, -0x1.3p-536L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
5106     TEST_c_c (catan, 0x1.3p-536L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
5107     TEST_c_c (catan, -0x1.3p-536L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
5108     TEST_c_c (catan, 1.0L, 0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5109     TEST_c_c (catan, 1.0L, -0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5110     TEST_c_c (catan, -1.0L, 0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5111     TEST_c_c (catan, -1.0L, -0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5112     TEST_c_c (catan, 0x1p-1020L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
5113     TEST_c_c (catan, -0x1p-1020L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
5114     TEST_c_c (catan, 0x1p-1020L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
5115     TEST_c_c (catan, -0x1p-1020L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
5116     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5117     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5118     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5119     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5120     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
5121     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
5122     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
5123     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
5124     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5125     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5126     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5127     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5128     TEST_c_c (catan, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5129     TEST_c_c (catan, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5130     TEST_c_c (catan, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5131     TEST_c_c (catan, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5132 #endif
5133 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5134     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5135     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5136     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5137     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5138     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5139     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5140     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5141     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5142     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5143     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5144     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5145     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5146     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5147     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5148     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5149     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5150 #endif
5151 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5152     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5153     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5154     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5155     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5156     TEST_c_c (catan, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5157     TEST_c_c (catan, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5158     TEST_c_c (catan, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5159     TEST_c_c (catan, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5160     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5161     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5162     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5163     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5164     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5165     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5166     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5167     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5168 #endif
5169 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5170     TEST_c_c (catan, 1.0L, 0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5171     TEST_c_c (catan, 1.0L, -0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5172     TEST_c_c (catan, -1.0L, 0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5173     TEST_c_c (catan, -1.0L, -0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5174     TEST_c_c (catan, 0x1p-8192L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5175     TEST_c_c (catan, -0x1p-8192L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5176     TEST_c_c (catan, 0x1p-8192L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5177     TEST_c_c (catan, -0x1p-8192L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5178     TEST_c_c (catan, 1.0L, 0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5179     TEST_c_c (catan, 1.0L, -0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5180     TEST_c_c (catan, -1.0L, 0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5181     TEST_c_c (catan, -1.0L, -0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5182     TEST_c_c (catan, 0x1.3p-8221L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5183     TEST_c_c (catan, -0x1.3p-8221L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5184     TEST_c_c (catan, 0x1.3p-8221L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5185     TEST_c_c (catan, -0x1.3p-8221L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5186     TEST_c_c (catan, 1.0L, 0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5187     TEST_c_c (catan, 1.0L, -0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5188     TEST_c_c (catan, -1.0L, 0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5189     TEST_c_c (catan, -1.0L, -0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5190     TEST_c_c (catan, 0x1.3p-8246L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5191     TEST_c_c (catan, -0x1.3p-8246L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5192     TEST_c_c (catan, 0x1.3p-8246L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5193     TEST_c_c (catan, -0x1.3p-8246L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5194     TEST_c_c (catan, 1.0L, 0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5195     TEST_c_c (catan, 1.0L, -0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5196     TEST_c_c (catan, -1.0L, 0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5197     TEST_c_c (catan, -1.0L, -0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5198     TEST_c_c (catan, 0x1p-16380L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5199     TEST_c_c (catan, -0x1p-16380L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5200     TEST_c_c (catan, 0x1p-16380L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5201     TEST_c_c (catan, -0x1p-16380L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5202     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5203     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5204     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5205     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5206     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5207     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5208     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5209     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5210     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5211     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5212     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5213     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5214     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5215     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5216     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5217     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5218 # if LDBL_MANT_DIG >= 113
5219     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5220     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5221     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5222     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5223     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5224     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5225     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5226     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5227     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5228     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5229     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5230     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5231     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5232     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5233     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5234     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5235 # endif
5236 #endif
5237
5238     TEST_c_c (catan, 0.75L, 1.25L, 1.10714871779409050301706546017853704L, 0.549306144334054845697622618461262852L),
5239     TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L),
5240     END_DATA (catan)
5241   };
5242
5243 static void
5244 catan_test (void)
5245 {
5246   errno = 0;
5247   FUNC(catan) (BUILD_COMPLEX (0.7L, 1.2L));
5248   if (errno == ENOSYS)
5249     /* Function not implemented.  */
5250     return;
5251
5252   START (catan);
5253   RUN_TEST_LOOP_c_c (catan, catan_test_data, );
5254   END (catan, complex);
5255 }
5256
5257 static const struct test_c_c_data catanh_test_data[] =
5258   {
5259     START_DATA (catanh),
5260     TEST_c_c (catanh, 0, 0, 0.0, 0.0),
5261     TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0),
5262     TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero),
5263     TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero),
5264
5265     TEST_c_c (catanh, 1.0L, plus_zero, plus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5266     TEST_c_c (catanh, 1.0L, minus_zero, plus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5267     TEST_c_c (catanh, -1.0L, plus_zero, minus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5268     TEST_c_c (catanh, -1.0L, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5269     TEST_c_c (catanh, plus_zero, 1.0L, plus_zero, M_PI_4l),
5270     TEST_c_c (catanh, minus_zero, 1.0L, minus_zero, M_PI_4l),
5271     TEST_c_c (catanh, plus_zero, -1.0L, plus_zero, -M_PI_4l),
5272     TEST_c_c (catanh, minus_zero, -1.0L, minus_zero, -M_PI_4l),
5273
5274     TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l),
5275     TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l),
5276     TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l),
5277     TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l),
5278
5279     TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l),
5280     TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l),
5281     TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l),
5282     TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l),
5283     TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l),
5284     TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l),
5285     TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l),
5286     TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l),
5287
5288     TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l),
5289     TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l),
5290     TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l),
5291     TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l),
5292
5293     TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l),
5294     TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l),
5295     TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l),
5296     TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l),
5297
5298     TEST_c_c (catanh, 0, qnan_value, 0.0, qnan_value),
5299     TEST_c_c (catanh, minus_zero, qnan_value, minus_zero, qnan_value),
5300
5301     TEST_c_c (catanh, plus_infty, qnan_value, 0.0, qnan_value),
5302     TEST_c_c (catanh, minus_infty, qnan_value, minus_zero, qnan_value),
5303
5304     TEST_c_c (catanh, qnan_value, 0, qnan_value, qnan_value),
5305     TEST_c_c (catanh, qnan_value, minus_zero, qnan_value, qnan_value),
5306
5307     TEST_c_c (catanh, qnan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN),
5308     TEST_c_c (catanh, qnan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN),
5309
5310     TEST_c_c (catanh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5311     TEST_c_c (catanh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5312
5313     TEST_c_c (catanh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5314     TEST_c_c (catanh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5315
5316     TEST_c_c (catanh, qnan_value, qnan_value, qnan_value, qnan_value),
5317
5318     TEST_c_c (catanh, 0x1p50L, 0.0L, 8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5319     TEST_c_c (catanh, 0x1p50L, -0.0L, 8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5320     TEST_c_c (catanh, -0x1p50L, 0.0L, -8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5321     TEST_c_c (catanh, -0x1p50L, -0.0L, -8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5322     TEST_c_c (catanh, 0.0L, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L),
5323     TEST_c_c (catanh, -0.0L, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L),
5324     TEST_c_c (catanh, 0.0L, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L),
5325     TEST_c_c (catanh, -0.0L, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L),
5326 #ifndef TEST_FLOAT
5327     TEST_c_c (catanh, 0x1p500L, 0.0L, 3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5328     TEST_c_c (catanh, 0x1p500L, -0.0L, 3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5329     TEST_c_c (catanh, -0x1p500L, 0.0L, -3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5330     TEST_c_c (catanh, -0x1p500L, -0.0L, -3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5331     TEST_c_c (catanh, 0.0L, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L),
5332     TEST_c_c (catanh, -0.0L, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L),
5333     TEST_c_c (catanh, 0.0L, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L),
5334     TEST_c_c (catanh, -0.0L, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L),
5335 #endif
5336 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5337     TEST_c_c (catanh, 0x1p5000L, 0.0L, 7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5338     TEST_c_c (catanh, 0x1p5000L, -0.0L, 7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5339     TEST_c_c (catanh, -0x1p5000L, 0.0L, -7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5340     TEST_c_c (catanh, -0x1p5000L, -0.0L, -7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5341     TEST_c_c (catanh, 0.0L, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L),
5342     TEST_c_c (catanh, -0.0L, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L),
5343     TEST_c_c (catanh, 0.0L, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L),
5344     TEST_c_c (catanh, -0.0L, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L),
5345 #endif
5346     TEST_c_c (catanh, 0x1p63L, 0.5L, 1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5347     TEST_c_c (catanh, 0x1p63L, -0.5L, 1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5348     TEST_c_c (catanh, -0x1p63L, 0.5L, -1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5349     TEST_c_c (catanh, -0x1p63L, -0.5L, -1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5350     TEST_c_c (catanh, 0.5L, 0x1p63L, 5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5351     TEST_c_c (catanh, -0.5L, 0x1p63L, -5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5352     TEST_c_c (catanh, 0.5L, -0x1p63L, 5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5353     TEST_c_c (catanh, -0.5L, -0x1p63L, -5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5354 #ifndef TEST_FLOAT
5355     TEST_c_c (catanh, 0x1p511L, 0.5L, 1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5356     TEST_c_c (catanh, 0x1p511L, -0.5L, 1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5357     TEST_c_c (catanh, -0x1p511L, 0.5L, -1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5358     TEST_c_c (catanh, -0x1p511L, -0.5L, -1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5359     TEST_c_c (catanh, 0.5L, 0x1p511L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5360     TEST_c_c (catanh, -0.5L, 0x1p511L, -1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5361     TEST_c_c (catanh, 0.5L, -0x1p511L, 1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5362     TEST_c_c (catanh, -0.5L, -0x1p511L, -1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5363 #endif
5364 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5365     TEST_c_c (catanh, 0x1p8191L, 0.5L, 1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5366     TEST_c_c (catanh, 0x1p8191L, -0.5L, 1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5367     TEST_c_c (catanh, -0x1p8191L, 0.5L, -1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5368     TEST_c_c (catanh, -0x1p8191L, -0.5L, -1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5369     TEST_c_c (catanh, 0.5L, 0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5370     TEST_c_c (catanh, -0.5L, 0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5371     TEST_c_c (catanh, 0.5L, -0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5372     TEST_c_c (catanh, -0.5L, -0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5373 #endif
5374     TEST_c_c (catanh, 0x1p100L, 0.0L, 7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5375     TEST_c_c (catanh, 0x1p100L, -0.0L, 7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5376     TEST_c_c (catanh, -0x1p100L, 0.0L, -7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5377     TEST_c_c (catanh, -0x1p100L, -0.0L, -7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5378     TEST_c_c (catanh, 0.0L, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L),
5379     TEST_c_c (catanh, -0.0L, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L),
5380     TEST_c_c (catanh, 0.0L, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L),
5381     TEST_c_c (catanh, -0.0L, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L),
5382     TEST_c_c (catanh, 0x1.fp127L, 0.0L, 3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5383     TEST_c_c (catanh, 0x1.fp127L, -0.0L, 3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5384     TEST_c_c (catanh, -0x1.fp127L, 0.0L, -3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5385     TEST_c_c (catanh, -0x1.fp127L, -0.0L, -3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5386     TEST_c_c (catanh, 0.0L, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L),
5387     TEST_c_c (catanh, -0.0L, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L),
5388     TEST_c_c (catanh, 0.0L, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L),
5389     TEST_c_c (catanh, -0.0L, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L),
5390     TEST_c_c (catanh, 0x1.fp127L, 0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5391     TEST_c_c (catanh, 0x1.fp127L, -0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5392     TEST_c_c (catanh, -0x1.fp127L, 0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5393     TEST_c_c (catanh, -0x1.fp127L, -0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5394 #ifndef TEST_FLOAT
5395     TEST_c_c (catanh, 0x1p900L, 0.0L, 1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5396     TEST_c_c (catanh, 0x1p900L, -0.0L, 1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5397     TEST_c_c (catanh, -0x1p900L, 0.0L, -1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5398     TEST_c_c (catanh, -0x1p900L, -0.0L, -1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5399     TEST_c_c (catanh, 0.0L, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L),
5400     TEST_c_c (catanh, -0.0L, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L),
5401     TEST_c_c (catanh, 0.0L, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L),
5402     TEST_c_c (catanh, -0.0L, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L),
5403     TEST_c_c (catanh, 0x1.fp1023L, 0.0L, 5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5404     TEST_c_c (catanh, 0x1.fp1023L, -0.0L, 5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5405     TEST_c_c (catanh, -0x1.fp1023L, 0.0L, -5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5406     TEST_c_c (catanh, -0x1.fp1023L, -0.0L, -5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5407     TEST_c_c (catanh, 0.0L, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L),
5408     TEST_c_c (catanh, -0.0L, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L),
5409     TEST_c_c (catanh, 0.0L, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L),
5410     TEST_c_c (catanh, -0.0L, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L),
5411     TEST_c_c (catanh, 0x1.fp1023L, 0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5412     TEST_c_c (catanh, 0x1.fp1023L, -0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5413     TEST_c_c (catanh, -0x1.fp1023L, 0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5414     TEST_c_c (catanh, -0x1.fp1023L, -0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5415 #endif
5416 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5417     TEST_c_c (catanh, 0x1p10000L, 0.0L, 5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5418     TEST_c_c (catanh, 0x1p10000L, -0.0L, 5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5419     TEST_c_c (catanh, -0x1p10000L, 0.0L, -5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5420     TEST_c_c (catanh, -0x1p10000L, -0.0L, -5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5421     TEST_c_c (catanh, 0.0L, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L),
5422     TEST_c_c (catanh, -0.0L, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L),
5423     TEST_c_c (catanh, 0.0L, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L),
5424     TEST_c_c (catanh, -0.0L, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L),
5425     TEST_c_c (catanh, 0x1.fp16383L, 0.0L, 8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5426     TEST_c_c (catanh, 0x1.fp16383L, -0.0L, 8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5427     TEST_c_c (catanh, -0x1.fp16383L, 0.0L, -8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5428     TEST_c_c (catanh, -0x1.fp16383L, -0.0L, -8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5429     TEST_c_c (catanh, 0.0L, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L),
5430     TEST_c_c (catanh, -0.0L, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L),
5431     TEST_c_c (catanh, 0.0L, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L),
5432     TEST_c_c (catanh, -0.0L, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L),
5433     TEST_c_c (catanh, 0x1.fp16383L, 0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5434     TEST_c_c (catanh, 0x1.fp16383L, -0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5435     TEST_c_c (catanh, -0x1.fp16383L, 0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5436     TEST_c_c (catanh, -0x1.fp16383L, -0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5437 #endif
5438     TEST_c_c (catanh, 0x1p-13L, 1.0L, 6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5439     TEST_c_c (catanh, 0x1p-13L, -1.0L, 6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5440     TEST_c_c (catanh, -0x1p-13L, 1.0L, -6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5441     TEST_c_c (catanh, -0x1p-13L, -1.0L, -6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5442     TEST_c_c (catanh, 1.0L, 0x1p-13L, 4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5443     TEST_c_c (catanh, -1.0L, 0x1p-13L, -4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5444     TEST_c_c (catanh, 1.0L, -0x1p-13L, 4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5445     TEST_c_c (catanh, -1.0L, -0x1p-13L, -4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5446     TEST_c_c (catanh, 0x1p-27L, 1.0L, 3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5447     TEST_c_c (catanh, 0x1p-27L, -1.0L, 3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5448     TEST_c_c (catanh, -0x1p-27L, 1.0L, -3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5449     TEST_c_c (catanh, -0x1p-27L, -1.0L, -3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5450     TEST_c_c (catanh, 1.0L, 0x1p-27L, 9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5451     TEST_c_c (catanh, -1.0L, 0x1p-27L, -9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5452     TEST_c_c (catanh, 1.0L, -0x1p-27L, 9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5453     TEST_c_c (catanh, -1.0L, -0x1p-27L, -9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5454     TEST_c_c (catanh, 0x1p-33L, 1.0L, 5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5455     TEST_c_c (catanh, 0x1p-33L, -1.0L, 5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5456     TEST_c_c (catanh, -0x1p-33L, 1.0L, -5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5457     TEST_c_c (catanh, -0x1p-33L, -1.0L, -5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5458     TEST_c_c (catanh, 1.0L, 0x1p-33L, 1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5459     TEST_c_c (catanh, -1.0L, 0x1p-33L, -1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5460     TEST_c_c (catanh, 1.0L, -0x1p-33L, 1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5461     TEST_c_c (catanh, -1.0L, -0x1p-33L, -1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5462     TEST_c_c (catanh, 0x1p-54L, 1.0L, 2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5463     TEST_c_c (catanh, 0x1p-54L, -1.0L, 2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5464     TEST_c_c (catanh, -0x1p-54L, 1.0L, -2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5465     TEST_c_c (catanh, -0x1p-54L, -1.0L, -2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5466     TEST_c_c (catanh, 1.0L, 0x1p-54L, 1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5467     TEST_c_c (catanh, -1.0L, 0x1p-54L, -1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5468     TEST_c_c (catanh, 1.0L, -0x1p-54L, 1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5469     TEST_c_c (catanh, -1.0L, -0x1p-54L, -1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5470     TEST_c_c (catanh, 0x1p-57L, 1.0L, 3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5471     TEST_c_c (catanh, 0x1p-57L, -1.0L, 3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5472     TEST_c_c (catanh, -0x1p-57L, 1.0L, -3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5473     TEST_c_c (catanh, -0x1p-57L, -1.0L, -3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5474     TEST_c_c (catanh, 1.0L, 0x1p-57L, 2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5475     TEST_c_c (catanh, -1.0L, 0x1p-57L, -2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5476     TEST_c_c (catanh, 1.0L, -0x1p-57L, 2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5477     TEST_c_c (catanh, -1.0L, -0x1p-57L, -2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5478     TEST_c_c (catanh, 0x1p-13L, 0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5479     TEST_c_c (catanh, 0x1p-13L, -0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5480     TEST_c_c (catanh, -0x1p-13L, 0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5481     TEST_c_c (catanh, -0x1p-13L, -0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5482     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-13L, 4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5483     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-13L, -4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5484     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-13L, 4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5485     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-13L, -4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5486     TEST_c_c (catanh, 0x1p-13L, 0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5487     TEST_c_c (catanh, 0x1p-13L, -0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5488     TEST_c_c (catanh, -0x1p-13L, 0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5489     TEST_c_c (catanh, -0x1p-13L, -0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5490     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-13L, 4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5491     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-13L, -4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5492     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-13L, 4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5493     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-13L, -4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5494 #ifndef TEST_FLOAT
5495     TEST_c_c (catanh, 0x1p-27L, 0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5496     TEST_c_c (catanh, 0x1p-27L, -0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5497     TEST_c_c (catanh, -0x1p-27L, 0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5498     TEST_c_c (catanh, -0x1p-27L, -0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5499     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-27L, 9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5500     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-27L, -9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5501     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-27L, 9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5502     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-27L, -9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5503     TEST_c_c (catanh, 0x1p-27L, 0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5504     TEST_c_c (catanh, 0x1p-27L, -0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5505     TEST_c_c (catanh, -0x1p-27L, 0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5506     TEST_c_c (catanh, -0x1p-27L, -0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5507     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-27L, 9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5508     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-27L, -9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5509     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-27L, 9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5510     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-27L, -9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5511 #endif
5512 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5513     TEST_c_c (catanh, 0x1p-33L, 0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5514     TEST_c_c (catanh, 0x1p-33L, -0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5515     TEST_c_c (catanh, -0x1p-33L, 0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5516     TEST_c_c (catanh, -0x1p-33L, -0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5517     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-33L, 1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5518     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-33L, -1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5519     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-33L, 1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5520     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-33L, -1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5521     TEST_c_c (catanh, 0x1p-33L, 0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5522     TEST_c_c (catanh, 0x1p-33L, -0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5523     TEST_c_c (catanh, -0x1p-33L, 0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5524     TEST_c_c (catanh, -0x1p-33L, -0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5525     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-33L, 1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5526     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-33L, -1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5527     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-33L, 1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5528     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-33L, -1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5529 #endif
5530 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5531     TEST_c_c (catanh, 0x1p-54L, 0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5532     TEST_c_c (catanh, 0x1p-54L, -0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5533     TEST_c_c (catanh, -0x1p-54L, 0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5534     TEST_c_c (catanh, -0x1p-54L, -0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5535     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-54L, 1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5536     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-54L, -1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5537     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-54L, 1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5538     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-54L, -1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5539     TEST_c_c (catanh, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5540     TEST_c_c (catanh, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5541     TEST_c_c (catanh, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5542     TEST_c_c (catanh, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5543     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5544     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5545     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5546     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5547 #endif
5548 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5549     TEST_c_c (catanh, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5550     TEST_c_c (catanh, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5551     TEST_c_c (catanh, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5552     TEST_c_c (catanh, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5553     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5554     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5555     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5556     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5557     TEST_c_c (catanh, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5558     TEST_c_c (catanh, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5559     TEST_c_c (catanh, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5560     TEST_c_c (catanh, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5561     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5562     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5563     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5564     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5565 #endif
5566     TEST_c_c (catanh, 1.0L, 0x1p-64L, 2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5567     TEST_c_c (catanh, 1.0L, -0x1p-64L, 2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5568     TEST_c_c (catanh, -1.0L, 0x1p-64L, -2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5569     TEST_c_c (catanh, -1.0L, -0x1p-64L, -2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5570     TEST_c_c (catanh, 0x1p-64L, 1.0L, 2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5571     TEST_c_c (catanh, -0x1p-64L, 1.0L, -2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5572     TEST_c_c (catanh, 0x1p-64L, -1.0L, 2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5573     TEST_c_c (catanh, -0x1p-64L, -1.0L, -2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5574     TEST_c_c (catanh, 1.0L, 0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5575     TEST_c_c (catanh, 1.0L, -0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5576     TEST_c_c (catanh, -1.0L, 0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5577     TEST_c_c (catanh, -1.0L, -0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5578     TEST_c_c (catanh, 0x1.3p-73L, 1.0L, 6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5579     TEST_c_c (catanh, -0x1.3p-73L, 1.0L, -6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5580     TEST_c_c (catanh, 0x1.3p-73L, -1.0L, 6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5581     TEST_c_c (catanh, -0x1.3p-73L, -1.0L, -6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5582     TEST_c_c (catanh, 1.0L, 0x1p-124L, 4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5583     TEST_c_c (catanh, 1.0L, -0x1p-124L, 4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5584     TEST_c_c (catanh, -1.0L, 0x1p-124L, -4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5585     TEST_c_c (catanh, -1.0L, -0x1p-124L, -4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5586     TEST_c_c (catanh, 0x1p-124L, 1.0L, 2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5587     TEST_c_c (catanh, -0x1p-124L, 1.0L, -2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5588     TEST_c_c (catanh, 0x1p-124L, -1.0L, 2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5589     TEST_c_c (catanh, -0x1p-124L, -1.0L, -2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5590     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-126L, 8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5591     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-126L, 8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5592     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-126L, -8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5593     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-126L, -8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5594     TEST_c_c (catanh, 0x1p-126L, 0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5595     TEST_c_c (catanh, -0x1p-126L, 0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5596     TEST_c_c (catanh, 0x1p-126L, -0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5597     TEST_c_c (catanh, -0x1p-126L, -0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5598     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-126L, 8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5599     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-126L, 8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5600     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-126L, -8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5601     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-126L, -8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5602     TEST_c_c (catanh, 0x1p-126L, 0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5603     TEST_c_c (catanh, -0x1p-126L, 0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5604     TEST_c_c (catanh, 0x1p-126L, -0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5605     TEST_c_c (catanh, -0x1p-126L, -0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5606 #ifndef TEST_FLOAT
5607     TEST_c_c (catanh, 1.0L, 0x1p-512L, 1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5608     TEST_c_c (catanh, 1.0L, -0x1p-512L, 1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5609     TEST_c_c (catanh, -1.0L, 0x1p-512L, -1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5610     TEST_c_c (catanh, -1.0L, -0x1p-512L, -1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5611     TEST_c_c (catanh, 0x1p-512L, 1.0L, 3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5612     TEST_c_c (catanh, -0x1p-512L, 1.0L, -3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5613     TEST_c_c (catanh, 0x1p-512L, -1.0L, 3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5614     TEST_c_c (catanh, -0x1p-512L, -1.0L, -3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5615     TEST_c_c (catanh, 1.0L, 0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5616     TEST_c_c (catanh, 1.0L, -0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5617     TEST_c_c (catanh, -1.0L, 0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5618     TEST_c_c (catanh, -1.0L, -0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5619     TEST_c_c (catanh, 0x1.3p-536L, 1.0L, 2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5620     TEST_c_c (catanh, -0x1.3p-536L, 1.0L, -2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5621     TEST_c_c (catanh, 0x1.3p-536L, -1.0L, 2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5622     TEST_c_c (catanh, -0x1.3p-536L, -1.0L, -2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5623     TEST_c_c (catanh, 1.0L, 0x1p-1020L, 3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5624     TEST_c_c (catanh, 1.0L, -0x1p-1020L, 3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5625     TEST_c_c (catanh, -1.0L, 0x1p-1020L, -3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5626     TEST_c_c (catanh, -1.0L, -0x1p-1020L, -3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5627     TEST_c_c (catanh, 0x1p-1020L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5628     TEST_c_c (catanh, -0x1p-1020L, 1.0L, -4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5629     TEST_c_c (catanh, 0x1p-1020L, -1.0L, 4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5630     TEST_c_c (catanh, -0x1p-1020L, -1.0L, -4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5631     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-1022L, 1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5632     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-1022L, 1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5633     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-1022L, -1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5634     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-1022L, -1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5635     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5636     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5637     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5638     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5639     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-1022L, 1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5640     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-1022L, 1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5641     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-1022L, -1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5642     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-1022L, -1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5643     TEST_c_c (catanh, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5644     TEST_c_c (catanh, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5645     TEST_c_c (catanh, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5646     TEST_c_c (catanh, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5647 #endif
5648 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5649     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-1022L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5650     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-1022L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5651     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-1022L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5652     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-1022L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5653     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5654     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5655     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5656     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5657     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5658     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5659     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5660     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5661     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5662     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5663     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5664     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5665 #endif
5666 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5667     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5668     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5669     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5670     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5671     TEST_c_c (catanh, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5672     TEST_c_c (catanh, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5673     TEST_c_c (catanh, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5674     TEST_c_c (catanh, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5675     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5676     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5677     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5678     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5679     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5680     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5681     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5682     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5683 #endif
5684 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5685     TEST_c_c (catanh, 1.0L, 0x1p-8192L, 2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5686     TEST_c_c (catanh, 1.0L, -0x1p-8192L, 2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5687     TEST_c_c (catanh, -1.0L, 0x1p-8192L, -2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5688     TEST_c_c (catanh, -1.0L, -0x1p-8192L, -2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5689     TEST_c_c (catanh, 0x1p-8192L, 1.0L, 4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5690     TEST_c_c (catanh, -0x1p-8192L, 1.0L, -4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5691     TEST_c_c (catanh, 0x1p-8192L, -1.0L, 4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5692     TEST_c_c (catanh, -0x1p-8192L, -1.0L, -4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5693     TEST_c_c (catanh, 1.0L, 0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5694     TEST_c_c (catanh, 1.0L, -0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5695     TEST_c_c (catanh, -1.0L, 0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5696     TEST_c_c (catanh, -1.0L, -0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5697     TEST_c_c (catanh, 0x1.3p-8221L, 1.0L, 1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5698     TEST_c_c (catanh, -0x1.3p-8221L, 1.0L, -1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5699     TEST_c_c (catanh, 0x1.3p-8221L, -1.0L, 1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5700     TEST_c_c (catanh, -0x1.3p-8221L, -1.0L, -1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5701     TEST_c_c (catanh, 1.0L, 0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5702     TEST_c_c (catanh, 1.0L, -0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5703     TEST_c_c (catanh, -1.0L, 0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5704     TEST_c_c (catanh, -1.0L, -0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5705     TEST_c_c (catanh, 0x1.3p-8246L, 1.0L, 3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5706     TEST_c_c (catanh, -0x1.3p-8246L, 1.0L, -3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5707     TEST_c_c (catanh, 0x1.3p-8246L, -1.0L, 3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5708     TEST_c_c (catanh, -0x1.3p-8246L, -1.0L, -3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5709     TEST_c_c (catanh, 1.0L, 0x1p-16380L, 5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5710     TEST_c_c (catanh, 1.0L, -0x1p-16380L, 5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5711     TEST_c_c (catanh, -1.0L, 0x1p-16380L, -5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5712     TEST_c_c (catanh, -1.0L, -0x1p-16380L, -5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5713     TEST_c_c (catanh, 0x1p-16380L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5714     TEST_c_c (catanh, -0x1p-16380L, 1.0L, -6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5715     TEST_c_c (catanh, 0x1p-16380L, -1.0L, 6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5716     TEST_c_c (catanh, -0x1p-16380L, -1.0L, -6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5717     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-16382L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5718     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-16382L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5719     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-16382L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5720     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-16382L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5721     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5722     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5723     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5724     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5725     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5726     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5727     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5728     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5729     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5730     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5731     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5732     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5733 # if LDBL_MANT_DIG >= 113
5734     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5735     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5736     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5737     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5738     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5739     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5740     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5741     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5742     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5743     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5744     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5745     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5746     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5747     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5748     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5749     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5750 # endif
5751 #endif
5752
5753     TEST_c_c (catanh, 0.75L, 1.25L, 0.261492138795671927078652057366532140L, 0.996825126463918666098902241310446708L),
5754     TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L),
5755     END_DATA (catanh)
5756   };
5757
5758 static void
5759 catanh_test (void)
5760 {
5761   errno = 0;
5762   FUNC(catanh) (BUILD_COMPLEX (0.7L, 1.2L));
5763   if (errno == ENOSYS)
5764     /* Function not implemented.  */
5765     return;
5766
5767   START (catanh);
5768   RUN_TEST_LOOP_c_c (catanh, catanh_test_data, );
5769   END (catanh, complex);
5770 }
5771
5772 static const struct test_f_f_data cbrt_test_data[] =
5773   {
5774     START_DATA (cbrt),
5775     TEST_f_f (cbrt, 0.0, 0.0),
5776     TEST_f_f (cbrt, minus_zero, minus_zero),
5777
5778     TEST_f_f (cbrt, plus_infty, plus_infty),
5779     TEST_f_f (cbrt, minus_infty, minus_infty),
5780     TEST_f_f (cbrt, qnan_value, qnan_value),
5781
5782     TEST_f_f (cbrt, -0.001L, -0.1L),
5783     TEST_f_f (cbrt, 8, 2),
5784     TEST_f_f (cbrt, -27.0, -3.0),
5785     TEST_f_f (cbrt, 0.9921875L, 0.997389022060725270579075195353955217L),
5786     TEST_f_f (cbrt, 0.75L, 0.908560296416069829445605878163630251L),
5787     END_DATA (cbrt)
5788   };
5789
5790 static void
5791 cbrt_test (void)
5792 {
5793   errno = 0;
5794   FUNC(cbrt) (8);
5795   if (errno == ENOSYS)
5796     /* Function not implemented.  */
5797     return;
5798
5799   START (cbrt);
5800   RUN_TEST_LOOP_f_f (cbrt, cbrt_test_data, );
5801   END (cbrt);
5802 }
5803
5804
5805 static const struct test_c_c_data ccos_test_data[] =
5806   {
5807     START_DATA (ccos),
5808     TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero),
5809     TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0),
5810     TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0),
5811     TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero),
5812
5813     TEST_c_c (ccos, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5814     TEST_c_c (ccos, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5815     TEST_c_c (ccos, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5816     TEST_c_c (ccos, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5817
5818     TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero),
5819     TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0),
5820     TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0),
5821     TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero),
5822
5823     TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5824     TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5825     TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5826     TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5827
5828     TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty),
5829     TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty),
5830     TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty),
5831     TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty),
5832
5833     TEST_c_c (ccos, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5834     TEST_c_c (ccos, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5835     TEST_c_c (ccos, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5836     TEST_c_c (ccos, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5837
5838     TEST_c_c (ccos, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5839     TEST_c_c (ccos, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5840
5841     TEST_c_c (ccos, qnan_value, plus_infty, plus_infty, qnan_value),
5842     TEST_c_c (ccos, qnan_value, minus_infty, plus_infty, qnan_value),
5843
5844     TEST_c_c (ccos, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5845     TEST_c_c (ccos, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5846
5847     TEST_c_c (ccos, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5848     TEST_c_c (ccos, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5849
5850     TEST_c_c (ccos, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5851     TEST_c_c (ccos, -10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5852
5853     TEST_c_c (ccos, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5854     TEST_c_c (ccos, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5855
5856     TEST_c_c (ccos, qnan_value, qnan_value, qnan_value, qnan_value),
5857
5858     TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L),
5859     TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L),
5860
5861     TEST_c_c (ccos, 0.75, 89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5862     TEST_c_c (ccos, 0.75, -89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5863     TEST_c_c (ccos, -0.75, 89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5864     TEST_c_c (ccos, -0.75, -89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5865
5866 #ifndef TEST_FLOAT
5867     TEST_c_c (ccos, 0.75, 710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5868     TEST_c_c (ccos, 0.75, -710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5869     TEST_c_c (ccos, -0.75, 710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5870     TEST_c_c (ccos, -0.75, -710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5871 #endif
5872
5873 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5874     TEST_c_c (ccos, 0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5875     TEST_c_c (ccos, 0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5876     TEST_c_c (ccos, -0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5877     TEST_c_c (ccos, -0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5878 #endif
5879
5880 #ifdef TEST_FLOAT
5881     TEST_c_c (ccos, 0x1p-149, 180, plus_infty, -1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5882 #endif
5883
5884 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5885     TEST_c_c (ccos, 0x1p-1074, 1440, plus_infty, -5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5886 #endif
5887
5888 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5889     TEST_c_c (ccos, 0x1p-16434L, 22730, plus_infty, -1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5890 #endif
5891
5892     TEST_c_c (ccos, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5893     TEST_c_c (ccos, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5894     END_DATA (ccos)
5895   };
5896
5897 static void
5898 ccos_test (void)
5899 {
5900   errno = 0;
5901   FUNC(ccos) (BUILD_COMPLEX (0, 0));
5902   if (errno == ENOSYS)
5903     /* Function not implemented.  */
5904     return;
5905
5906   START (ccos);
5907   RUN_TEST_LOOP_c_c (ccos, ccos_test_data, );
5908   END (ccos, complex);
5909 }
5910
5911
5912 static const struct test_c_c_data ccosh_test_data[] =
5913   {
5914     START_DATA (ccosh),
5915     TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0),
5916     TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero),
5917     TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero),
5918     TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0),
5919
5920     TEST_c_c (ccosh, 0.0, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5921     TEST_c_c (ccosh, minus_zero, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5922     TEST_c_c (ccosh, 0.0, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5923     TEST_c_c (ccosh, minus_zero, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5924
5925     TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0),
5926     TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero),
5927     TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero),
5928     TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0),
5929
5930     TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5931     TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5932     TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5933     TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5934
5935     TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty),
5936     TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty),
5937     TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty),
5938     TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty),
5939
5940     TEST_c_c (ccosh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5941     TEST_c_c (ccosh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5942     TEST_c_c (ccosh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5943     TEST_c_c (ccosh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5944
5945     TEST_c_c (ccosh, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5946     TEST_c_c (ccosh, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5947
5948     TEST_c_c (ccosh, plus_infty, qnan_value, plus_infty, qnan_value),
5949     TEST_c_c (ccosh, minus_infty, qnan_value, plus_infty, qnan_value),
5950
5951     TEST_c_c (ccosh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5952     TEST_c_c (ccosh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5953
5954     TEST_c_c (ccosh, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5955     TEST_c_c (ccosh, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5956
5957     TEST_c_c (ccosh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5958     TEST_c_c (ccosh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5959
5960     TEST_c_c (ccosh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5961     TEST_c_c (ccosh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5962
5963     TEST_c_c (ccosh, qnan_value, qnan_value, qnan_value, qnan_value),
5964
5965     TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L),
5966
5967     TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L),
5968
5969     TEST_c_c (ccosh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5970     TEST_c_c (ccosh, -89.5, 0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5971     TEST_c_c (ccosh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5972     TEST_c_c (ccosh, -89.5, -0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5973
5974 #ifndef TEST_FLOAT
5975     TEST_c_c (ccosh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5976     TEST_c_c (ccosh, -710.5, 0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5977     TEST_c_c (ccosh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5978     TEST_c_c (ccosh, -710.5, -0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5979 #endif
5980
5981 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5982     TEST_c_c (ccosh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5983     TEST_c_c (ccosh, -11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5984     TEST_c_c (ccosh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5985     TEST_c_c (ccosh, -11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5986 #endif
5987
5988 #ifdef TEST_FLOAT
5989     TEST_c_c (ccosh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5990 #endif
5991
5992 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5993     TEST_c_c (ccosh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5994 #endif
5995
5996 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5997     TEST_c_c (ccosh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5998 #endif
5999
6000     TEST_c_c (ccosh, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6001     TEST_c_c (ccosh, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6002     END_DATA (ccosh)
6003   };
6004
6005 static void
6006 ccosh_test (void)
6007 {
6008   errno = 0;
6009   FUNC(ccosh) (BUILD_COMPLEX (0.7L, 1.2L));
6010   if (errno == ENOSYS)
6011     /* Function not implemented.  */
6012     return;
6013
6014   START (ccosh);
6015   RUN_TEST_LOOP_c_c (ccosh, ccosh_test_data, );
6016   END (ccosh, complex);
6017 }
6018
6019
6020 static const struct test_f_f_data ceil_test_data[] =
6021   {
6022     START_DATA (ceil),
6023     TEST_f_f (ceil, 0.0, 0.0),
6024     TEST_f_f (ceil, minus_zero, minus_zero),
6025     TEST_f_f (ceil, plus_infty, plus_infty),
6026     TEST_f_f (ceil, minus_infty, minus_infty),
6027     TEST_f_f (ceil, qnan_value, qnan_value),
6028
6029     TEST_f_f (ceil, M_PIl, 4.0),
6030     TEST_f_f (ceil, -M_PIl, -3.0),
6031     TEST_f_f (ceil, 0.1, 1.0),
6032     TEST_f_f (ceil, 0.25, 1.0),
6033     TEST_f_f (ceil, 0.625, 1.0),
6034     TEST_f_f (ceil, -0.1, minus_zero),
6035     TEST_f_f (ceil, -0.25, minus_zero),
6036     TEST_f_f (ceil, -0.625, minus_zero),
6037
6038 #ifdef TEST_LDOUBLE
6039     /* The result can only be represented in long double.  */
6040     TEST_f_f (ceil, 4503599627370495.5L, 4503599627370496.0L),
6041     TEST_f_f (ceil, 4503599627370496.25L, 4503599627370497.0L),
6042     TEST_f_f (ceil, 4503599627370496.5L, 4503599627370497.0L),
6043     TEST_f_f (ceil, 4503599627370496.75L, 4503599627370497.0L),
6044     TEST_f_f (ceil, 4503599627370497.5L, 4503599627370498.0L),
6045
6046     TEST_f_f (ceil, -4503599627370495.5L, -4503599627370495.0L),
6047     TEST_f_f (ceil, -4503599627370496.25L, -4503599627370496.0L),
6048     TEST_f_f (ceil, -4503599627370496.5L, -4503599627370496.0L),
6049     TEST_f_f (ceil, -4503599627370496.75L, -4503599627370496.0L),
6050     TEST_f_f (ceil, -4503599627370497.5L, -4503599627370497.0L),
6051
6052 # if LDBL_MANT_DIG > 100
6053     TEST_f_f (ceil, 4503599627370494.5000000000001L, 4503599627370495.0L),
6054     TEST_f_f (ceil, 4503599627370495.5000000000001L, 4503599627370496.0L),
6055     TEST_f_f (ceil, 4503599627370496.5000000000001L, 4503599627370497.0L),
6056     TEST_f_f (ceil, -4503599627370494.5000000000001L, -4503599627370494.0L),
6057     TEST_f_f (ceil, -4503599627370495.5000000000001L, -4503599627370495.0L),
6058     TEST_f_f (ceil, -4503599627370496.5000000000001L, -4503599627370496.0L),
6059 # endif
6060
6061     TEST_f_f (ceil, 9007199254740991.5L, 9007199254740992.0L),
6062     TEST_f_f (ceil, 9007199254740992.25L, 9007199254740993.0L),
6063     TEST_f_f (ceil, 9007199254740992.5L, 9007199254740993.0L),
6064     TEST_f_f (ceil, 9007199254740992.75L, 9007199254740993.0L),
6065     TEST_f_f (ceil, 9007199254740993.5L, 9007199254740994.0L),
6066
6067     TEST_f_f (ceil, -9007199254740991.5L, -9007199254740991.0L),
6068     TEST_f_f (ceil, -9007199254740992.25L, -9007199254740992.0L),
6069     TEST_f_f (ceil, -9007199254740992.5L, -9007199254740992.0L),
6070     TEST_f_f (ceil, -9007199254740992.75L, -9007199254740992.0L),
6071     TEST_f_f (ceil, -9007199254740993.5L, -9007199254740993.0L),
6072
6073 # if LDBL_MANT_DIG > 100
6074     TEST_f_f (ceil, 9007199254740991.0000000000001L, 9007199254740992.0L),
6075     TEST_f_f (ceil, 9007199254740992.0000000000001L, 9007199254740993.0L),
6076     TEST_f_f (ceil, 9007199254740993.0000000000001L, 9007199254740994.0L),
6077     TEST_f_f (ceil, 9007199254740991.5000000000001L, 9007199254740992.0L),
6078     TEST_f_f (ceil, 9007199254740992.5000000000001L, 9007199254740993.0L),
6079     TEST_f_f (ceil, 9007199254740993.5000000000001L, 9007199254740994.0L),
6080
6081     TEST_f_f (ceil, -9007199254740991.0000000000001L, -9007199254740991.0L),
6082     TEST_f_f (ceil, -9007199254740992.0000000000001L, -9007199254740992.0L),
6083     TEST_f_f (ceil, -9007199254740993.0000000000001L, -9007199254740993.0L),
6084     TEST_f_f (ceil, -9007199254740991.5000000000001L, -9007199254740991.0L),
6085     TEST_f_f (ceil, -9007199254740992.5000000000001L, -9007199254740992.0L),
6086     TEST_f_f (ceil, -9007199254740993.5000000000001L, -9007199254740993.0L),
6087 # endif
6088
6089     TEST_f_f (ceil, 72057594037927935.5L, 72057594037927936.0L),
6090     TEST_f_f (ceil, 72057594037927936.25L, 72057594037927937.0L),
6091     TEST_f_f (ceil, 72057594037927936.5L, 72057594037927937.0L),
6092     TEST_f_f (ceil, 72057594037927936.75L, 72057594037927937.0L),
6093     TEST_f_f (ceil, 72057594037927937.5L, 72057594037927938.0L),
6094
6095     TEST_f_f (ceil, -72057594037927935.5L, -72057594037927935.0L),
6096     TEST_f_f (ceil, -72057594037927936.25L, -72057594037927936.0L),
6097     TEST_f_f (ceil, -72057594037927936.5L, -72057594037927936.0L),
6098     TEST_f_f (ceil, -72057594037927936.75L, -72057594037927936.0L),
6099     TEST_f_f (ceil, -72057594037927937.5L, -72057594037927937.0L),
6100
6101     TEST_f_f (ceil, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
6102     TEST_f_f (ceil, 10141204801825835211973625643008.25L, 10141204801825835211973625643009.0L),
6103     TEST_f_f (ceil, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
6104     TEST_f_f (ceil, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
6105     TEST_f_f (ceil, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
6106 #endif
6107     END_DATA (ceil)
6108   };
6109
6110 static void
6111 ceil_test (void)
6112 {
6113   START (ceil);
6114   RUN_TEST_LOOP_f_f (ceil, ceil_test_data, );
6115   END (ceil);
6116 }
6117
6118
6119 static const struct test_c_c_data cexp_test_data[] =
6120   {
6121     START_DATA (cexp),
6122     TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0),
6123     TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0),
6124     TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero),
6125     TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero),
6126
6127     TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0),
6128     TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero),
6129
6130     TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0),
6131     TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero),
6132
6133     TEST_c_c (cexp, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6134     TEST_c_c (cexp, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6135
6136     TEST_c_c (cexp, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6137     TEST_c_c (cexp, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6138
6139     TEST_c_c (cexp, 100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6140     TEST_c_c (cexp, -100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6141
6142     TEST_c_c (cexp, 100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6143     TEST_c_c (cexp, -100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6144
6145     TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0),
6146     TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero),
6147     TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty),
6148     TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty),
6149
6150     TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6151     TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6152
6153     TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN),
6154     TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN),
6155
6156     TEST_c_c (cexp, minus_infty, qnan_value, 0, 0, IGNORE_ZERO_INF_SIGN),
6157
6158     TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value),
6159
6160     TEST_c_c (cexp, qnan_value, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6161     TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6162
6163     TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6164     TEST_c_c (cexp, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6165     TEST_c_c (cexp, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6166     TEST_c_c (cexp, qnan_value, qnan_value, qnan_value, qnan_value),
6167
6168     TEST_c_c (cexp, 0.75L, 1.25L, 0.667537446429131586942201977015932112L, 2.00900045494094876258347228145863909L),
6169     TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L),
6170
6171     TEST_c_c (cexp, 0, 0x1p65, 0.99888622066058013610642172179340364209972L, -0.047183876212354673805106149805700013943218L),
6172     TEST_c_c (cexp, 0, -0x1p65, 0.99888622066058013610642172179340364209972L, 0.047183876212354673805106149805700013943218L),
6173     TEST_c_c (cexp, 50, 0x1p127, 4.053997150228616856622417636046265337193e21L, 3.232070315463388524466674772633810238819e21L),
6174
6175 #ifndef TEST_FLOAT
6176     TEST_c_c (cexp, 0, 1e22, 0.5232147853951389454975944733847094921409L, -0.8522008497671888017727058937530293682618L),
6177     TEST_c_c (cexp, 0, 0x1p1023, -0.826369834614147994500785680811743734805L, 0.5631277798508840134529434079444683477104L),
6178     TEST_c_c (cexp, 500, 0x1p1023, -1.159886268932754433233243794561351783426e217L, 7.904017694554466595359379965081774849708e216L),
6179 #endif
6180
6181 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6182     TEST_c_c (cexp, 0, 0x1p16383L, 0.9210843909921906206874509522505756251609L, 0.3893629985894208126948115852610595405563L),
6183     TEST_c_c (cexp, -10000, 0x1p16383L, 1.045876464564882298442774542991176546722e-4343L, 4.421154026488516836023811173959413420548e-4344L),
6184 #endif
6185
6186     TEST_c_c (cexp, 88.75, 0.75, 2.558360358486542817001900410314204322891e38L, 2.383359453227311447654736314679677655100e38L),
6187     TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L, UNDERFLOW_EXCEPTION_FLOAT),
6188
6189 #ifndef TEST_FLOAT
6190     TEST_c_c (cexp, 709.8125, 0.75, 1.355121963080879535248452862759108365762e308L, 1.262426823598609432507811340856186873507e308L),
6191     TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L, UNDERFLOW_EXCEPTION_DOUBLE),
6192 #endif
6193
6194 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6195     TEST_c_c (cexp, 11356.5625, 0.75, 9.052188470850960144814815984311663764287e4931L, 8.432986734191301036267148978260970230200e4931L),
6196     TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L, UNDERFLOW_EXCEPTION),
6197 #endif
6198
6199 #ifdef TEST_FLOAT
6200     TEST_c_c (cexp, 180, 0x1p-149, plus_infty, 2.087071793345235105931967606907855310664e33L, OVERFLOW_EXCEPTION),
6201 #endif
6202
6203 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6204     TEST_c_c (cexp, 1440, 0x1p-1074, plus_infty, 1.196295853897226111293303155636183216483e302L, OVERFLOW_EXCEPTION),
6205 #endif
6206
6207 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6208     TEST_c_c (cexp, 22730, 0x1p-16434L, plus_infty, 2.435706297811211974162115164702304105374e4924L, OVERFLOW_EXCEPTION),
6209 #endif
6210
6211     TEST_c_c (cexp, 1e6, 0, plus_infty, 0, OVERFLOW_EXCEPTION),
6212     TEST_c_c (cexp, 1e6, min_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
6213     TEST_c_c (cexp, 1e6, -min_value, plus_infty, minus_infty, OVERFLOW_EXCEPTION),
6214
6215     TEST_c_c (cexp, min_value, min_subnorm_value, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6216     TEST_c_c (cexp, min_value, -min_subnorm_value, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
6217     END_DATA (cexp)
6218   };
6219
6220 static void
6221 cexp_test (void)
6222 {
6223   errno = 0;
6224   FUNC(cexp) (BUILD_COMPLEX (0, 0));
6225   if (errno == ENOSYS)
6226     /* Function not implemented.  */
6227     return;
6228
6229   START (cexp);
6230   RUN_TEST_LOOP_c_c (cexp, cexp_test_data, );
6231   END (cexp, complex);
6232 }
6233
6234
6235 static const struct test_c_f_data cimag_test_data[] =
6236   {
6237     START_DATA (cimag);
6238     TEST_c_f (cimag, 1.0, 0.0, 0.0),
6239     TEST_c_f (cimag, 1.0, minus_zero, minus_zero),
6240     TEST_c_f (cimag, 1.0, qnan_value, qnan_value),
6241     TEST_c_f (cimag, qnan_value, qnan_value, qnan_value),
6242     TEST_c_f (cimag, 1.0, plus_infty, plus_infty),
6243     TEST_c_f (cimag, 1.0, minus_infty, minus_infty),
6244     TEST_c_f (cimag, 2.0, 3.0, 3.0),
6245     END_DATA (cimag);
6246   };
6247
6248 static void
6249 cimag_test (void)
6250 {
6251   START (cimag);
6252   RUN_TEST_LOOP_c_f (cimag, cimag_test_data, );
6253   END (cimag);
6254 }
6255
6256 static const struct test_c_c_data clog_test_data[] =
6257   {
6258     START_DATA (clog),
6259     TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6260     TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6261
6262     TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6263     TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6264
6265     TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l),
6266     TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l),
6267
6268     TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l),
6269     TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l),
6270
6271     TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l),
6272     TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l),
6273     TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l),
6274     TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l),
6275     TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l),
6276     TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l),
6277     TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l),
6278     TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l),
6279
6280     TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl),
6281     TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl),
6282     TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl),
6283     TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl),
6284
6285     TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0),
6286     TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0),
6287     TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero),
6288     TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero),
6289
6290     TEST_c_c (clog, plus_infty, qnan_value, plus_infty, qnan_value),
6291     TEST_c_c (clog, minus_infty, qnan_value, plus_infty, qnan_value),
6292
6293     TEST_c_c (clog, qnan_value, plus_infty, plus_infty, qnan_value),
6294     TEST_c_c (clog, qnan_value, minus_infty, plus_infty, qnan_value),
6295
6296     TEST_c_c (clog, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6297     TEST_c_c (clog, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6298     TEST_c_c (clog, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6299     TEST_c_c (clog, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6300
6301     TEST_c_c (clog, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6302     TEST_c_c (clog, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6303     TEST_c_c (clog, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6304     TEST_c_c (clog, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6305
6306     TEST_c_c (clog, qnan_value, qnan_value, qnan_value, qnan_value),
6307
6308     TEST_c_c (clog, 0.75L, 1.25L, 0.376885901188190075998919126749298416L, 1.03037682652431246378774332703115153L),
6309     TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L),
6310
6311     TEST_c_c (clog, 0x1.fffffep+127L, 0x1.fffffep+127L, 89.06941264234832570836679262104313101776L, M_PI_4l),
6312     TEST_c_c (clog, 0x1.fffffep+127L, 1.0L, 88.72283905206835305365817656031404273372L, 2.938736052218037251011746307725933020145e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6313     TEST_c_c (clog, 0x1p-149L, 0x1p-149L, -102.9323563131518784484589700365392203592L, M_PI_4l),
6314     TEST_c_c (clog, 0x1p-147L, 0x1p-147L, -101.5460619520319878296245057936228672231L, M_PI_4l),
6315
6316 #ifndef TEST_FLOAT
6317     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 710.1292864836639693869320059713862337880L, M_PI_4l),
6318     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 709.8942846690411016323109979483151967689L, 0.4636476090008061606231772164674799632783L),
6319     TEST_c_c (clog, 0x1p-1074L, 0x1p-1074L, -744.0934983311012896593986823853525458290L, M_PI_4l),
6320     TEST_c_c (clog, 0x1p-1073L, 0x1p-1073L, -743.4003511505413443499814502638943692610L, M_PI_4l),
6321 #endif
6322
6323 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6324     TEST_c_c (clog, 0x1.fp+16383L, 0x1.fp+16383L, 11356.83823118610934184548269774874545400L, M_PI_4l),
6325     TEST_c_c (clog, 0x1.fp+16383L, 0x1p+16383L, 11356.60974243783798653123798337822335902L, 0.4764674194737066993385333770295162295856L),
6326     TEST_c_c (clog, 0x1p-16440L, 0x1p-16441L, -11395.22807662984378194141292922726786191L, 0.4636476090008061162142562314612144020285L),
6327 #endif
6328
6329     TEST_c_c (clog, 0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6330     TEST_c_c (clog, -0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6331     TEST_c_c (clog, 0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6332     TEST_c_c (clog, -0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6333     TEST_c_c (clog, -0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, M_PIl),
6334     TEST_c_c (clog, -0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, -M_PIl),
6335 #ifdef TEST_FLOAT
6336     TEST_c_c (clog, 0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, plus_zero, UNDERFLOW_EXCEPTION),
6337     TEST_c_c (clog, 0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, minus_zero, UNDERFLOW_EXCEPTION),
6338 #endif
6339
6340 #ifndef TEST_FLOAT
6341     TEST_c_c (clog, 0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6342     TEST_c_c (clog, -0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6343     TEST_c_c (clog, 0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6344     TEST_c_c (clog, -0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6345     TEST_c_c (clog, -0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, M_PIl),
6346     TEST_c_c (clog, -0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, -M_PIl),
6347 #endif
6348 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6349     TEST_c_c (clog, 0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, plus_zero, UNDERFLOW_EXCEPTION),
6350     TEST_c_c (clog, 0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, minus_zero, UNDERFLOW_EXCEPTION),
6351 #endif
6352
6353 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6354     TEST_c_c (clog, 0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6355     TEST_c_c (clog, -0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6356     TEST_c_c (clog, 0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6357     TEST_c_c (clog, -0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6358     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, M_PIl),
6359     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, -M_PIl),
6360     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6361     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6362 # if LDBL_MANT_DIG >= 113
6363     TEST_c_c (clog, 0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6364     TEST_c_c (clog, -0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6365     TEST_c_c (clog, 0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6366     TEST_c_c (clog, -0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6367     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, M_PIl),
6368     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, -M_PIl),
6369     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6370     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6371 # endif
6372 #endif
6373
6374     TEST_c_c (clog, 1.0L, 0x1.234566p-10L, 6.172834701221959432440126967147726538097e-7L, 1.111110564353742042376451655136933182201e-3L),
6375     TEST_c_c (clog, -1.0L, 0x1.234566p-20L, 5.886877547844618300918562490463748605537e-13L, 3.141591568520436206990380699322226378452L),
6376     TEST_c_c (clog, 0x1.234566p-30L, 1.0L, 5.614163921211322622623353961365728040115e-19L, 1.570796325735258575254858696548386439740L),
6377     TEST_c_c (clog, -0x1.234566p-40L, -1.0L, 5.354083939753840089583620652120903838944e-25L, -1.570796326795931422008642456283782656359L),
6378     TEST_c_c (clog, 0x1.234566p-50L, 1.0L, 5.106052341226425256332038420428899201070e-31L, 1.570796326794895608681734464330528755366L),
6379     TEST_c_c (clog, 0x1.234566p-60L, 1.0L, 4.869510976053643471080816669875627875933e-37L, 1.570796326794896618244456860363082279319L),
6380     TEST_c_c (clog, 0x1p-62L, 1.0L, 2.350988701644575015937473074444491355582e-38L, 1.570796326794896619014481257142650555297L),
6381     TEST_c_c (clog, 0x1p-63L, 1.0L, 5.877471754111437539843682686111228389059e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
6382     TEST_c_c (clog, 0x1p-64L, 1.0L, 1.469367938527859384960920671527807097271e-39L, 1.570796326794896619177111583015476220398L, UNDERFLOW_EXCEPTION_FLOAT),
6383 #ifndef TEST_FLOAT
6384     TEST_c_c (clog, 0x1p-510L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6385     TEST_c_c (clog, 0x1p-511L, 1.0L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6386     TEST_c_c (clog, 0x1p-512L, 1.0L, 2.781342323134001728862790896665505080274e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6387 #endif
6388 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6389     TEST_c_c (clog, 0x1p-8190L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 1.570796326794896619231321691639751442099L),
6390     TEST_c_c (clog, 0x1p-8191L, 1.0L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6391     TEST_c_c (clog, 0x1p-8192L, 1.0L, 4.202628928890116882828347271652190753248e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6392 #endif
6393
6394     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-10L, 8.298731898331237038231468223024422855654e-5L, 1.110938609507128729312743251313024793990e-3L),
6395     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-100L, 8.237022655933121125560939513260027133767e-5L, 8.974094312218060110948251664314290484113e-31L),
6396 #ifndef TEST_FLOAT
6397     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-30L, 2.649094282537168795982991778475646793277e-10L, 3.141592652530155111500161671113150737892L),
6398     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 2.649094276923003995420209214900915462737e-10L, 3.141592653589793238462643383279502884197L),
6399 #endif
6400 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6401     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 9.868649107778739757272772275265050767867e-19L, 9.868649106423871142816660980898339912137e-19L),
6402     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 9.868649107778739752403260515979017248596e-19L, 1.061846605795612822522063052130030717368e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6403 #endif
6404
6405     TEST_c_c (clog, 0x0.ffffffp0L, 0x0.ffffffp-100L, -5.960464655174753498633255797994360530379e-8L, 7.888609052210118054117285652827862296732e-31L),
6406 #ifndef TEST_FLOAT
6407     TEST_c_c (clog, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -1.110223024625156602053389888482372171810e-16L, 9.332636185032188789900895447238171696171e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6408 #endif
6409 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6410     TEST_c_c (clog, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -5.421010862427522170184200798202494495630e-20L, 3.548665303440282824232502561095699343814e-4516L),
6411 #endif
6412
6413     TEST_c_c (clog, 0x1a6p-10L, 0x3a5p-10L, -1.4305135209763571252847059962654228661815e-06L, 1.1460277178115757370775644871674016684074L),
6414     TEST_c_c (clog, 0xf2p-10L, 0x3e3p-10L, 6.1988446308070710970664736815277450078106e-06L, 1.3322126499153926210226335249558203898460L),
6415     TEST_c_c (clog, 0x4d4ep-15L, 0x6605p-15L, -1.6298145321400412054744424587143483169412e-08L, 0.9223574537155056772124552172295398141249L),
6416     TEST_c_c (clog, 0x2818p-15L, 0x798fp-15L, 1.5366822245016167178749091974664853785194e-08L, 1.2522014929038946066987318471922169174157L),
6417     TEST_c_c (clog, 0x9b57bp-20L, 0xcb7b4p-20L, -3.9563019528687610863490232935890272740908e-11L, 0.9187593477446338910857133065497364950682L),
6418     TEST_c_c (clog, 0x2731p-20L, 0xfffd0p-20L, 4.4110493034041283943115971658295280288115e-11L, 1.5612279663766352262688735061954290528838L),
6419     TEST_c_c (clog, 0x2ede88p-23L, 0x771c3fp-23L, -4.4764192352906350039050902870893173560494e-13L, 1.1959106857549200806818600493552847793381L),
6420     TEST_c_c (clog, 0x11682p-23L, 0x7ffed1p-23L, 1.1723955140027907954461000991619077811832e-12L, 1.5622968405332756349813737986164832897108L),
6421     TEST_c_c (clog, 0xa1f2c1p-24L, 0xc643aep-24L, -1.0480505352462576151523512837107080269981e-13L, 0.8858771987699967480545613322309315260313L),
6422     TEST_c_c (clog, 0x659feap-24L, 0xeaf6f9p-24L, 3.7303493627403868207597214252239749960738e-14L, 1.1625816408046866464773042283673653469061L),
6423 #ifndef TEST_FLOAT
6424     TEST_c_c (clog, 0x4447d7175p-35L, 0x6c445e00ap-35L, -1.4823076576950255933915367361099865652625e-20L, 1.0081311552703893116404606212158840190615L),
6425     TEST_c_c (clog, 0x2dd46725bp-35L, 0x7783a1284p-35L, 4.4469229730850767799109418892826021157328e-20L, 1.2046235979300843056806465045930070146351L),
6426     TEST_c_c (clog, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -3.0292258760486853327810377824479932031744e-26L, 0.7998237934177411746093524982030330293980L),
6427     TEST_c_c (clog, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 5.3718272201930019901317065495843842735179e-26L, 1.0503831592447830576186444373011142397404L),
6428     TEST_c_c (clog, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -6.2122796286154679676173624516405339768606e-30L, 1.4904138780720095276446375492434049214172L),
6429     TEST_c_c (clog, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 3.2047474274603604594851472963586149973093e-29L, 1.4422922682185099608731642353544207976604L),
6430     TEST_c_c (clog, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -9.7375017988218644730510244778042114638107e-30L, 0.9790637929494922564724108399524154766631L),
6431     TEST_c_c (clog, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 8.3076914081087805757422664530653247447136e-30L, 1.2072712126771536614482822173033535043206L),
6432     TEST_c_c (clog, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -2.5083311595699359750201056724289010648701e-30L, 1.3710185432462268491534742969536240564640L),
6433     TEST_c_c (clog, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 1.0168910106364605304135563536838075568606e-30L, 0.8208373755522359859870890246475340086663L),
6434     TEST_c_c (clog, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 5.0844550531823026520677817684239496041087e-32L, 1.2627468605458094918919206628466016525397L),
6435     TEST_c_c (clog, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -5.2000108498455368032511404449795741611813e-32L, 1.5288921536982513453421343495466824420259L),
6436 #endif
6437 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6438     TEST_c_c (clog, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -1.1931267660846218205882675852805793644095e-36L, 1.2402109774337032400594953899784058127412L),
6439     TEST_c_c (clog, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 6.4064442119814669184296141278612389400075e-37L, 0.9193591364645830864185131402313014890145L),
6440     TEST_c_c (clog, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -2.3362950222592964220878638677292132852104e-37L, 1.1856121127236268105413184264288408265852L),
6441     TEST_c_c (clog, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 2.4244570985709679851855191080208817099132e-37L, 1.1393074519572050614551047548718495655972L),
6442     TEST_c_c (clog, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -9.9182335850630508484862145328126979066934e-39L, 1.3146479888794807046338799047003947008804L),
6443 #endif
6444 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6445     TEST_c_c (clog, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -1.0509738482436128031927971874674370984602e-45L, 1.0509191467640012308402149909370784281448L),
6446     TEST_c_c (clog, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 1.3487497719126364307640897239165442763573e-43L, 1.1750493008528425228929764149024375035382L),
6447     TEST_c_c (clog, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -4.7775669192897997174762089350332738583822e-50L, 0.8393953487996880419413728440067635213372L),
6448     TEST_c_c (clog, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 2.8398125044729578740243199963484494962411e-50L, 0.9149964976334130461795060758257083099706L),
6449     TEST_c_c (clog, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -3.5048022044913950094635368750889659723004e-57L, 1.3345633256521815205858155673950177421079L),
6450     TEST_c_c (clog, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 4.1101771307217268747345114262406964584250e-56L, 1.4596065864518742494094402406719567059585L),
6451     TEST_c_c (clog, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -1.4281333889622737316199756373421183559948e-62L, 1.3673546561165378090903506783353927980633L),
6452     TEST_c_c (clog, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 1.0027319539522347477331743836657426754857e-62L, 0.8193464073721167323313606647411269414759L),
6453     TEST_c_c (clog, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -1.7471844652198029695350765775994001163767e-63L, 1.1789110097072986038243729592318526094314L),
6454     TEST_c_c (clog, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 4.3299788920664682288477984749202524623248e-63L, 1.4746938237585656250866370987773473745867L),
6455 #endif
6456 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6457     TEST_c_c (clog, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -1.1683999374665377365054966073875064467108e-66L, 1.3257197596350832748781065387304444940172L),
6458     TEST_c_c (clog, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 1.5077923002544367932999503838191154621839e-65L, 1.2897445708311412721399861948957141824914L),
6459     TEST_c_c (clog, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -7.1865869169568789348552370692485515571497e-67L, 0.8730167479365994646287897223471819363668L),
6460     TEST_c_c (clog, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 6.6255694866654064502633121109394710807528e-66L, 1.0526409614996288387567810726095850312049L),
6461     TEST_c_c (clog, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 4.6017338806965821566734340588575402712716e-67L, 1.3547418904611758959096647942223384691728L),
6462     TEST_c_c (clog, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 2.5993421227864195179698176012564317527271e-67L, 1.4132318089683022770487383611430906982461L),
6463 #endif
6464     END_DATA (clog)
6465   };
6466
6467 static void
6468 clog_test (void)
6469 {
6470   errno = 0;
6471   FUNC(clog) (BUILD_COMPLEX (-2, -3));
6472   if (errno == ENOSYS)
6473     /* Function not implemented.  */
6474     return;
6475
6476   START (clog);
6477   RUN_TEST_LOOP_c_c (clog, clog_test_data, );
6478   END (clog, complex);
6479 }
6480
6481
6482 static const struct test_c_c_data clog10_test_data[] =
6483   {
6484     START_DATA (clog10),
6485     TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6486     TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6487
6488     TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6489     TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6490
6491     TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El),
6492
6493     TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El),
6494     TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El),
6495
6496     TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El),
6497     TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El),
6498     TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El),
6499     TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El),
6500     TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El),
6501     TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El),
6502     TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El),
6503     TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El),
6504
6505     TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El),
6506     TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El),
6507     TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El),
6508     TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El),
6509
6510     TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0),
6511     TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0),
6512     TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero),
6513     TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero),
6514
6515     TEST_c_c (clog10, plus_infty, qnan_value, plus_infty, qnan_value),
6516     TEST_c_c (clog10, minus_infty, qnan_value, plus_infty, qnan_value),
6517
6518     TEST_c_c (clog10, qnan_value, plus_infty, plus_infty, qnan_value),
6519     TEST_c_c (clog10, qnan_value, minus_infty, plus_infty, qnan_value),
6520
6521     TEST_c_c (clog10, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6522     TEST_c_c (clog10, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6523     TEST_c_c (clog10, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6524     TEST_c_c (clog10, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6525
6526     TEST_c_c (clog10, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6527     TEST_c_c (clog10, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6528     TEST_c_c (clog10, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6529     TEST_c_c (clog10, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6530
6531     TEST_c_c (clog10, qnan_value, qnan_value, qnan_value, qnan_value),
6532
6533     TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L),
6534     TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L),
6535
6536     TEST_c_c (clog10, 0x1.fffffep+127L, 0x1.fffffep+127L, 38.68235441693561449174780668781319348761L, M_PI4_LOG10El),
6537     TEST_c_c (clog10, 0x1.fffffep+127L, 1.0L, 38.53183941910362389414093724045094697423L, 1.276276851248440096917018665609900318458e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6538     TEST_c_c (clog10, 0x1p-149L, 0x1p-149L, -44.70295435610120748924022586658721447508L, M_PI4_LOG10El),
6539     TEST_c_c (clog10, 0x1p-147L, 0x1p-147L, -44.10089436477324509881274807713822842154L, M_PI4_LOG10El),
6540
6541 #ifndef TEST_FLOAT
6542     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 308.4052305577487344482591243175787477115L, M_PI4_LOG10El),
6543     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 308.3031705664207720674749211936626341569L, 0.2013595981366865903254995612594728746470L),
6544     TEST_c_c (clog10, 0x1p-1074L, 0x1p-1074L, -323.1557003452838130619487034867432642357L, M_PI4_LOG10El),
6545     TEST_c_c (clog10, 0x1p-1073L, 0x1p-1073L, -322.8546703496198318667349645920187712089L, M_PI4_LOG10El),
6546 #endif
6547
6548 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6549     TEST_c_c (clog10, 0x1.fp+16383L, 0x1.fp+16383L, 4932.212175672014259683102930239951947672L, M_PI4_LOG10El),
6550     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p+16383L, 4932.112944269463028900262609694408579449L, 0.2069271710841128115912940666587802677383L),
6551     TEST_c_c (clog10, 0x1p-16440L, 0x1p-16441L, -4948.884673709346821106688037612752099609L, 0.2013595981366865710389502301937289472543L),
6552 #endif
6553
6554     TEST_c_c (clog10, 0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6555     TEST_c_c (clog10, -0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6556     TEST_c_c (clog10, 0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6557     TEST_c_c (clog10, -0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6558     TEST_c_c (clog10, -0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, 1.364376353841841347485783625431355770210L),
6559     TEST_c_c (clog10, -0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, -1.364376353841841347485783625431355770210L),
6560 #ifdef TEST_FLOAT
6561     TEST_c_c (clog10, 0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, plus_zero, UNDERFLOW_EXCEPTION),
6562     TEST_c_c (clog10, 0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, minus_zero, UNDERFLOW_EXCEPTION),
6563 #endif
6564
6565 #ifndef TEST_FLOAT
6566     TEST_c_c (clog10, 0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6567     TEST_c_c (clog10, -0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6568     TEST_c_c (clog10, 0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6569     TEST_c_c (clog10, -0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6570     TEST_c_c (clog10, -0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, 1.364376353841841347485783625431355770210L),
6571     TEST_c_c (clog10, -0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, -1.364376353841841347485783625431355770210L),
6572 #endif
6573 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6574     TEST_c_c (clog10, 0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, plus_zero, UNDERFLOW_EXCEPTION),
6575     TEST_c_c (clog10, 0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, minus_zero, UNDERFLOW_EXCEPTION),
6576 #endif
6577
6578 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6579     TEST_c_c (clog10, 0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6580     TEST_c_c (clog10, -0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6581     TEST_c_c (clog10, 0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6582     TEST_c_c (clog10, -0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6583     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6584     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6585     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6586     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6587 # if LDBL_MANT_DIG >= 113
6588     TEST_c_c (clog10, 0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6589     TEST_c_c (clog10, -0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6590     TEST_c_c (clog10, 0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6591     TEST_c_c (clog10, -0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6592     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6593     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6594     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6595     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6596 # endif
6597 #endif
6598
6599     TEST_c_c (clog10, 1.0L, 0x1.234566p-10L, 2.680828048441605163181684680300513080769e-7L, 4.825491868832381486767558728169977751564e-4L),
6600     TEST_c_c (clog10, -1.0L, 0x1.234566p-20L, 2.556638434669064077889576526006849923281e-13L, 1.364375882602207106407956770293808181427L),
6601     TEST_c_c (clog10, 0x1.234566p-30L, 1.0L, 2.438200411482400072282924063740535840474e-19L, 6.821881764607257184291586401763604544928e-1L),
6602     TEST_c_c (clog10, -0x1.234566p-40L, -1.0L, 2.325249110681915353442924915876654139373e-25L, -6.821881769213700828789403802671540158935e-1L),
6603     TEST_c_c (clog10, 0x1.234566p-50L, 1.0L, 2.217530356103816369479108963807448194409e-31L, 6.821881769209202348667823902864283966959e-1L),
6604     TEST_c_c (clog10, 0x1.234566p-60L, 1.0L, 2.114801746467415208319767917450504756866e-37L, 6.821881769209206733143018621078368211515e-1L),
6605     TEST_c_c (clog10, 0x1p-61L, 1.0L, 4.084085680564517578238994467153626207224e-38L, 6.821881769209206735545466044044889962925e-1L),
6606     TEST_c_c (clog10, 0x1p-62L, 1.0L, 1.021021420141129394559748616788406551878e-38L, 6.821881769209206736487192085600834406988e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6607     TEST_c_c (clog10, 0x1p-63L, 1.0L, 2.552553550352823486399371541971016379740e-39L, 6.821881769209206736958055106378806629019e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6608 #ifndef TEST_FLOAT
6609     TEST_c_c (clog10, 0x1p-509L, 1.0L, 7.730698388614835910296270976605350994446e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6610     TEST_c_c (clog10, 0x1p-510L, 1.0L, 1.932674597153708977574067744151337748612e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6611     TEST_c_c (clog10, 0x1p-511L, 1.0L, 4.831686492884272443935169360378344371529e-309L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6612 #endif
6613 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6614     TEST_c_c (clog10, 0x1p-8189L, 1.0L, 1.168114274114528946314738738025008370069e-4931L, 6.821881769209206737428918127156778851051e-1L),
6615     TEST_c_c (clog10, 0x1p-8190L, 1.0L, 2.920285685286322365786846845062520925172e-4932L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6616     TEST_c_c (clog10, 0x1p-8191L, 1.0L, 7.300714213215805914467117112656302312931e-4933L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6617 #endif
6618
6619     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-10L, 3.604093470239754109961125085078190708674e-5L, 4.824745078422174667425851670822596859720e-4L),
6620     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-100L, 3.577293486783822178310971763308187385546e-5L, 3.897399639875661463735636919790792140598e-31L),
6621 #ifndef TEST_FLOAT
6622     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-30L, 1.150487028947346337782682105935961875822e-10L, 1.364376353381646356131680448946397884147L),
6623     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 1.150487026509145544402795327729455391948e-10L, 1.364376353841841347485783625431355770210L),
6624 #endif
6625 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6626     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 4.285899851347756188767674032946882584784e-19L, 4.285899850759344225805480528847018395861e-19L),
6627     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 4.285899851347756186652871946325962330640e-19L, 4.611541215247321502041995872887317363241e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6628 #endif
6629
6630     TEST_c_c (clog10, 0x0.ffffffp0L, 0x0.ffffffp-100L, -2.588596909321764128428416045209904492216e-8L, 3.425979381266895667295625489912064603415e-31L),
6631 #ifndef TEST_FLOAT
6632     TEST_c_c (clog10, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -4.821637332766435821255375046554377090472e-17L, 4.053112396770095089737411317782466262176e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6633 #endif
6634 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6635     TEST_c_c (clog10, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -2.354315103889861110220423157644627849164e-20L, 1.541165759405643564697852372112893034397e-4516L),
6636 #endif
6637
6638     TEST_c_c (clog10, 0x1a6p-10L, 0x3a5p-10L, -6.2126412844802358329771948751248003038444e-07L, 0.4977135139537443711784513409096950995985L),
6639     TEST_c_c (clog10, 0xf2p-10L, 0x3e3p-10L, 2.6921240173351112953324592659528481616879e-06L, 0.5785726025799636431142862788413361783862L),
6640     TEST_c_c (clog10, 0x4d4ep-15L, 0x6605p-15L, -7.0781945783414996953799915941870192015212e-09L, 0.4005747524909781155537088181659175147564L),
6641     TEST_c_c (clog10, 0x2818p-15L, 0x798fp-15L, 6.6737261053986614395049481326819059203910e-09L, 0.5438241985991753781478398141908629586460L),
6642     TEST_c_c (clog10, 0x9b57bp-20L, 0xcb7b4p-20L, -1.7182001068739620267773842120965071561416e-11L, 0.3990121149225253562859800593935899629087L),
6643     TEST_c_c (clog10, 0x2731p-20L, 0xfffd0p-20L, 1.9156943718715958194239364991329064049438e-11L, 0.6780326907904082601285090019969008967595L),
6644     TEST_c_c (clog10, 0x2ede88p-23L, 0x771c3fp-23L, -1.9440841725722970687903291200493082253766e-13L, 0.5193774116724956222518530053006822210323L),
6645     TEST_c_c (clog10, 0x11682p-23L, 0x7ffed1p-23L, 5.0916490233953865181284669870035717560498e-13L, 0.6784968969384861816694467029319146542069L),
6646     TEST_c_c (clog10, 0xa1f2c1p-24L, 0xc643aep-24L, -4.5516256421319921959681423447271490869664e-14L, 0.3847315790697197749315054516562206543710L),
6647     TEST_c_c (clog10, 0x659feap-24L, 0xeaf6f9p-24L, 1.6200701438094619117335617123525612051457e-14L, 0.5049027913635038013499728086604870749732L),
6648 #ifndef TEST_FLOAT
6649     TEST_c_c (clog10, 0x4447d7175p-35L, 0x6c445e00ap-35L, -6.4375803621988389731799033530075237868110e-21L, 0.4378257977686804492768642780897650927167L),
6650     TEST_c_c (clog10, 0x2dd46725bp-35L, 0x7783a1284p-35L, 1.9312741086596516918394613098872836703188e-20L, 0.5231613813514771042838490538484014771862L),
6651     TEST_c_c (clog10, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -1.3155760824064879362415202279780039150764e-26L, 0.3473590599762514228227328130640352044313L),
6652     TEST_c_c (clog10, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 2.3329549194675052736016290082882121135546e-26L, 0.4561756099441139182878993697611751382976L),
6653     TEST_c_c (clog10, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -2.6979587627476803379953050733225113494503e-30L, 0.6472785229986997177606324374555347813105L),
6654     TEST_c_c (clog10, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 1.3918041236396763648388478552321724382899e-29L, 0.6263795733790237053262025311642907438291L),
6655     TEST_c_c (clog10, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -4.2289432987513243393180377141513840878196e-30L, 0.4252020027092323591068799049905597805296L),
6656     TEST_c_c (clog10, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 3.6079845358966994996207055940336690133424e-30L, 0.5243112258263349992771652393178033846555L),
6657     TEST_c_c (clog10, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -1.0893543813872082317104059174982092534059e-30L, 0.5954257879188711495921161433751775633232L),
6658     TEST_c_c (clog10, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 4.4163015461643576961232672330852798804976e-31L, 0.3564851427422832755956993418877523303529L),
6659     TEST_c_c (clog10, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 2.2081507730821788480616336165447731164865e-32L, 0.5484039935757001196548030312819898864760L),
6660     TEST_c_c (clog10, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -2.2583360179249556400630343805573865814771e-32L, 0.6639894257763289307423302343317622430835L),
6661 #endif
6662 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6663     TEST_c_c (clog10, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -5.1816837072162316773907242302011632570857e-37L, 0.5386167838952956925896424154370364458140L),
6664     TEST_c_c (clog10, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 2.7822833698845776001753149807484078521508e-37L, 0.3992725998539071066769046272515417679815L),
6665     TEST_c_c (clog10, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -1.0146400362652473358437501879334790111898e-37L, 0.5149047982335273098246594109614460842099L),
6666     TEST_c_c (clog10, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 1.0529283395205396881397407610630442563938e-37L, 0.4947949395762683446121140513971996916447L),
6667     TEST_c_c (clog10, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -4.3074341162203896332989394770760901408798e-39L, 0.5709443672155660428417571212549720987784L),
6668 #endif
6669 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6670     TEST_c_c (clog10, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -4.5643214291682663316715446865040356750881e-46L, 0.4564083863660793840592614609053162690362L),
6671     TEST_c_c (clog10, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 5.8575458340992751256451490143468457830297e-44L, 0.5103174273246635294300470585396890237265L),
6672     TEST_c_c (clog10, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -2.0748709499710785084693619097712106753591e-50L, 0.3645447681189598740620098186365764884771L),
6673     TEST_c_c (clog10, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 1.2333149003324592532859843519619084433953e-50L, 0.3973779298829931059309198145608711073016L),
6674     TEST_c_c (clog10, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -1.5221162575729652613635150540947625639689e-57L, 0.5795934880811949230121092882659698986043L),
6675     TEST_c_c (clog10, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 1.7850272475173865337808494725293124613817e-56L, 0.6338990862456906754888183278564382516852L),
6676     TEST_c_c (clog10, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -6.2023045024810589256360494043570293518879e-63L, 0.5938345819561308555003145899438513900776L),
6677     TEST_c_c (clog10, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 4.3548095442952115860848857519953610343042e-63L, 0.3558376234889641500775150477035448866763L),
6678     TEST_c_c (clog10, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -7.5879257211204444302994221436282805900756e-64L, 0.5119945461708707332160859198685423099187L),
6679     TEST_c_c (clog10, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 1.8804859395820231849002915747252695375405e-63L, 0.6404513901551516189871978418046651877394L),
6680 #endif
6681 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6682     TEST_c_c (clog10, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -5.0742964549782184008668435276046798273476e-67L, 0.5757527761596220360985719127090110408283L),
6683     TEST_c_c (clog10, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 6.5482587585671294601662599808612773010057e-66L, 0.5601289501766423782280643144987875760229L),
6684     TEST_c_c (clog10, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -3.1210950417524756037077807411854181477733e-67L, 0.3791463562379872585396164879981280044658L),
6685     TEST_c_c (clog10, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 2.8774482675253468630312378575186855052697e-66L, 0.4571561610046221605554903008571429975493L),
6686     TEST_c_c (clog10, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 1.9985076315737626043096596036300177494613e-67L, 0.5883569274304683249184005177865521205198L),
6687     TEST_c_c (clog10, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 1.1288799405048268615023706955013387413519e-67L, 0.6137587762850841972073301550420510507903L),
6688 #endif
6689     END_DATA (clog10)
6690   };
6691
6692 static void
6693 clog10_test (void)
6694 {
6695   errno = 0;
6696   FUNC(clog10) (BUILD_COMPLEX (0.7L, 1.2L));
6697   if (errno == ENOSYS)
6698     /* Function not implemented.  */
6699     return;
6700
6701   START (clog10);
6702   RUN_TEST_LOOP_c_c (clog10, clog10_test_data, );
6703   END (clog10, complex);
6704 }
6705
6706
6707 static const struct test_c_c_data conj_test_data[] =
6708   {
6709     START_DATA (conj),
6710     TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero),
6711     TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0),
6712     TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value),
6713     TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty),
6714     TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty),
6715     TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0),
6716     TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0),
6717     END_DATA (conj)
6718   };
6719
6720 static void
6721 conj_test (void)
6722 {
6723   START (conj);
6724   RUN_TEST_LOOP_c_c (conj, conj_test_data, );
6725   END (conj, complex);
6726 }
6727
6728
6729 static const struct test_ff_f_data copysign_test_data[] =
6730   {
6731     START_DATA (copysign),
6732     TEST_ff_f (copysign, 0, 4, 0),
6733     TEST_ff_f (copysign, 0, -4, minus_zero),
6734     TEST_ff_f (copysign, minus_zero, 4, 0),
6735     TEST_ff_f (copysign, minus_zero, -4, minus_zero),
6736
6737     TEST_ff_f (copysign, plus_infty, 0, plus_infty),
6738     TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty),
6739     TEST_ff_f (copysign, minus_infty, 0, plus_infty),
6740     TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty),
6741
6742     TEST_ff_f (copysign, 0, plus_infty, 0),
6743     TEST_ff_f (copysign, 0, minus_zero, minus_zero),
6744     TEST_ff_f (copysign, minus_zero, plus_infty, 0),
6745     TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero),
6746
6747     /* XXX More correctly we would have to check the sign of the NaN.  */
6748     TEST_ff_f (copysign, qnan_value, 0, qnan_value),
6749     TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value),
6750     TEST_ff_f (copysign, -qnan_value, 0, qnan_value),
6751     TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value),
6752     END_DATA (copysign)
6753   };
6754
6755 static void
6756 copysign_test (void)
6757 {
6758   START (copysign);
6759   RUN_TEST_LOOP_ff_f (copysign, copysign_test_data, );
6760   END (copysign);
6761 }
6762
6763
6764 static const struct test_f_f_data cos_test_data[] =
6765   {
6766     START_DATA (cos),
6767     TEST_f_f (cos, 0, 1),
6768     TEST_f_f (cos, minus_zero, 1),
6769     TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6770     TEST_f_f (cos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6771     TEST_f_f (cos, qnan_value, qnan_value, ERRNO_UNCHANGED),
6772
6773     TEST_f_f (cos, M_PI_6l * 2.0, 0.5),
6774     TEST_f_f (cos, M_PI_6l * 4.0, -0.5),
6775
6776     /* The value of M_PI_2l is never exactly PI/2, and therefore the
6777        answer is never exactly zero. The answer is equal to the error
6778        in rounding PI/2 for the type used.  Thus the answer is unique
6779        to each type.  */
6780 #ifdef TEST_FLOAT
6781     /* 32-bit float.  */
6782     TEST_f_f (cos, M_PI_2l, -0x1.777a5cp-25L),
6783 #endif
6784 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
6785     /* 64-bit double or 64-bit long double.  */
6786     TEST_f_f (cos, M_PI_2l, 0x1.1a62633145c07p-54L),
6787 #endif
6788 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
6789     /* 96-bit long double.  */
6790     TEST_f_f (cos, M_PI_2l, -0xe.ce675d1fc8f8cbbp-69L),
6791 #endif
6792 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
6793     /* 128-bit IBM long double.  */
6794     TEST_f_f (cos, M_PI_2l, 0x1.c1cd129024e088a67cc74020bcp-107L),
6795 #endif
6796 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
6797     /* 128-bit long double.  */
6798     TEST_f_f (cos, M_PI_2l, 0x1.cd129024e088a67cc74020bbea64p-115L),
6799 #endif
6800
6801     TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L),
6802
6803     TEST_f_f (cos, 0x1p65, 0.99888622066058013610642172179340364209972L),
6804     TEST_f_f (cos, -0x1p65, 0.99888622066058013610642172179340364209972L),
6805
6806 #ifdef TEST_DOUBLE
6807     TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473),
6808 #endif
6809
6810     TEST_f_f (cos, 0x1.442f74p+15, 2.4407839902314016628485779006274989801517e-06L),
6811
6812 #ifndef TEST_FLOAT
6813     TEST_f_f (cos, 1e22, 0.5232147853951389454975944733847094921409L),
6814     TEST_f_f (cos, 0x1p1023, -0.826369834614147994500785680811743734805L),
6815 #endif
6816
6817 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6818     TEST_f_f (cos, 0x1p16383L, 0.9210843909921906206874509522505756251609L),
6819 #endif
6820
6821     TEST_f_f (cos, 0x1p+120, -9.25879022854837867303861764107414946730833e-01L),
6822     TEST_f_f (cos, 0x1p+127, 7.81914638714960072263910298466369236613162e-01L),
6823     TEST_f_f (cos, 0x1.fffff8p+127, 9.98819362551949040703862043664101081064641e-01L),
6824     TEST_f_f (cos, 0x1.fffffep+127, 8.53021039830304158051791467692161107353094e-01L),
6825     TEST_f_f (cos, 0x1p+50, 8.68095904660550604334592502063501320395739e-01L),
6826     TEST_f_f (cos, 0x1p+28, -1.65568979490578758865468278195361551113358e-01L),
6827     END_DATA (cos)
6828   };
6829
6830 static void
6831 cos_test (void)
6832 {
6833   errno = 0;
6834   FUNC(cos) (0);
6835   if (errno == ENOSYS)
6836     /* Function not implemented.  */
6837     return;
6838
6839   START (cos);
6840   RUN_TEST_LOOP_f_f (cos, cos_test_data, );
6841   END (cos);
6842 }
6843
6844
6845 static const struct test_f_f_data cos_tonearest_test_data[] =
6846   {
6847     START_DATA (cos_tonearest),
6848     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6849     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6850     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6851     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6852     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6853     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6854     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6855     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6856     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6857     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6858     END_DATA (cos_tonearest)
6859   };
6860
6861 static void
6862 cos_test_tonearest (void)
6863 {
6864   errno = 0;
6865   FUNC(cos) (0);
6866   if (errno == ENOSYS)
6867     /* Function not implemented.  */
6868     return;
6869
6870   START (cos_tonearest);
6871   RUN_TEST_LOOP_f_f (cos, cos_tonearest_test_data, FE_TONEAREST);
6872   END (cos_tonearest);
6873 }
6874
6875
6876 static const struct test_f_f_data cos_towardzero_test_data[] =
6877   {
6878     START_DATA (cos_towardzero),
6879     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6880     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6881     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6882     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6883     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6884     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6885     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6886     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6887     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6888     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6889     END_DATA (cos_towardzero)
6890   };
6891
6892 static void
6893 cos_test_towardzero (void)
6894 {
6895   errno = 0;
6896   FUNC(cos) (0);
6897   if (errno == ENOSYS)
6898     /* Function not implemented.  */
6899     return;
6900
6901   START (cos_towardzero);
6902   RUN_TEST_LOOP_f_f (cos, cos_towardzero_test_data, FE_TOWARDZERO);
6903   END (cos_towardzero);
6904 }
6905
6906
6907 static const struct test_f_f_data cos_downward_test_data[] =
6908   {
6909     START_DATA (cos_downward),
6910     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6911     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6912     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6913     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6914     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6915     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6916     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6917     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6918     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6919     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6920     END_DATA (cos_downward)
6921   };
6922
6923 static void
6924 cos_test_downward (void)
6925 {
6926   errno = 0;
6927   FUNC(cos) (0);
6928   if (errno == ENOSYS)
6929     /* Function not implemented.  */
6930     return;
6931
6932   START (cos_downward);
6933   RUN_TEST_LOOP_f_f (cos, cos_downward_test_data, FE_DOWNWARD);
6934   END (cos_downward);
6935 }
6936
6937
6938 static const struct test_f_f_data cos_upward_test_data[] =
6939   {
6940     START_DATA (cos_upward),
6941     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6942     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6943     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6944     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6945     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6946     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6947     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6948     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6949     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6950     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6951     END_DATA (cos_upward)
6952   };
6953
6954 static void
6955 cos_test_upward (void)
6956 {
6957   errno = 0;
6958   FUNC(cos) (0);
6959   if (errno == ENOSYS)
6960     /* Function not implemented.  */
6961     return;
6962
6963   START (cos_upward);
6964   RUN_TEST_LOOP_f_f (cos, cos_upward_test_data, FE_UPWARD);
6965   END (cos_upward);
6966 }
6967
6968
6969 static const struct test_f_f_data cosh_test_data[] =
6970   {
6971     START_DATA (cosh),
6972     TEST_f_f (cosh, 0, 1),
6973     TEST_f_f (cosh, minus_zero, 1),
6974
6975 #ifndef TEST_INLINE
6976     TEST_f_f (cosh, plus_infty, plus_infty),
6977     TEST_f_f (cosh, minus_infty, plus_infty),
6978 #endif
6979     TEST_f_f (cosh, qnan_value, qnan_value),
6980
6981     TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L),
6982
6983 #ifndef TEST_FLOAT
6984     TEST_f_f (cosh, 709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6985     TEST_f_f (cosh, -709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6986 #endif
6987     END_DATA (cosh)
6988   };
6989
6990 static void
6991 cosh_test (void)
6992 {
6993   errno = 0;
6994   FUNC(cosh) (0.7L);
6995   if (errno == ENOSYS)
6996     /* Function not implemented.  */
6997     return;
6998
6999   START (cosh);
7000   RUN_TEST_LOOP_f_f (cosh, cosh_test_data, );
7001   END (cosh);
7002 }
7003
7004
7005 static const struct test_f_f_data cosh_tonearest_test_data[] =
7006   {
7007     START_DATA (cosh_tonearest),
7008     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
7009     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
7010     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
7011     END_DATA (cosh_tonearest)
7012   };
7013
7014 static void
7015 cosh_test_tonearest (void)
7016 {
7017   errno = 0;
7018   FUNC(cosh) (0);
7019   if (errno == ENOSYS)
7020     /* Function not implemented.  */
7021     return;
7022
7023   START (cosh_tonearest);
7024   RUN_TEST_LOOP_f_f (cosh, cosh_tonearest_test_data, FE_TONEAREST);
7025   END (cosh_tonearest);
7026 }
7027
7028
7029 static const struct test_f_f_data cosh_towardzero_test_data[] =
7030   {
7031     START_DATA (cosh_towardzero),
7032     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
7033     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
7034     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
7035     END_DATA (cosh_towardzero)
7036   };
7037
7038 static void
7039 cosh_test_towardzero (void)
7040 {
7041   errno = 0;
7042   FUNC(cosh) (0);
7043   if (errno == ENOSYS)
7044     /* Function not implemented.  */
7045     return;
7046
7047   START (cosh_towardzero);
7048   RUN_TEST_LOOP_f_f (cosh, cosh_towardzero_test_data, FE_TOWARDZERO);
7049   END (cosh_towardzero);
7050 }
7051
7052
7053 static const struct test_f_f_data cosh_downward_test_data[] =
7054   {
7055     START_DATA (cosh_downward),
7056     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
7057     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
7058     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
7059     END_DATA (cosh_downward)
7060   };
7061
7062 static void
7063 cosh_test_downward (void)
7064 {
7065   errno = 0;
7066   FUNC(cosh) (0);
7067   if (errno == ENOSYS)
7068     /* Function not implemented.  */
7069     return;
7070
7071   START (cosh_downward);
7072   RUN_TEST_LOOP_f_f (cosh, cosh_downward_test_data, FE_DOWNWARD);
7073   END (cosh_downward);
7074 }
7075
7076
7077 static const struct test_f_f_data cosh_upward_test_data[] =
7078   {
7079     START_DATA (cosh_upward),
7080     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
7081     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
7082     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
7083     END_DATA (cosh_upward)
7084   };
7085
7086 static void
7087 cosh_test_upward (void)
7088 {
7089   errno = 0;
7090   FUNC(cosh) (0);
7091   if (errno == ENOSYS)
7092     /* Function not implemented.  */
7093     return;
7094
7095   START (cosh_upward);
7096   RUN_TEST_LOOP_f_f (cosh, cosh_upward_test_data, FE_UPWARD);
7097   END (cosh_upward);
7098 }
7099
7100
7101 static void
7102 cpow_test (void)
7103 {
7104   errno = 0;
7105   FUNC(cpow) (BUILD_COMPLEX (1, 0), BUILD_COMPLEX (0, 0));
7106   if (errno == ENOSYS)
7107     /* Function not implemented.  */
7108     return;
7109
7110   START (cpow);
7111
7112   TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0);
7113   TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0);
7114
7115   TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0);
7116   TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0);
7117
7118   TEST_cc_c (cpow, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value);
7119
7120   TEST_cc_c (cpow, 0.75L, 1.25L, 0.75L, 1.25L, 0.117506293914473555420279832210420483L, 0.346552747708338676483025352060418001L);
7121   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 1.0L, 0.0846958290317209430433805274189191353L, 0.513285749182902449043287190519090481L);
7122   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 0.0L, 0.75L, 1.25L);
7123   TEST_cc_c (cpow, 0.75L, 1.25L, 0.0L, 1.0L, 0.331825439177608832276067945276730566L, 0.131338600281188544930936345230903032L);
7124
7125   END (cpow, complex);
7126 }
7127
7128
7129 static const struct test_c_c_data cproj_test_data[] =
7130   {
7131     START_DATA (cproj),
7132     TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0),
7133     TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero),
7134     TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero),
7135     TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0),
7136
7137     TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value),
7138
7139     TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0),
7140     TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero),
7141     TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0),
7142     TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero),
7143
7144     TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0),
7145     TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0),
7146     END_DATA (cproj)
7147   };
7148
7149 static void
7150 cproj_test (void)
7151 {
7152   START (cproj);
7153   RUN_TEST_LOOP_c_c (cproj, cproj_test_data, );
7154   END (cproj, complex);
7155 }
7156
7157
7158 static const struct test_c_f_data creal_test_data[] =
7159   {
7160     START_DATA (creal);
7161     TEST_c_f (creal, 0.0, 1.0, 0.0),
7162     TEST_c_f (creal, minus_zero, 1.0, minus_zero),
7163     TEST_c_f (creal, qnan_value, 1.0, qnan_value),
7164     TEST_c_f (creal, qnan_value, qnan_value, qnan_value),
7165     TEST_c_f (creal, plus_infty, 1.0, plus_infty),
7166     TEST_c_f (creal, minus_infty, 1.0, minus_infty),
7167     TEST_c_f (creal, 2.0, 3.0, 2.0),
7168     END_DATA (creal);
7169   };
7170
7171 static void
7172 creal_test (void)
7173 {
7174   START (creal);
7175   RUN_TEST_LOOP_c_f (creal, creal_test_data, );
7176   END (creal);
7177 }
7178
7179 static const struct test_c_c_data csin_test_data[] =
7180   {
7181     START_DATA (csin),
7182     TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0),
7183     TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0),
7184     TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero),
7185     TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero),
7186
7187     TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty),
7188     TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty),
7189     TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty),
7190     TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty),
7191
7192     TEST_c_c (csin, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7193     TEST_c_c (csin, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7194     TEST_c_c (csin, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7195     TEST_c_c (csin, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7196
7197     TEST_c_c (csin, plus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7198     TEST_c_c (csin, minus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7199     TEST_c_c (csin, plus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7200     TEST_c_c (csin, minus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7201
7202     TEST_c_c (csin, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7203     TEST_c_c (csin, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7204     TEST_c_c (csin, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7205     TEST_c_c (csin, minus_infty, -6.75,  qnan_value, qnan_value, INVALID_EXCEPTION),
7206
7207     TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty),
7208     TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty),
7209     TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty),
7210     TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty),
7211
7212     TEST_c_c (csin, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7213     TEST_c_c (csin, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7214
7215     TEST_c_c (csin, qnan_value, plus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7216     TEST_c_c (csin, qnan_value, minus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7217
7218     TEST_c_c (csin, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7219     TEST_c_c (csin, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7220
7221     TEST_c_c (csin, 0.0, qnan_value, 0.0, qnan_value),
7222     TEST_c_c (csin, minus_zero, qnan_value, minus_zero, qnan_value),
7223
7224     TEST_c_c (csin, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7225     TEST_c_c (csin, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7226
7227     TEST_c_c (csin, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7228     TEST_c_c (csin, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7229
7230     TEST_c_c (csin, qnan_value, qnan_value, qnan_value, qnan_value),
7231
7232     TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L),
7233     TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L),
7234
7235     TEST_c_c (csin, 0.75, 89.5, 2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7236     TEST_c_c (csin, 0.75, -89.5, 2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7237     TEST_c_c (csin, -0.75, 89.5, -2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7238     TEST_c_c (csin, -0.75, -89.5, -2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7239
7240 #ifndef TEST_FLOAT
7241     TEST_c_c (csin, 0.75, 710.5, 1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7242     TEST_c_c (csin, 0.75, -710.5, 1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7243     TEST_c_c (csin, -0.75, 710.5, -1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7244     TEST_c_c (csin, -0.75, -710.5, -1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7245 #endif
7246
7247 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7248     TEST_c_c (csin, 0.75, 11357.25, 8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7249     TEST_c_c (csin, 0.75, -11357.25, 8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7250     TEST_c_c (csin, -0.75, 11357.25, -8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7251     TEST_c_c (csin, -0.75, -11357.25, -8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7252 #endif
7253
7254 #ifdef TEST_FLOAT
7255     TEST_c_c (csin, 0x1p-149, 180, 1.043535896672617552965983803453927655332e33L, plus_infty, OVERFLOW_EXCEPTION),
7256 #endif
7257
7258 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7259     TEST_c_c (csin, 0x1p-1074, 1440, 5.981479269486130556466515778180916082415e301L, plus_infty, OVERFLOW_EXCEPTION),
7260 #endif
7261
7262 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7263     TEST_c_c (csin, 0x1p-16434L, 22730, 1.217853148905605987081057582351152052687e4924L, plus_infty, OVERFLOW_EXCEPTION),
7264 #endif
7265
7266     TEST_c_c (csin, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7267     TEST_c_c (csin, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7268     END_DATA (csin)
7269   };
7270
7271 static void
7272 csin_test (void)
7273 {
7274   errno = 0;
7275   FUNC(csin) (BUILD_COMPLEX (0.7L, 1.2L));
7276   if (errno == ENOSYS)
7277     /* Function not implemented.  */
7278     return;
7279
7280   START (csin);
7281   RUN_TEST_LOOP_c_c (csin, csin_test_data, );
7282   END (csin, complex);
7283 }
7284
7285
7286 static const struct test_c_c_data csinh_test_data[] =
7287   {
7288     START_DATA (csinh),
7289     TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0),
7290     TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0),
7291     TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero),
7292     TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero),
7293
7294     TEST_c_c (csinh, 0.0, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7295     TEST_c_c (csinh, minus_zero, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7296     TEST_c_c (csinh, 0.0, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7297     TEST_c_c (csinh, minus_zero, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7298
7299     TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0),
7300     TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0),
7301     TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero),
7302     TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero),
7303
7304     TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7305     TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7306     TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7307     TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7308
7309     TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty),
7310     TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty),
7311     TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty),
7312     TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty),
7313
7314     TEST_c_c (csinh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7315     TEST_c_c (csinh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7316     TEST_c_c (csinh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7317     TEST_c_c (csinh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7318
7319     TEST_c_c (csinh, 0.0, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7320     TEST_c_c (csinh, minus_zero, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7321
7322     TEST_c_c (csinh, plus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7323     TEST_c_c (csinh, minus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7324
7325     TEST_c_c (csinh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7326     TEST_c_c (csinh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7327
7328     TEST_c_c (csinh, qnan_value, 0.0, qnan_value, 0.0),
7329     TEST_c_c (csinh, qnan_value, minus_zero, qnan_value, minus_zero),
7330
7331     TEST_c_c (csinh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7332     TEST_c_c (csinh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7333
7334     TEST_c_c (csinh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7335     TEST_c_c (csinh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7336
7337     TEST_c_c (csinh, qnan_value, qnan_value, qnan_value, qnan_value),
7338
7339     TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L),
7340     TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L),
7341
7342     TEST_c_c (csinh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7343     TEST_c_c (csinh, -89.5, 0.75, -2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7344     TEST_c_c (csinh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7345     TEST_c_c (csinh, -89.5, -0.75, -2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7346
7347 #ifndef TEST_FLOAT
7348     TEST_c_c (csinh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7349     TEST_c_c (csinh, -710.5, 0.75, -1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7350     TEST_c_c (csinh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7351     TEST_c_c (csinh, -710.5, -0.75, -1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7352 #endif
7353
7354 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7355     TEST_c_c (csinh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7356     TEST_c_c (csinh, -11357.25, 0.75, -9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7357     TEST_c_c (csinh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7358     TEST_c_c (csinh, -11357.25, -0.75, -9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7359 #endif
7360
7361 #ifdef TEST_FLOAT
7362     TEST_c_c (csinh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
7363 #endif
7364
7365 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7366     TEST_c_c (csinh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
7367 #endif
7368
7369 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7370     TEST_c_c (csinh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
7371 #endif
7372
7373     TEST_c_c (csinh, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7374     TEST_c_c (csinh, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7375     END_DATA (csinh)
7376   };
7377
7378 static void
7379 csinh_test (void)
7380 {
7381   errno = 0;
7382   FUNC(csinh) (BUILD_COMPLEX (0.7L, 1.2L));
7383   if (errno == ENOSYS)
7384     /* Function not implemented.  */
7385     return;
7386
7387   START (csinh);
7388   RUN_TEST_LOOP_c_c (csinh, csinh_test_data, );
7389   END (csinh, complex);
7390 }
7391
7392
7393 static const struct test_c_c_data csqrt_test_data[] =
7394   {
7395     START_DATA (csqrt),
7396     TEST_c_c (csqrt, 0, 0, 0.0, 0.0),
7397     TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero),
7398     TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0),
7399     TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero),
7400
7401     TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty),
7402     TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty),
7403     TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty),
7404     TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty),
7405
7406     TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0),
7407     TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0),
7408     TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero),
7409     TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero),
7410
7411     TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty),
7412     TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty),
7413     TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty),
7414     TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty),
7415     TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty),
7416     TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty),
7417     TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty),
7418     TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty),
7419     TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty),
7420     TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty),
7421     TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty),
7422     TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty),
7423
7424     TEST_c_c (csqrt, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7425
7426     TEST_c_c (csqrt, plus_infty, qnan_value, plus_infty, qnan_value),
7427
7428     TEST_c_c (csqrt, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7429     TEST_c_c (csqrt, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7430     TEST_c_c (csqrt, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7431     TEST_c_c (csqrt, -1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7432
7433     TEST_c_c (csqrt, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7434     TEST_c_c (csqrt, qnan_value, 8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7435     TEST_c_c (csqrt, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7436     TEST_c_c (csqrt, qnan_value, -8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7437
7438     TEST_c_c (csqrt, qnan_value, qnan_value, qnan_value, qnan_value),
7439
7440     TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0),
7441     TEST_c_c (csqrt, -1, 0, 0.0, 1.0),
7442     TEST_c_c (csqrt, 0, 2, 1.0, 1.0),
7443     TEST_c_c (csqrt, 119, 120, 12.0, 5.0),
7444     TEST_c_c (csqrt, 0.75L, 1.25L, 1.05065169626078392338656675760808326L, 0.594868882070379067881984030639932657L),
7445     TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L),
7446     TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L),
7447     /* Principal square root should be returned (i.e., non-negative real
7448        part).  */
7449     TEST_c_c (csqrt, 0, -1, M_SQRT1_2l, -M_SQRT1_2l),
7450
7451     TEST_c_c (csqrt, 0x1.fffffep+127L, 0x1.fffffep+127L, 2.026714405498316804978751017492482558075e+19L, 8.394925938143272988211878516208015586281e+18L),
7452     TEST_c_c (csqrt, 0x1.fffffep+127L, 1.0L, 1.844674352395372953599975585936590505260e+19L, 2.710505511993121390769065968615872097053e-20L),
7453     TEST_c_c (csqrt, 0x1p-149L, 0x1p-149L, 4.112805464342778798097003462770175200803e-23L, 1.703579802732953750368659735601389709551e-23L),
7454     TEST_c_c (csqrt, 0x1p-147L, 0x1p-147L, 8.225610928685557596194006925540350401606e-23L, 3.407159605465907500737319471202779419102e-23L),
7455
7456     TEST_c_c (csqrt, plus_zero, 0x1p-149L, 2.646977960169688559588507814623881131411e-23L, 2.646977960169688559588507814623881131411e-23L),
7457     TEST_c_c (csqrt, 0x1p-50L, 0x1p-149L, 2.980232238769531250000000000000000000000e-8L, 2.350988701644575015937473074444491355637e-38L),
7458 #ifdef TEST_FLOAT
7459     TEST_c_c (csqrt, 0x1p+127L, 0x1p-149L, 1.304381782533278221234957180625250836888e19L, plus_zero, UNDERFLOW_EXCEPTION),
7460 #endif
7461     TEST_c_c (csqrt, 0x1p-149L, 0x1p+127L, 9.223372036854775808000000000000000000000e18L, 9.223372036854775808000000000000000000000e18L),
7462     TEST_c_c (csqrt, 0x1.000002p-126L, 0x1.000002p-126L, 1.191195773697904627170323731331667740087e-19L, 4.934094449071842328766868579214125217132e-20L),
7463     TEST_c_c (csqrt, -0x1.000002p-126L, -0x1.000002p-126L, 4.934094449071842328766868579214125217132e-20L, -1.191195773697904627170323731331667740087e-19L),
7464
7465 #ifndef TEST_FLOAT
7466     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 1.473094556905565378990473658199034571917e+154L, 6.101757441282702188537080005372547713595e+153L),
7467     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 1.379778091031440685006200821918878702861e+154L, 3.257214233483129514781233066898042490248e+153L),
7468     TEST_c_c (csqrt, 0x1p-1074L, 0x1p-1074L, 2.442109726130830256743814843868934877597e-162L, 1.011554969366634726113090867589031782487e-162L),
7469     TEST_c_c (csqrt, 0x1p-1073L, 0x1p-1073L, 3.453664695497464982856905711457966660085e-162L, 1.430554756764195530630723976279903095110e-162L),
7470
7471     TEST_c_c (csqrt, plus_zero, 0x1p-1074L, 1.571727784702628688909515672805082228285e-162L, 1.571727784702628688909515672805082228285e-162L),
7472     TEST_c_c (csqrt, 0x1p-500L, 0x1p-1074L, 5.527147875260444560247265192192255725514e-76L, 4.469444793151709302716387622440056066334e-249L),
7473 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7474     TEST_c_c (csqrt, 0x1p+1023L, 0x1p-1074L, 9.480751908109176726832526455652159260085e153L, plus_zero, UNDERFLOW_EXCEPTION),
7475 #endif
7476     TEST_c_c (csqrt, 0x1p-1074L, 0x1p+1023L, 6.703903964971298549787012499102923063740e153L, 6.703903964971298549787012499102923063740e153L),
7477     TEST_c_c (csqrt, 0x1.0000000000001p-1022L, 0x1.0000000000001p-1022L, 1.638872094839911521020410942677082920935e-154L, 6.788430486774966350907249113759995429568e-155L),
7478     TEST_c_c (csqrt, -0x1.0000000000001p-1022L, -0x1.0000000000001p-1022L, 6.788430486774966350907249113759995429568e-155L, -1.638872094839911521020410942677082920935e-154L),
7479 #endif
7480
7481 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7482     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1.fp+16383L, 1.179514222452201722651836720466795901016e+2466L, 4.885707879516577666702435054303191575148e+2465L),
7483     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1p+16383L, 1.106698967236475180613254276996359485630e+2466L, 2.687568007603946993388538156299100955642e+2465L),
7484     TEST_c_c (csqrt, 0x1p-16440L, 0x1p-16441L, 3.514690655930285351254618340783294558136e-2475L,  8.297059146828716918029689466551384219370e-2476L),
7485
7486     TEST_c_c (csqrt, plus_zero, 0x1p-16445L, 4.269191686890197837775136325621239761720e-2476L, 4.269191686890197837775136325621239761720e-2476L),
7487     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16445L, 2.660791472672778409283210520357607795518e-753L, 6.849840675828785164910701384823702064234e-4199L),
7488     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16445L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7489     TEST_c_c (csqrt, 0x1p-16445L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7490     TEST_c_c (csqrt, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-16382L, 2.014551439675644900131815801350165472778e-2466L, 8.344545284118961664300307045791497724440e-2467L),
7491     TEST_c_c (csqrt, -0x1.0000000000000002p-16382L, -0x1.0000000000000002p-16382L, 8.344545284118961664300307045791497724440e-2467L, -2.014551439675644900131815801350165472778e-2466L),
7492
7493 # if LDBL_MANT_DIG >= 113
7494     TEST_c_c (csqrt, plus_zero, 0x1p-16494L, 1.799329752913293143453817328207572571442e-2483L, 1.799329752913293143453817328207572571442e-2483L),
7495     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16494L, 2.660791472672778409283210520357607795518e-753L, 1.216776133331049643422030716668249905907e-4213L),
7496     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16494L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7497     TEST_c_c (csqrt, 0x1p-16494L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7498     TEST_c_c (csqrt, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-16382L, 2.014551439675644900022606748976158925145e-2466L, 8.344545284118961663847948339519226074126e-2467L),
7499     TEST_c_c (csqrt, -0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-16382L, 8.344545284118961663847948339519226074126e-2467L, -2.014551439675644900022606748976158925145e-2466L),
7500 # endif
7501 #endif
7502     END_DATA (csqrt)
7503   };
7504
7505 static void
7506 csqrt_test (void)
7507 {
7508   errno = 0;
7509   FUNC(csqrt) (BUILD_COMPLEX (-1, 0));
7510   if (errno == ENOSYS)
7511     /* Function not implemented.  */
7512     return;
7513
7514   START (csqrt);
7515   RUN_TEST_LOOP_c_c (csqrt, csqrt_test_data, );
7516   END (csqrt, complex);
7517 }
7518
7519 static const struct test_c_c_data ctan_test_data[] =
7520   {
7521     START_DATA (ctan),
7522     TEST_c_c (ctan, 0, 0, 0.0, 0.0),
7523     TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero),
7524     TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0),
7525     TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero),
7526
7527     TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0),
7528     TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0),
7529     TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0),
7530     TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0),
7531
7532     TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0),
7533     TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0),
7534     TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0),
7535     TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0),
7536
7537     TEST_c_c (ctan, plus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7538     TEST_c_c (ctan, plus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7539     TEST_c_c (ctan, minus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7540     TEST_c_c (ctan, minus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7541     TEST_c_c (ctan, plus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7542     TEST_c_c (ctan, plus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7543     TEST_c_c (ctan, minus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7544     TEST_c_c (ctan, minus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7545
7546     TEST_c_c (ctan, qnan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN),
7547     TEST_c_c (ctan, qnan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN),
7548
7549     TEST_c_c (ctan, 0, qnan_value, 0.0, qnan_value),
7550     TEST_c_c (ctan, minus_zero, qnan_value, minus_zero, qnan_value),
7551
7552     TEST_c_c (ctan, 0.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7553     TEST_c_c (ctan, -4.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7554
7555     TEST_c_c (ctan, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7556     TEST_c_c (ctan, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7557     TEST_c_c (ctan, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7558     TEST_c_c (ctan, qnan_value, -0.25, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7559
7560     TEST_c_c (ctan, qnan_value, qnan_value, qnan_value, qnan_value),
7561
7562     TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L),
7563     TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L),
7564
7565     TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L, UNDERFLOW_EXCEPTION_FLOAT),
7566     TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0, UNDERFLOW_EXCEPTION_FLOAT),
7567
7568 #ifndef TEST_FLOAT
7569     TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7570     TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7571 #endif
7572
7573 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7574     TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0, UNDERFLOW_EXCEPTION),
7575     TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0, UNDERFLOW_EXCEPTION),
7576 #endif
7577
7578     TEST_c_c (ctan, 0x3.243f6cp-1, 0, -2.287733242885645987394874673945769518150e7L, 0.0),
7579
7580     TEST_c_c (ctan, 0x1p127, 1, 0.2446359391192790896381501310437708987204L, 0.9101334047676183761532873794426475906201L),
7581
7582 #ifndef TEST_FLOAT
7583     TEST_c_c (ctan, 0x1p1023, 1, -0.2254627924997545057926782581695274244229L, 0.8786063118883068695462540226219865087189L),
7584 #endif
7585
7586 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7587     TEST_c_c (ctan, 0x1p16383L, 1, 0.1608598776370396607204448234354670036772L, 0.8133818522051542536316746743877629761488L),
7588 #endif
7589
7590     TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0, UNDERFLOW_EXCEPTION),
7591     TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0, UNDERFLOW_EXCEPTION),
7592     TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0, UNDERFLOW_EXCEPTION),
7593     TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0, UNDERFLOW_EXCEPTION),
7594     END_DATA (ctan)
7595   };
7596
7597 static void
7598 ctan_test (void)
7599 {
7600   errno = 0;
7601   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7602   if (errno == ENOSYS)
7603     /* Function not implemented.  */
7604     return;
7605
7606   START (ctan);
7607   RUN_TEST_LOOP_c_c (ctan, ctan_test_data, );
7608   END (ctan, complex);
7609 }
7610
7611
7612 static const struct test_c_c_data ctan_tonearest_test_data[] =
7613   {
7614     START_DATA (ctan_tonearest),
7615     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7616
7617 #ifndef TEST_FLOAT
7618     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7619 #endif
7620
7621 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7622     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7623 #endif
7624     END_DATA (ctan_tonearest)
7625   };
7626
7627 static void
7628 ctan_test_tonearest (void)
7629 {
7630   errno = 0;
7631   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7632   if (errno == ENOSYS)
7633     /* Function not implemented.  */
7634     return;
7635
7636   START (ctan_tonearest);
7637   RUN_TEST_LOOP_c_c (ctan, ctan_tonearest_test_data, FE_TONEAREST);
7638   END (ctan_tonearest, complex);
7639 }
7640
7641
7642 static const struct test_c_c_data ctan_towardzero_test_data[] =
7643   {
7644     START_DATA (ctan_towardzero),
7645     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7646
7647 #ifndef TEST_FLOAT
7648     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7649 #endif
7650
7651 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7652     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7653 #endif
7654     END_DATA (ctan_towardzero)
7655   };
7656
7657 static void
7658 ctan_test_towardzero (void)
7659 {
7660   errno = 0;
7661   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7662   if (errno == ENOSYS)
7663     /* Function not implemented.  */
7664     return;
7665
7666   START (ctan_towardzero);
7667   RUN_TEST_LOOP_c_c (ctan, ctan_towardzero_test_data, FE_TOWARDZERO);
7668   END (ctan_towardzero, complex);
7669 }
7670
7671
7672 static const struct test_c_c_data ctan_downward_test_data[] =
7673   {
7674     START_DATA (ctan_downward),
7675     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7676
7677 #ifndef TEST_FLOAT
7678     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7679 #endif
7680
7681 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7682     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7683 #endif
7684     END_DATA (ctan_downward)
7685   };
7686
7687 static void
7688 ctan_test_downward (void)
7689 {
7690   errno = 0;
7691   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7692   if (errno == ENOSYS)
7693     /* Function not implemented.  */
7694     return;
7695
7696   START (ctan_downward);
7697   RUN_TEST_LOOP_c_c (ctan, ctan_downward_test_data, FE_DOWNWARD);
7698   END (ctan_downward, complex);
7699 }
7700
7701
7702 static const struct test_c_c_data ctan_upward_test_data[] =
7703   {
7704     START_DATA (ctan_upward),
7705     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7706
7707 #ifndef TEST_FLOAT
7708     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7709 #endif
7710
7711 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7712     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7713 #endif
7714     END_DATA (ctan_upward)
7715   };
7716
7717 static void
7718 ctan_test_upward (void)
7719 {
7720   errno = 0;
7721   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7722   if (errno == ENOSYS)
7723     /* Function not implemented.  */
7724     return;
7725
7726   START (ctan_upward);
7727   RUN_TEST_LOOP_c_c (ctan, ctan_upward_test_data, FE_UPWARD);
7728   END (ctan_upward, complex);
7729 }
7730
7731
7732 static const struct test_c_c_data ctanh_test_data[] =
7733   {
7734     START_DATA (ctanh),
7735     TEST_c_c (ctanh, 0, 0, 0.0, 0.0),
7736     TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero),
7737     TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0),
7738     TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero),
7739
7740     TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0),
7741     TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0),
7742     TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero),
7743     TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero),
7744     TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0),
7745     TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0),
7746     TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero),
7747     TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero),
7748
7749     TEST_c_c (ctanh, 0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7750     TEST_c_c (ctanh, 2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7751     TEST_c_c (ctanh, 0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7752     TEST_c_c (ctanh, 2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7753     TEST_c_c (ctanh, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7754     TEST_c_c (ctanh, -2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7755     TEST_c_c (ctanh, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7756     TEST_c_c (ctanh, -2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7757
7758     TEST_c_c (ctanh, plus_infty, qnan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7759     TEST_c_c (ctanh, minus_infty, qnan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7760
7761     TEST_c_c (ctanh, qnan_value, 0, qnan_value, 0.0),
7762     TEST_c_c (ctanh, qnan_value, minus_zero, qnan_value, minus_zero),
7763
7764     TEST_c_c (ctanh, qnan_value, 0.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7765     TEST_c_c (ctanh, qnan_value, -4.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7766
7767     TEST_c_c (ctanh, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7768     TEST_c_c (ctanh, 5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7769     TEST_c_c (ctanh, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7770     TEST_c_c (ctanh, -0.25, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7771
7772     TEST_c_c (ctanh, qnan_value, qnan_value, qnan_value, qnan_value),
7773
7774     TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0),
7775
7776     TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L),
7777     TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L),
7778
7779     TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L, UNDERFLOW_EXCEPTION_FLOAT),
7780     TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L, UNDERFLOW_EXCEPTION_FLOAT),
7781
7782 #ifndef TEST_FLOAT
7783     TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
7784     TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L, UNDERFLOW_EXCEPTION_DOUBLE),
7785 #endif
7786
7787 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7788     TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L, UNDERFLOW_EXCEPTION),
7789     TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L, UNDERFLOW_EXCEPTION),
7790 #endif
7791
7792     TEST_c_c (ctanh, 0, 0x3.243f6cp-1, 0.0, -2.287733242885645987394874673945769518150e7L),
7793
7794     TEST_c_c (ctanh, 1, 0x1p127, 0.9101334047676183761532873794426475906201L, 0.2446359391192790896381501310437708987204L),
7795
7796 #ifndef TEST_FLOAT
7797     TEST_c_c (ctanh, 1, 0x1p1023, 0.8786063118883068695462540226219865087189L, -0.2254627924997545057926782581695274244229L),
7798 #endif
7799
7800 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7801     TEST_c_c (ctanh, 1, 0x1p16383L, 0.8133818522051542536316746743877629761488L, 0.1608598776370396607204448234354670036772L),
7802 #endif
7803
7804     TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero, UNDERFLOW_EXCEPTION),
7805     TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero, UNDERFLOW_EXCEPTION),
7806     TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero, UNDERFLOW_EXCEPTION),
7807     TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero, UNDERFLOW_EXCEPTION),
7808     END_DATA (ctanh)
7809   };
7810
7811 static void
7812 ctanh_test (void)
7813 {
7814   errno = 0;
7815   FUNC(ctanh) (BUILD_COMPLEX (0, 0));
7816   if (errno == ENOSYS)
7817     /* Function not implemented.  */
7818     return;
7819
7820   START (ctanh);
7821   RUN_TEST_LOOP_c_c (ctanh, ctanh_test_data, );
7822   END (ctanh, complex);
7823 }
7824
7825
7826 static const struct test_c_c_data ctanh_tonearest_test_data[] =
7827   {
7828     START_DATA (ctanh_tonearest),
7829     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7830
7831 #ifndef TEST_FLOAT
7832     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7833 #endif
7834
7835 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7836     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7837 #endif
7838     END_DATA (ctanh_tonearest)
7839   };
7840
7841 static void
7842 ctanh_test_tonearest (void)
7843 {
7844   errno = 0;
7845   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7846   if (errno == ENOSYS)
7847     /* Function not implemented.  */
7848     return;
7849
7850   START (ctanh_tonearest);
7851   RUN_TEST_LOOP_c_c (ctanh, ctanh_tonearest_test_data, FE_TONEAREST);
7852   END (ctanh_tonearest, complex);
7853 }
7854
7855
7856 static const struct test_c_c_data ctanh_towardzero_test_data[] =
7857   {
7858     START_DATA (ctanh_towardzero),
7859     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7860
7861 #ifndef TEST_FLOAT
7862     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7863 #endif
7864
7865 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7866     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7867 #endif
7868     END_DATA (ctanh_towardzero)
7869   };
7870
7871 static void
7872 ctanh_test_towardzero (void)
7873 {
7874   errno = 0;
7875   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7876   if (errno == ENOSYS)
7877     /* Function not implemented.  */
7878     return;
7879
7880   START (ctanh_towardzero);
7881   RUN_TEST_LOOP_c_c (ctanh, ctanh_towardzero_test_data, FE_TOWARDZERO);
7882   END (ctanh_towardzero, complex);
7883 }
7884
7885
7886 static const struct test_c_c_data ctanh_downward_test_data[] =
7887   {
7888     START_DATA (ctanh_downward),
7889     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7890
7891 #ifndef TEST_FLOAT
7892     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7893 #endif
7894
7895 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7896     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7897 #endif
7898     END_DATA (ctanh_downward)
7899   };
7900
7901 static void
7902 ctanh_test_downward (void)
7903 {
7904   errno = 0;
7905   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7906   if (errno == ENOSYS)
7907     /* Function not implemented.  */
7908     return;
7909
7910   START (ctanh_downward);
7911   RUN_TEST_LOOP_c_c (ctanh, ctanh_downward_test_data, FE_DOWNWARD);
7912   END (ctanh_downward, complex);
7913 }
7914
7915
7916 static const struct test_c_c_data ctanh_upward_test_data[] =
7917   {
7918     START_DATA (ctanh_upward),
7919     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7920
7921 #ifndef TEST_FLOAT
7922     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7923 #endif
7924
7925 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7926     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7927 #endif
7928     END_DATA (ctanh_upward)
7929   };
7930
7931 static void
7932 ctanh_test_upward (void)
7933 {
7934   errno = 0;
7935   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7936   if (errno == ENOSYS)
7937     /* Function not implemented.  */
7938     return;
7939
7940   START (ctanh_upward);
7941   RUN_TEST_LOOP_c_c (ctanh, ctanh_upward_test_data, FE_UPWARD);
7942   END (ctanh_upward, complex);
7943 }
7944
7945
7946 static const struct test_f_f_data erf_test_data[] =
7947   {
7948     START_DATA (erf),
7949     TEST_f_f (erf, 0, 0),
7950     TEST_f_f (erf, minus_zero, minus_zero),
7951     TEST_f_f (erf, plus_infty, 1),
7952     TEST_f_f (erf, minus_infty, -1),
7953     TEST_f_f (erf, qnan_value, qnan_value),
7954
7955     TEST_f_f (erf, 0.125L, 0.140316204801333817393029446521623398L),
7956     TEST_f_f (erf, 0.75L, 0.711155633653515131598937834591410777L),
7957     TEST_f_f (erf, 1.25L, 0.922900128256458230136523481197281140L),
7958     TEST_f_f (erf, 2.0L, 0.995322265018952734162069256367252929L),
7959     TEST_f_f (erf, 4.125L, 0.999999994576599200434933994687765914L),
7960     TEST_f_f (erf, 27.0L, 1.0L),
7961     END_DATA (erf)
7962   };
7963
7964 static void
7965 erf_test (void)
7966 {
7967   errno = 0;
7968   FUNC(erf) (0);
7969   if (errno == ENOSYS)
7970     /* Function not implemented.  */
7971     return;
7972
7973   START (erf);
7974   RUN_TEST_LOOP_f_f (erf, erf_test_data, );
7975   END (erf);
7976 }
7977
7978
7979 static const struct test_f_f_data erfc_test_data[] =
7980   {
7981     START_DATA (erfc),
7982     TEST_f_f (erfc, plus_infty, 0.0),
7983     TEST_f_f (erfc, minus_infty, 2.0),
7984     TEST_f_f (erfc, 0.0, 1.0),
7985     TEST_f_f (erfc, minus_zero, 1.0),
7986     TEST_f_f (erfc, qnan_value, qnan_value),
7987
7988     TEST_f_f (erfc, 0.125L, 0.859683795198666182606970553478376602L),
7989     TEST_f_f (erfc, 0.75L, 0.288844366346484868401062165408589223L),
7990     TEST_f_f (erfc, 1.25L, 0.0770998717435417698634765188027188596L),
7991     TEST_f_f (erfc, 2.0L, 0.00467773498104726583793074363274707139L),
7992     TEST_f_f (erfc, 0x1.f7303cp+1L, 2.705500297238986897105236321218861842255e-8L),
7993     TEST_f_f (erfc, 4.125L, 0.542340079956506600531223408575531062e-8L),
7994     TEST_f_f (erfc, 0x1.ffa002p+2L, 1.233585992097580296336099501489175967033e-29L),
7995     TEST_f_f (erfc, 0x1.ffffc8p+2L, 1.122671365033056305522366683719541099329e-29L),
7996 #ifdef TEST_LDOUBLE
7997     /* The result can only be represented in long double.  */
7998 # if LDBL_MIN_10_EXP < -319
7999     TEST_f_f (erfc, 27.0L, 0.523704892378925568501606768284954709e-318L),
8000 # endif
8001 # if LDBL_MANT_DIG >= 106
8002     TEST_f_f (erfc, 0x1.ffff56789abcdef0123456789a8p+2L, 1.123161416304655390092138725253789378459e-29L),
8003 # endif
8004 #endif
8005     END_DATA (erfc)
8006   };
8007
8008 static void
8009 erfc_test (void)
8010 {
8011   errno = 0;
8012   FUNC(erfc) (0);
8013   if (errno == ENOSYS)
8014     /* Function not implemented.  */
8015     return;
8016
8017   START (erfc);
8018   RUN_TEST_LOOP_f_f (erfc, erfc_test_data, );
8019   END (erfc);
8020 }
8021
8022
8023 static const struct test_f_f_data exp_test_data[] =
8024   {
8025     START_DATA (exp),
8026     TEST_f_f (exp, 0, 1),
8027     TEST_f_f (exp, minus_zero, 1),
8028
8029 #ifndef TEST_INLINE
8030     TEST_f_f (exp, plus_infty, plus_infty),
8031     TEST_f_f (exp, minus_infty, 0),
8032 #endif
8033     TEST_f_f (exp, qnan_value, qnan_value),
8034     TEST_f_f (exp, 1, M_El),
8035
8036     TEST_f_f (exp, 2, M_E2l),
8037     TEST_f_f (exp, 3, M_E3l),
8038     TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L),
8039     TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L),
8040     TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L),
8041 #ifndef TEST_FLOAT
8042     TEST_f_f (exp, 709.75L, 1.739836873264160557698252711673830393864768e+308L),
8043 #endif
8044 #if defined TEST_LDOUBLE && __LDBL_MAX_EXP__ > 1024
8045     /* The result can only be represented in sane long double.  */
8046     TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L),
8047 #endif
8048
8049 #if !(defined TEST_LDOUBLE && LDBL_MAX_EXP > 1024)
8050     TEST_f_f (exp, 710, plus_infty, OVERFLOW_EXCEPTION),
8051     TEST_f_f (exp, -1234, plus_zero, UNDERFLOW_EXCEPTION),
8052 #endif
8053     TEST_f_f (exp, 1e5, plus_infty, OVERFLOW_EXCEPTION),
8054     TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION),
8055     TEST_f_f (exp, -max_value, 0, UNDERFLOW_EXCEPTION),
8056     END_DATA (exp)
8057   };
8058
8059 static void
8060 exp_test (void)
8061 {
8062   errno = 0;
8063   FUNC(exp) (0);
8064   if (errno == ENOSYS)
8065     /* Function not implemented.  */
8066     return;
8067
8068   START (exp);
8069   RUN_TEST_LOOP_f_f (exp, exp_test_data, );
8070   END (exp);
8071 }
8072
8073
8074 static const struct test_f_f_data exp_tonearest_test_data[] =
8075   {
8076     START_DATA (exp_tonearest),
8077     TEST_f_f (exp, 1, M_El),
8078     TEST_f_f (exp, 2, M_E2l),
8079     TEST_f_f (exp, 3, M_E3l),
8080     END_DATA (exp_tonearest)
8081   };
8082
8083 static void
8084 exp_test_tonearest (void)
8085 {
8086   errno = 0;
8087   FUNC(exp) (0);
8088   if (errno == ENOSYS)
8089     /* Function not implemented.  */
8090     return;
8091
8092   START (exp_tonearest);
8093   RUN_TEST_LOOP_f_f (exp, exp_tonearest_test_data, FE_TONEAREST);
8094   END (exp_tonearest);
8095 }
8096
8097
8098 static const struct test_f_f_data exp_towardzero_test_data[] =
8099   {
8100     START_DATA (exp_towardzero),
8101     TEST_f_f (exp, 1, M_El),
8102     TEST_f_f (exp, 2, M_E2l),
8103     TEST_f_f (exp, 3, M_E3l),
8104     END_DATA (exp_towardzero)
8105   };
8106
8107 static void
8108 exp_test_towardzero (void)
8109 {
8110   errno = 0;
8111   FUNC(exp) (0);
8112   if (errno == ENOSYS)
8113     /* Function not implemented.  */
8114     return;
8115
8116   START (exp_towardzero);
8117   RUN_TEST_LOOP_f_f (exp, exp_towardzero_test_data, FE_TOWARDZERO);
8118   END (exp_towardzero);
8119 }
8120
8121
8122 static const struct test_f_f_data exp_downward_test_data[] =
8123   {
8124     START_DATA (exp_downward),
8125     TEST_f_f (exp, 1, M_El),
8126     TEST_f_f (exp, 2, M_E2l),
8127     TEST_f_f (exp, 3, M_E3l),
8128     END_DATA (exp_downward)
8129   };
8130
8131 static void
8132 exp_test_downward (void)
8133 {
8134   errno = 0;
8135   FUNC(exp) (0);
8136   if (errno == ENOSYS)
8137     /* Function not implemented.  */
8138     return;
8139
8140   START (exp_downward);
8141   RUN_TEST_LOOP_f_f (exp, exp_downward_test_data, FE_DOWNWARD);
8142   END (exp_downward);
8143 }
8144
8145
8146 static const struct test_f_f_data exp_upward_test_data[] =
8147   {
8148     START_DATA (exp_upward),
8149     TEST_f_f (exp, 1, M_El),
8150     TEST_f_f (exp, 2, M_E2l),
8151     TEST_f_f (exp, 3, M_E3l),
8152     END_DATA (exp_upward)
8153   };
8154
8155 static void
8156 exp_test_upward (void)
8157 {
8158   errno = 0;
8159   FUNC(exp) (0);
8160   if (errno == ENOSYS)
8161     /* Function not implemented.  */
8162     return;
8163
8164   START (exp_upward);
8165   RUN_TEST_LOOP_f_f (exp, exp_upward_test_data, FE_UPWARD);
8166   END (exp_upward);
8167 }
8168
8169
8170 static const struct test_f_f_data exp10_test_data[] =
8171   {
8172     START_DATA (exp10),
8173     TEST_f_f (exp10, 0, 1),
8174     TEST_f_f (exp10, minus_zero, 1),
8175
8176     TEST_f_f (exp10, plus_infty, plus_infty),
8177     TEST_f_f (exp10, minus_infty, 0),
8178     TEST_f_f (exp10, qnan_value, qnan_value),
8179     TEST_f_f (exp10, 3, 1000),
8180     TEST_f_f (exp10, -1, 0.1L),
8181     TEST_f_f (exp10, 36, 1.0e36L),
8182     TEST_f_f (exp10, -36, 1.0e-36L),
8183 #ifndef TEST_FLOAT
8184     TEST_f_f (exp10, 305, 1.0e305L),
8185     TEST_f_f (exp10, -305, 1.0e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
8186 #endif
8187 #if defined TEST_LDOUBLE && LDBL_MAX_10_EXP >= 4932
8188     TEST_f_f (exp10, 4932, 1.0e4932L),
8189     TEST_f_f (exp10, -4932, 1.0e-4932L, UNDERFLOW_EXCEPTION),
8190 #endif
8191     TEST_f_f (exp10, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8192     TEST_f_f (exp10, -1e6, 0, UNDERFLOW_EXCEPTION),
8193     TEST_f_f (exp10, max_value, plus_infty, OVERFLOW_EXCEPTION),
8194     TEST_f_f (exp10, -max_value, 0, UNDERFLOW_EXCEPTION),
8195     TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L),
8196     END_DATA (exp10)
8197   };
8198
8199 static void
8200 exp10_test (void)
8201 {
8202   errno = 0;
8203   FUNC(exp10) (0);
8204   if (errno == ENOSYS)
8205     /* Function not implemented.  */
8206     return;
8207
8208   START (exp10);
8209   RUN_TEST_LOOP_f_f (exp10, exp10_test_data, );
8210   END (exp10);
8211 }
8212
8213
8214 static const struct test_f_f_data exp2_test_data[] =
8215   {
8216     START_DATA (exp2),
8217     TEST_f_f (exp2, 0, 1),
8218     TEST_f_f (exp2, minus_zero, 1),
8219     TEST_f_f (exp2, plus_infty, plus_infty),
8220     TEST_f_f (exp2, minus_infty, 0),
8221     TEST_f_f (exp2, qnan_value, qnan_value),
8222
8223     TEST_f_f (exp2, 10, 1024),
8224     TEST_f_f (exp2, -1, 0.5),
8225     TEST_f_f (exp2, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8226     TEST_f_f (exp2, -1e6, 0, UNDERFLOW_EXCEPTION),
8227     TEST_f_f (exp2, max_value, plus_infty, OVERFLOW_EXCEPTION),
8228     TEST_f_f (exp2, -max_value, 0, UNDERFLOW_EXCEPTION),
8229     TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L),
8230
8231     TEST_f_f (exp2, 100.5, 1.792728671193156477399422023278661496394e+30L),
8232     TEST_f_f (exp2, 127, 0x1p127),
8233     TEST_f_f (exp2, -149, 0x1p-149),
8234
8235 #ifndef TEST_FLOAT
8236     TEST_f_f (exp2, 1000.25, 1.274245659452564874772384918171765416737e+301L),
8237     TEST_f_f (exp2, 1023, 0x1p1023),
8238     TEST_f_f (exp2, -1074, 0x1p-1074),
8239 #endif
8240
8241 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8242     TEST_f_f (exp2, 16383, 0x1p16383L),
8243     TEST_f_f (exp2, -16400, 0x1p-16400L),
8244 #endif
8245     END_DATA (exp2)
8246   };
8247
8248 static void
8249 exp2_test (void)
8250 {
8251   errno = 0;
8252   FUNC(exp2) (0);
8253   if (errno == ENOSYS)
8254     /* Function not implemented.  */
8255     return;
8256
8257   START (exp2);
8258   RUN_TEST_LOOP_f_f (exp2, exp2_test_data, );
8259   END (exp2);
8260 }
8261
8262
8263 static const struct test_f_f_data expm1_test_data[] =
8264   {
8265     START_DATA (expm1),
8266     TEST_f_f (expm1, 0, 0),
8267     TEST_f_f (expm1, minus_zero, minus_zero),
8268
8269 #ifndef TEST_INLINE
8270     TEST_f_f (expm1, plus_infty, plus_infty),
8271     TEST_f_f (expm1, minus_infty, -1),
8272 #endif
8273     TEST_f_f (expm1, qnan_value, qnan_value),
8274
8275     TEST_f_f (expm1, 1, M_El - 1.0),
8276     TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L),
8277
8278     TEST_f_f (expm1, 50.0L, 5.1847055285870724640864533229334853848275e+21L),
8279
8280 #ifndef TEST_FLOAT
8281     TEST_f_f (expm1, 127.0L, 1.4302079958348104463583671072905261080748e+55L),
8282     TEST_f_f (expm1, 500.0L, 1.4035922178528374107397703328409120821806e+217L),
8283 #endif
8284
8285 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8286     TEST_f_f (expm1, 11356.25L, 9.05128237311923300051376115753226014206e+4931L),
8287 #endif
8288
8289     TEST_f_f (expm1, -10.0, -0.9999546000702375151484644084844394493898L),
8290     TEST_f_f (expm1, -16.0, -0.9999998874648252807408854862248209398728L),
8291     TEST_f_f (expm1, -17.0, -0.9999999586006228121483334034897228104472L),
8292     TEST_f_f (expm1, -18.0, -0.9999999847700202552873715638633707664826L),
8293     TEST_f_f (expm1, -36.0, -0.9999999999999997680477169756430611687736L),
8294     TEST_f_f (expm1, -37.0, -0.9999999999999999146695237425593420572195L),
8295     TEST_f_f (expm1, -38.0, -0.9999999999999999686086720795197037129104L),
8296     TEST_f_f (expm1, -44.0, -0.9999999999999999999221886775886620348429L),
8297     TEST_f_f (expm1, -45.0, -0.9999999999999999999713748141945060635553L),
8298     TEST_f_f (expm1, -46.0, -0.9999999999999999999894693826424461876212L),
8299     TEST_f_f (expm1, -73.0, -0.9999999999999999999999999999999802074012L),
8300     TEST_f_f (expm1, -74.0, -0.9999999999999999999999999999999927187098L),
8301     TEST_f_f (expm1, -75.0, -0.9999999999999999999999999999999973213630L),
8302     TEST_f_f (expm1, -78.0, -0.9999999999999999999999999999999998666385L),
8303     TEST_f_f (expm1, -79.0, -0.9999999999999999999999999999999999509391L),
8304     TEST_f_f (expm1, -80.0, -0.9999999999999999999999999999999999819515L),
8305     TEST_f_f (expm1, -100.0, -1.0),
8306     TEST_f_f (expm1, -1000.0, -1.0),
8307     TEST_f_f (expm1, -10000.0, -1.0),
8308     TEST_f_f (expm1, -100000.0, -1.0),
8309
8310     TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8311     TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION),
8312     TEST_f_f (expm1, -max_value, -1),
8313     END_DATA (expm1)
8314   };
8315
8316 static void
8317 expm1_test (void)
8318 {
8319   errno = 0;
8320   FUNC(expm1) (0);
8321   if (errno == ENOSYS)
8322     /* Function not implemented.  */
8323     return;
8324
8325   START (expm1);
8326   RUN_TEST_LOOP_f_f (expm1, expm1_test_data, );
8327   END (expm1);
8328 }
8329
8330
8331 static const struct test_f_f_data fabs_test_data[] =
8332   {
8333     START_DATA (fabs),
8334     TEST_f_f (fabs, 0, 0),
8335     TEST_f_f (fabs, minus_zero, 0),
8336
8337     TEST_f_f (fabs, plus_infty, plus_infty),
8338     TEST_f_f (fabs, minus_infty, plus_infty),
8339     TEST_f_f (fabs, qnan_value, qnan_value),
8340
8341     TEST_f_f (fabs, 38.0, 38.0),
8342     TEST_f_f (fabs, -M_El, M_El),
8343     END_DATA (fabs)
8344   };
8345
8346 static void
8347 fabs_test (void)
8348 {
8349   START (fabs);
8350   RUN_TEST_LOOP_f_f (fabs, fabs_test_data, );
8351   END (fabs);
8352 }
8353
8354
8355 static const struct test_ff_f_data fdim_test_data[] =
8356   {
8357     START_DATA (fdim),
8358     TEST_ff_f (fdim, 0, 0, 0),
8359     TEST_ff_f (fdim, 9, 0, 9),
8360     TEST_ff_f (fdim, 0, 9, 0),
8361     TEST_ff_f (fdim, -9, 0, 0),
8362     TEST_ff_f (fdim, 0, -9, 9),
8363
8364     TEST_ff_f (fdim, plus_infty, 9, plus_infty),
8365     TEST_ff_f (fdim, plus_infty, -9, plus_infty),
8366     TEST_ff_f (fdim, minus_infty, 9, 0),
8367     TEST_ff_f (fdim, minus_infty, -9, 0),
8368     TEST_ff_f (fdim, 9, minus_infty, plus_infty),
8369     TEST_ff_f (fdim, -9, minus_infty, plus_infty),
8370     TEST_ff_f (fdim, 9, plus_infty, 0),
8371     TEST_ff_f (fdim, -9, plus_infty, 0),
8372
8373     TEST_ff_f (fdim, 0, qnan_value, qnan_value),
8374     TEST_ff_f (fdim, 9, qnan_value, qnan_value),
8375     TEST_ff_f (fdim, -9, qnan_value, qnan_value),
8376     TEST_ff_f (fdim, qnan_value, 9, qnan_value),
8377     TEST_ff_f (fdim, qnan_value, -9, qnan_value),
8378     TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value),
8379     TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value),
8380     TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value),
8381     TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value),
8382     TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value),
8383
8384     TEST_ff_f (fdim, plus_infty, plus_infty, 0),
8385     END_DATA (fdim)
8386   };
8387
8388 static void
8389 fdim_test (void)
8390 {
8391   START (fdim);
8392   RUN_TEST_LOOP_ff_f (fdim, fdim_test_data, );
8393   END (fdim);
8394 }
8395
8396
8397 static void
8398 finite_test (void)
8399 {
8400   START (finite);
8401
8402   TEST_f_b (finite, 0, 1);
8403   TEST_f_b (finite, minus_zero, 1);
8404   TEST_f_b (finite, 10, 1);
8405   TEST_f_b (finite, min_subnorm_value, 1);
8406   TEST_f_b (finite, plus_infty, 0);
8407   TEST_f_b (finite, minus_infty, 0);
8408   TEST_f_b (finite, qnan_value, 0);
8409
8410   END (finite);
8411 }
8412
8413
8414 static const struct test_f_f_data floor_test_data[] =
8415   {
8416     START_DATA (floor),
8417     TEST_f_f (floor, 0.0, 0.0),
8418     TEST_f_f (floor, minus_zero, minus_zero),
8419     TEST_f_f (floor, plus_infty, plus_infty),
8420     TEST_f_f (floor, minus_infty, minus_infty),
8421     TEST_f_f (floor, qnan_value, qnan_value),
8422
8423     TEST_f_f (floor, M_PIl, 3.0),
8424     TEST_f_f (floor, -M_PIl, -4.0),
8425
8426     TEST_f_f (floor, 0.1, 0.0),
8427     TEST_f_f (floor, 0.25, 0.0),
8428     TEST_f_f (floor, 0.625, 0.0),
8429     TEST_f_f (floor, -0.1, -1.0),
8430     TEST_f_f (floor, -0.25, -1.0),
8431     TEST_f_f (floor, -0.625, -1.0),
8432
8433 #ifdef TEST_LDOUBLE
8434     /* The result can only be represented in long double.  */
8435     TEST_f_f (floor, 4503599627370495.5L, 4503599627370495.0L),
8436     TEST_f_f (floor, 4503599627370496.25L, 4503599627370496.0L),
8437     TEST_f_f (floor, 4503599627370496.5L, 4503599627370496.0L),
8438     TEST_f_f (floor, 4503599627370496.75L, 4503599627370496.0L),
8439     TEST_f_f (floor, 4503599627370497.5L, 4503599627370497.0L),
8440 # if LDBL_MANT_DIG > 100
8441     TEST_f_f (floor, 4503599627370494.5000000000001L, 4503599627370494.0L),
8442     TEST_f_f (floor, 4503599627370495.5000000000001L, 4503599627370495.0L),
8443     TEST_f_f (floor, 4503599627370496.5000000000001L, 4503599627370496.0L),
8444 # endif
8445
8446     TEST_f_f (floor, -4503599627370495.5L, -4503599627370496.0L),
8447     TEST_f_f (floor, -4503599627370496.25L, -4503599627370497.0L),
8448     TEST_f_f (floor, -4503599627370496.5L, -4503599627370497.0L),
8449     TEST_f_f (floor, -4503599627370496.75L, -4503599627370497.0L),
8450     TEST_f_f (floor, -4503599627370497.5L, -4503599627370498.0L),
8451 # if LDBL_MANT_DIG > 100
8452     TEST_f_f (floor, -4503599627370494.5000000000001L, -4503599627370495.0L),
8453     TEST_f_f (floor, -4503599627370495.5000000000001L, -4503599627370496.0L),
8454     TEST_f_f (floor, -4503599627370496.5000000000001L, -4503599627370497.0L),
8455 # endif
8456
8457     TEST_f_f (floor, 9007199254740991.5L, 9007199254740991.0L),
8458     TEST_f_f (floor, 9007199254740992.25L, 9007199254740992.0L),
8459     TEST_f_f (floor, 9007199254740992.5L, 9007199254740992.0L),
8460     TEST_f_f (floor, 9007199254740992.75L, 9007199254740992.0L),
8461     TEST_f_f (floor, 9007199254740993.5L, 9007199254740993.0L),
8462
8463 # if LDBL_MANT_DIG > 100
8464     TEST_f_f (floor, 9007199254740991.0000000000001L, 9007199254740991.0L),
8465     TEST_f_f (floor, 9007199254740992.0000000000001L, 9007199254740992.0L),
8466     TEST_f_f (floor, 9007199254740993.0000000000001L, 9007199254740993.0L),
8467     TEST_f_f (floor, 9007199254740991.5000000000001L, 9007199254740991.0L),
8468     TEST_f_f (floor, 9007199254740992.5000000000001L, 9007199254740992.0L),
8469     TEST_f_f (floor, 9007199254740993.5000000000001L, 9007199254740993.0L),
8470 # endif
8471
8472     TEST_f_f (floor, -9007199254740991.5L, -9007199254740992.0L),
8473     TEST_f_f (floor, -9007199254740992.25L, -9007199254740993.0L),
8474     TEST_f_f (floor, -9007199254740992.5L, -9007199254740993.0L),
8475     TEST_f_f (floor, -9007199254740992.75L, -9007199254740993.0L),
8476     TEST_f_f (floor, -9007199254740993.5L, -9007199254740994.0L),
8477
8478 # if LDBL_MANT_DIG > 100
8479     TEST_f_f (floor, -9007199254740991.0000000000001L, -9007199254740992.0L),
8480     TEST_f_f (floor, -9007199254740992.0000000000001L, -9007199254740993.0L),
8481     TEST_f_f (floor, -9007199254740993.0000000000001L, -9007199254740994.0L),
8482     TEST_f_f (floor, -9007199254740991.5000000000001L, -9007199254740992.0L),
8483     TEST_f_f (floor, -9007199254740992.5000000000001L, -9007199254740993.0L),
8484     TEST_f_f (floor, -9007199254740993.5000000000001L, -9007199254740994.0L),
8485 # endif
8486
8487     TEST_f_f (floor, 72057594037927935.5L, 72057594037927935.0L),
8488     TEST_f_f (floor, 72057594037927936.25L, 72057594037927936.0L),
8489     TEST_f_f (floor, 72057594037927936.5L, 72057594037927936.0L),
8490     TEST_f_f (floor, 72057594037927936.75L, 72057594037927936.0L),
8491     TEST_f_f (floor, 72057594037927937.5L, 72057594037927937.0L),
8492
8493     TEST_f_f (floor, -72057594037927935.5L, -72057594037927936.0L),
8494     TEST_f_f (floor, -72057594037927936.25L, -72057594037927937.0L),
8495     TEST_f_f (floor, -72057594037927936.5L, -72057594037927937.0L),
8496     TEST_f_f (floor, -72057594037927936.75L, -72057594037927937.0L),
8497     TEST_f_f (floor, -72057594037927937.5L, -72057594037927938.0L),
8498
8499     TEST_f_f (floor, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
8500     TEST_f_f (floor, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
8501     TEST_f_f (floor, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
8502     TEST_f_f (floor, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
8503     TEST_f_f (floor, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
8504
8505     TEST_f_f (floor, 0xf.ffffffffffffff8p+47L, 0xf.fffffffffffep+47L),
8506     TEST_f_f (floor, -0x8.000000000000004p+48L, -0x8.000000000001p+48L),
8507 #endif
8508     END_DATA (floor)
8509   };
8510
8511 static void
8512 floor_test (void)
8513 {
8514   START (floor);
8515   RUN_TEST_LOOP_f_f (floor, floor_test_data, );
8516   END (floor);
8517 }
8518
8519
8520 static const struct test_fff_f_data fma_test_data[] =
8521   {
8522     START_DATA (fma),
8523     TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0),
8524     TEST_fff_f (fma, qnan_value, 2.0, 3.0, qnan_value),
8525     TEST_fff_f (fma, 1.0, qnan_value, 3.0, qnan_value),
8526     TEST_fff_f (fma, 1.0, 2.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8527     TEST_fff_f (fma, plus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8528     TEST_fff_f (fma, minus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8529     TEST_fff_f (fma, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8530     TEST_fff_f (fma, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8531     TEST_fff_f (fma, plus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8532     TEST_fff_f (fma, minus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8533     TEST_fff_f (fma, 0.0, plus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8534     TEST_fff_f (fma, 0.0, minus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8535
8536     TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8537     TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8538     TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8539     TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8540     TEST_fff_f (fma, plus_infty, 3.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8541     TEST_fff_f (fma, minus_infty, -7.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8542     TEST_fff_f (fma, -13.5L, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8543     TEST_fff_f (fma, minus_infty, 7.5L, plus_infty, qnan_value, INVALID_EXCEPTION),
8544
8545     TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L),
8546
8547     TEST_fff_f (fma, -max_value, -max_value, minus_infty, minus_infty),
8548     TEST_fff_f (fma, max_value / 2, max_value / 2, minus_infty, minus_infty),
8549     TEST_fff_f (fma, -max_value, max_value, plus_infty, plus_infty),
8550     TEST_fff_f (fma, max_value / 2, -max_value / 4, plus_infty, plus_infty),
8551     TEST_fff_f (fma, plus_infty, 4, plus_infty, plus_infty),
8552     TEST_fff_f (fma, 2, minus_infty, minus_infty, minus_infty),
8553     TEST_fff_f (fma, minus_infty, minus_infty, plus_infty, plus_infty),
8554     TEST_fff_f (fma, plus_infty, minus_infty, minus_infty, minus_infty),
8555
8556     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8557     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8558     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8559     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8560     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8561     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8562     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8563     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8564     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8565     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8566     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8567     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8568     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8569     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8570     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8571     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8572     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8573     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8574     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8575     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8576     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8577     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8578     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8579     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8580
8581     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8582     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8583     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8584     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8585
8586     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8587     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8588     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8589     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8590     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8591     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8592     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8593     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8594
8595     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8596     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8597     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8598     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8599     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8600     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8601     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8602     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8603
8604 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8605     TEST_fff_f (fma, 0x1.7ff8p+13, 0x1.000002p+0, 0x1.ffffp-24, 0x1.7ff802p+13),
8606     TEST_fff_f (fma, 0x1.fffp+0, 0x1.00001p+0, -0x1.fffp+0, 0x1.fffp-20),
8607     TEST_fff_f (fma, 0x1.9abcdep+127, 0x0.9abcdep-126, -0x1.f08948p+0, 0x1.bb421p-25),
8608     TEST_fff_f (fma, 0x1.9abcdep+100, 0x0.9abcdep-126, -0x1.f08948p-27, 0x1.bb421p-52),
8609     TEST_fff_f (fma, 0x1.fffffep+127, 0x1.001p+0, -0x1.fffffep+127, 0x1.fffffep+115),
8610     TEST_fff_f (fma, -0x1.fffffep+127, 0x1.fffffep+0, 0x1.fffffep+127, -0x1.fffffap+127),
8611     TEST_fff_f (fma, 0x1.fffffep+127, 2.0, -0x1.fffffep+127, 0x1.fffffep+127),
8612     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8613     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8614     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8615     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8616     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8617     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8618     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8619     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8620     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8621     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
8622     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8623     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8624     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8625     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8626     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8627     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8628     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8629     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8630     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8631     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8632     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8633     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8634     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8635     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8636     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8637     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8638     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8639     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8640     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8641     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
8642     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8643     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8644     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8645     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
8646     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8647     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8648 #endif
8649 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8650     TEST_fff_f (fma, 0x1.7fp+13, 0x1.0000000000001p+0, 0x1.ffep-48, 0x1.7f00000000001p+13),
8651     TEST_fff_f (fma, 0x1.fffp+0, 0x1.0000000000001p+0, -0x1.fffp+0, 0x1.fffp-52),
8652     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, 0x1p-300, 1.0),
8653     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, -0x1p-300, 0x1.fffffffffffffp-1),
8654     TEST_fff_f (fma, 0x1.deadbeef2feedp+1023, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp+1, 0x1.0989687bc9da4p-53),
8655     TEST_fff_f (fma, 0x1.deadbeef2feedp+900, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp-122, 0x1.0989687bc9da4p-176),
8656     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 0x1.001p+0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1011),
8657     TEST_fff_f (fma, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+0, 0x1.fffffffffffffp+1023, -0x1.ffffffffffffdp+1023),
8658     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 2.0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023),
8659     TEST_fff_f (fma, 0x1.6a09e667f3bccp-538, 0x1.6a09e667f3bccp-538, 0.0, 0.0, UNDERFLOW_EXCEPTION),
8660     TEST_fff_f (fma, 0x1.deadbeef2feedp-495, 0x1.deadbeef2feedp-495, -0x1.bf86a5786a574p-989, 0x0.0000042625a1fp-1022, UNDERFLOW_EXCEPTION),
8661     TEST_fff_f (fma, 0x1.deadbeef2feedp-503, 0x1.deadbeef2feedp-503, -0x1.bf86a5786a574p-1005, 0x0.0000000004262p-1022, UNDERFLOW_EXCEPTION),
8662     TEST_fff_f (fma, 0x1p-537, 0x1p-538, 0x1p-1074, 0x0.0000000000002p-1022, UNDERFLOW_EXCEPTION),
8663     TEST_fff_f (fma, 0x1.7fffff8p-968, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000001p-1022, UNDERFLOW_EXCEPTION),
8664     TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022, UNDERFLOW_EXCEPTION),
8665     TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022, UNDERFLOW_EXCEPTION),
8666     TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022, UNDERFLOW_EXCEPTION),
8667     TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION),
8668     TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022, UNDERFLOW_EXCEPTION),
8669     TEST_fff_f (fma, -0x1.fffffffffffffp-711, 0x1.fffffffffffffp-275, 0x1.fffffe00007ffp-983, 0x1.7ffffe00007ffp-983),
8670     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8671     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8672     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8673     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8674     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8675     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8676     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8677     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8678     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8679     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
8680     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
8681     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8682     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8683     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8684     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8685     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8686     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8687     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8688     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8689     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8690     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8691     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8692     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8693     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8694     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8695     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8696     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8697     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8698     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8699     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8700     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8701     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8702     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8703     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
8704     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
8705     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8706 #endif
8707 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8708     TEST_fff_f (fma, -0x8.03fcp+3696L, 0xf.fffffffffffffffp-6140L, 0x8.3ffffffffffffffp-2450L, -0x8.01ecp-2440L),
8709     TEST_fff_f (fma, 0x9.fcp+2033L, -0x8.000e1f000ff800fp-3613L, -0xf.fffffffffffc0ffp-1579L, -0xd.fc119fb093ed092p-1577L),
8710     TEST_fff_f (fma, 0xc.7fc000003ffffffp-1194L, 0x8.1e0003fffffffffp+15327L, -0x8.fffep+14072L, 0xc.ae9f164020effffp+14136L),
8711     TEST_fff_f (fma, -0x8.0001fc000000003p+1798L, 0xcp-2230L, 0x8.f7e000000000007p-468L, -0xc.0002f9ffee10404p-429L),
8712     TEST_fff_f (fma, 0xc.0000000000007ffp+10130L, -0x8.000000000000001p+4430L, 0xc.07000000001ffffp+14513L, -0xb.fffffffffffd7e4p+14563L),
8713     TEST_fff_f (fma, 0xb.ffffp-4777L, 0x8.000000fffffffffp-11612L, -0x0.3800fff8p-16385L, 0x5.c7fe80c7ffeffffp-16385L, UNDERFLOW_EXCEPTION),
8714     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8715     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8716     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8717     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8718     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8719     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8720     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8721     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8722     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8723     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
8724     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
8725     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8726     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8727     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8728     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8729     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8730     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8731     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8732     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8733     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8734     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8735     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8736     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8737     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8738     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8739     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8740     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8741     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8742     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8743     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8744     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8745     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8746     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8747     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8748     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8749     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8750 #endif
8751 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8752     TEST_fff_f (fma, 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584L, -0x1.6b500daf0580d987f1bc0cadfcddp-13777L, 0x1.613cd91d9fed34b33820e5ab9d8dp-16378L, -0x1.3a79fb50eb9ce887cffa0f09bd9fp-16360L),
8753     TEST_fff_f (fma, -0x1.f949b880cacb0f0c61540105321dp-5954L, -0x1.3876cec84b4140f3bd6198731b7ep-10525L, -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382L, -0x0.a5dc1c6cfbc498c54fb0b5038abbp-16382L, UNDERFLOW_EXCEPTION),
8754     TEST_fff_f (fma, -0x1.0000fffffffffp-16221L, 0x1.0000001fffff8007fep-239L, 0x0.ff87ffffffffffffe000003fffffp-16382L, 0x0.ff87ffffffffffffdffc003bff7fp-16382L, UNDERFLOW_EXCEPTION),
8755     TEST_fff_f (fma, -0x1.ac79c9376ef447f3827c9e9de008p-2228L, -0x1.5ba830022b6139e21fbe7270cad8p-6314L, 0x1.e8282b6a26bb6a9daf5c8e73e9f9p-8616L, 0x1.22f14a0253878a730cd1aee373adp-8541L),
8756     TEST_fff_f (fma, -0x1.c69749ec574caaa2ab8e97ddb9f3p+2652L, 0x1.f34235ff9d095449c29b4831b62dp+3311L, 0x1.fbe4302df23354dbd0c4d3cfe606p+5879L, -0x1.bb473bfdfb7a6e18886ce6e57eafp+5964L),
8757     TEST_fff_f (fma, -0x1.ca8835fc6ecfb5398625fc891be5p-1686L, 0x1.621e1972bbe2180e5be9dd7d8df5p-7671L, -0x1.7d2d21b73b52cf20dec2a83902a4p-9395L, -0x1.3d2322191c9c88bc68a62ab8042cp-9356L),
8758     TEST_fff_f (fma, -0x1.55cff679ec49c2541fab41fc843ep-11819L, 0x1.e60e9f464f9e8df0509647c7c971p+12325L, 0x1.eaa2a7649d765c2f564f7a5beca7p+454L, -0x1.447e29fa7e406a285f4e350fcf86p+507L),
8759     TEST_fff_f (fma, 0x1.f0e7b1454908576f2537d863cf9bp+11432L, 0x1.cdce52f09d4ca76e68706f34b5d5p-1417L, -0x1.2e986187c70f146235ea2066e486p+9979L, 0x1.c030dad3cc5643f3dd0f5619f661p+10016L),
8760     TEST_fff_f (fma, 0x1.f102f7da4a57a3a4aab620e29452p-3098L, -0x1.cc06a4ff40248f9e2dcc4b6afd84p-11727L, 0x1.d512a11126b5ac8ed8973b8580c8p-14849L, -0x1.be8f1cf737ab4d1c31c54f5ec23bp-14824L),
8761     TEST_fff_f (fma, -0x1.fc47ac7434b993cd8dcb2b431f25p-3816L, 0x1.fbc9750da8468852d84558e1db6dp-5773L, -0x1.00a98abf783f75c40fe5b7a37d86p-9607L, -0x1.f81917b166f45e763cfcc057e2adp-9588L),
8762     TEST_fff_f (fma, 0x1.00000000000007ffffffffffffffp-9045L, -0x1.ffffffffffff80000001ffffffffp+4773L, -0x1.f8p-4316L, -0x1.00000000000f88000000fffffdffp-4271L),
8763     TEST_fff_f (fma, 0x1.4e922764c90701d4a2f21d01893dp-8683L, -0x1.955a12e2d7c9447c27fa022fc865p+212L, -0x1.e9634462eaef96528b90b6944578p-8521L, -0x1.08e1783184a371943d3598e10865p-8470L),
8764     TEST_fff_f (fma, 0x1.801181509c03bdbef10d6165588cp-15131L, 0x1.ad86f8e57d3d40bfa8007780af63p-368L, -0x1.6e9df0dab1c9f1d7a6043c390741p-15507L, 0x1.417c9b2b15e2ad57dc9e0e920844p-15498L),
8765     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8766     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8767     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8768     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8769     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8770     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8771     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8772     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8773     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8774     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
8775     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
8776     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8777     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8778     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8779     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8780     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8781     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8782     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8783     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8784     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8785     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8786     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8787     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8788     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8789     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8790     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8791     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8792     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8793     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8794     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8795     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8796     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8797     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8798     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8799     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8800     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8801 #endif
8802     END_DATA (fma)
8803   };
8804
8805 static void
8806 fma_test (void)
8807 {
8808   START (fma);
8809   RUN_TEST_LOOP_fff_f (fma, fma_test_data, );
8810   END (fma);
8811 }
8812
8813
8814 static const struct test_fff_f_data fma_towardzero_test_data[] =
8815   {
8816     START_DATA (fma_towardzero),
8817     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8818     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8819     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8820     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8821     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8822     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8823     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8824     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8825     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8826     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8827     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8828     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8829     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8830     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8831     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8832     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8833     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8834     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8835     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8836     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8837     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8838     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8839     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8840     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8841
8842     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8843     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8844     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8845     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8846
8847     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8848     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8849     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8850     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8851     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8852     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8853     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8854     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8855
8856 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8857     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8858     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8859     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8860     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8861     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8862     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8863     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8864     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8865 #endif
8866
8867 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8868     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8869     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8870     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8871     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8872     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8873     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8874     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8875     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8876     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8877     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8878     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
8879     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8880     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8881     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8882     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8883     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8884     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8885     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8886     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8887     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8888     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8889     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8890     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
8891     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8892     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8893     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8894     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8895     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8896     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8897     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8898     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
8899     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8900     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8901     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8902     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
8903     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8904 #endif
8905 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8906     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8907     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8908     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8909     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8910     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8911     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8912     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8913     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8914     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8915     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
8916     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
8917     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8918     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8919     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8920     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8921     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8922     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8923     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8924     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8925     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8926     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8927     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
8928     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
8929     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8930     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8931     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8932     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8933     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8934     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8935     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
8936     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
8937     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8938     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8939     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
8940     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
8941     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8942 #endif
8943 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8944     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8945     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8946     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8947     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8948     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8949     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8950     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8951     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8952     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8953     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8954     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8955     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8956     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8957     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8958     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8959     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8960     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8961     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8962     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8963     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8964     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8965     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
8966     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
8967     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8968     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8969     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8970     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8971     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8972     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8973     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8974     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8975     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8976     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8977     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
8978     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
8979     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8980 #endif
8981 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8982     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8983     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8984     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8985     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8986     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8987     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8988     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8989     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8990     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8991     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8992     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8993     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8994     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8995     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8996     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8997     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8998     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8999     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9000     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9001     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9002     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9003     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
9004     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
9005     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9006     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9007     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9008     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9009     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9010     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9011     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9012     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9013     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9014     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9015     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
9016     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
9017     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9018 #endif
9019     END_DATA (fma_towardzero)
9020   };
9021
9022 static void
9023 fma_test_towardzero (void)
9024 {
9025   START (fma_towardzero);
9026   RUN_TEST_LOOP_fff_f (fma, fma_towardzero_test_data, FE_TOWARDZERO);
9027   END (fma_towardzero);
9028 }
9029
9030
9031 static const struct test_fff_f_data fma_downward_test_data[] =
9032   {
9033     START_DATA (fma_downward),
9034     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
9035     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, minus_zero),
9036     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, minus_zero),
9037     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
9038     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, minus_zero),
9039     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
9040     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
9041     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, minus_zero),
9042     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
9043     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, minus_zero),
9044     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, minus_zero),
9045     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
9046     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, minus_zero),
9047     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
9048     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
9049     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, minus_zero),
9050     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
9051     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, minus_zero),
9052     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, minus_zero),
9053     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
9054     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, minus_zero),
9055     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
9056     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
9057     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, minus_zero),
9058
9059     TEST_fff_f (fma, 1.0, 1.0, -1.0, minus_zero),
9060     TEST_fff_f (fma, 1.0, -1.0, 1.0, minus_zero),
9061     TEST_fff_f (fma, -1.0, 1.0, 1.0, minus_zero),
9062     TEST_fff_f (fma, -1.0, -1.0, -1.0, minus_zero),
9063
9064     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
9065     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
9066     TEST_fff_f (fma, min_value, -min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
9067     TEST_fff_f (fma, min_value, -min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
9068     TEST_fff_f (fma, -min_value, min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
9069     TEST_fff_f (fma, -min_value, min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
9070     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
9071     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
9072
9073 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
9074     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
9075     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
9076     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
9077     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
9078     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
9079     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
9080     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
9081     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
9082 #endif
9083
9084 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
9085     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
9086     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00008p-127, UNDERFLOW_EXCEPTION),
9087     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9088     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9089     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9090     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
9091     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9092     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9093     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
9094     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
9095     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
9096     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1.000002p127),
9097     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
9098     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9099     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9100     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1.000002p-126),
9101     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9102     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
9103     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9104     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
9105     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
9106     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
9107     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
9108     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-148, UNDERFLOW_EXCEPTION),
9109     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
9110     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
9111     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
9112     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
9113     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
9114     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
9115     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
9116     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1.000002p127),
9117     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
9118     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
9119     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
9120     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1.000002p103),
9121 #endif
9122 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
9123     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
9124     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
9125     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9126     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9127     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9128     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
9129     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9130     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9131     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
9132     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
9133     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
9134     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1.0000000000001p1023),
9135     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
9136     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9137     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9138     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1.0000000000001p-1022),
9139     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9140     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9141     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9142     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
9143     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9144     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
9145     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9146     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1073, UNDERFLOW_EXCEPTION),
9147     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9148     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9149     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9150     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9151     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9152     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
9153     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9154     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1.0000000000001p1023),
9155     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
9156     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
9157     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
9158     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1.0000000000001p970),
9159 #endif
9160 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9161     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9162     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9163     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9164     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9165     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9166     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9167     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9168     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9169     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
9170     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
9171     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
9172     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1.0000000000000002p16383L),
9173     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
9174     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9175     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9176     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1.0000000000000002p-16382L),
9177     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9178     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9179     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9180     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9181     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9182     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
9183     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9184     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16444L, UNDERFLOW_EXCEPTION),
9185     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9186     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9187     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9188     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9189     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9190     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
9191     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9192     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1.0000000000000002p16383L),
9193     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9194     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
9195     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9196     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1.0000000000000002p16319L),
9197 #endif
9198 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9199     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9200     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9201     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9202     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9203     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9204     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9205     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9206     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9207     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
9208     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9209     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
9210     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9211     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
9212     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9213     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9214     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1.0000000000000000000000000001p-16382L),
9215     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9216     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9217     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9218     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9219     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9220     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
9221     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9222     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16493L, UNDERFLOW_EXCEPTION),
9223     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9224     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9225     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9226     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9227     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9228     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9229     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9230     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9231     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9232     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
9233     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9234     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1.0000000000000000000000000001p16319L),
9235 #endif
9236     END_DATA (fma_downward)
9237   };
9238
9239 static void
9240 fma_test_downward (void)
9241 {
9242   START (fma_downward);
9243   RUN_TEST_LOOP_fff_f (fma, fma_downward_test_data, FE_DOWNWARD);
9244   END (fma_downward);
9245 }
9246
9247
9248 static const struct test_fff_f_data fma_upward_test_data[] =
9249   {
9250     START_DATA (fma_upward),
9251     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
9252     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
9253     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
9254     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
9255     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
9256     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
9257     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
9258     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
9259     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
9260     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
9261     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
9262     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
9263     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
9264     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
9265     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
9266     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
9267     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
9268     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
9269     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
9270     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
9271     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
9272     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
9273     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
9274     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
9275
9276     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
9277     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
9278     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
9279     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
9280
9281     TEST_fff_f (fma, min_value, min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9282     TEST_fff_f (fma, min_value, min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9283     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9284     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9285     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9286     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9287     TEST_fff_f (fma, -min_value, -min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9288     TEST_fff_f (fma, -min_value, -min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9289
9290 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
9291     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9292     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9293     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9294     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9295     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9296     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9297     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9298     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9299 #endif
9300
9301 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
9302     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00008p-127, UNDERFLOW_EXCEPTION),
9303     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
9304     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9305     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9306     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9307     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9308     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9309     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9310     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1.000002p127),
9311     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
9312     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
9313     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
9314     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1.000002p-126),
9315     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9316     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9317     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
9318     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9319     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9320     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
9321     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9322     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-148, UNDERFLOW_EXCEPTION),
9323     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
9324     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
9325     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
9326     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
9327     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
9328     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
9329     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
9330     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1.000002p127),
9331     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
9332     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
9333     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
9334     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1.000002p103),
9335     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
9336     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
9337     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
9338 #endif
9339 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
9340     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
9341     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
9342     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9343     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9344     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9345     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9346     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9347     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9348     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1.0000000000001p1023),
9349     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
9350     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
9351     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
9352     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1.0000000000001p-1022),
9353     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9354     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9355     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
9356     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9357     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9358     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9359     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9360     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1073, UNDERFLOW_EXCEPTION),
9361     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9362     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
9363     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9364     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9365     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9366     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9367     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9368     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1.0000000000001p1023),
9369     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9370     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
9371     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9372     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1.0000000000001p970),
9373     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
9374     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
9375     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
9376 #endif
9377 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9378     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9379     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9380     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9381     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9382     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9383     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9384     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9385     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9386     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1.0000000000000002p16383L),
9387     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
9388     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9389     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
9390     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1.0000000000000002p-16382L),
9391     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9392     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9393     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
9394     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9395     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9396     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9397     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9398     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16444L, UNDERFLOW_EXCEPTION),
9399     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9400     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
9401     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9402     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9403     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9404     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9405     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9406     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1.0000000000000002p16383L),
9407     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9408     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9409     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9410     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1.0000000000000002p16319L),
9411     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9412     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
9413     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9414 #endif
9415 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9416     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9417     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9418     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9419     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9420     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9421     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9422     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9423     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9424     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9425     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
9426     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9427     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
9428     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1.0000000000000000000000000001p-16382L),
9429     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9430     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9431     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
9432     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9433     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9434     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9435     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9436     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16493L, UNDERFLOW_EXCEPTION),
9437     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9438     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
9439     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9440     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9441     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9442     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9443     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9444     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9445     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9446     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9447     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9448     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1.0000000000000000000000000001p16319L),
9449     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9450     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
9451     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9452 #endif
9453     END_DATA (fma_upward)
9454   };
9455
9456 static void
9457 fma_test_upward (void)
9458 {
9459   START (fma_upward);
9460   RUN_TEST_LOOP_fff_f (fma, fma_upward_test_data, FE_UPWARD);
9461   END (fma_upward);
9462 }
9463
9464
9465 static const struct test_ff_f_data fmax_test_data[] =
9466   {
9467     START_DATA (fmax),
9468     TEST_ff_f (fmax, 0, 0, 0),
9469     TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero),
9470     TEST_ff_f (fmax, 9, 0, 9),
9471     TEST_ff_f (fmax, 0, 9, 9),
9472     TEST_ff_f (fmax, -9, 0, 0),
9473     TEST_ff_f (fmax, 0, -9, 0),
9474
9475     TEST_ff_f (fmax, plus_infty, 9, plus_infty),
9476     TEST_ff_f (fmax, 0, plus_infty, plus_infty),
9477     TEST_ff_f (fmax, -9, plus_infty, plus_infty),
9478     TEST_ff_f (fmax, plus_infty, -9, plus_infty),
9479
9480     TEST_ff_f (fmax, minus_infty, 9, 9),
9481     TEST_ff_f (fmax, minus_infty, -9, -9),
9482     TEST_ff_f (fmax, 9, minus_infty, 9),
9483     TEST_ff_f (fmax, -9, minus_infty, -9),
9484
9485     TEST_ff_f (fmax, 0, qnan_value, 0),
9486     TEST_ff_f (fmax, 9, qnan_value, 9),
9487     TEST_ff_f (fmax, -9, qnan_value, -9),
9488     TEST_ff_f (fmax, qnan_value, 0, 0),
9489     TEST_ff_f (fmax, qnan_value, 9, 9),
9490     TEST_ff_f (fmax, qnan_value, -9, -9),
9491     TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty),
9492     TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty),
9493     TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty),
9494     TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty),
9495     TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value),
9496     END_DATA (fmax)
9497   };
9498
9499 static void
9500 fmax_test (void)
9501 {
9502   START (fmax);
9503   RUN_TEST_LOOP_ff_f (fmax, fmax_test_data, );
9504   END (fmax);
9505 }
9506
9507
9508 static const struct test_ff_f_data fmin_test_data[] =
9509   {
9510     START_DATA (fmin),
9511     TEST_ff_f (fmin, 0, 0, 0),
9512     TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero),
9513     TEST_ff_f (fmin, 9, 0, 0),
9514     TEST_ff_f (fmin, 0, 9, 0),
9515     TEST_ff_f (fmin, -9, 0, -9),
9516     TEST_ff_f (fmin, 0, -9, -9),
9517
9518     TEST_ff_f (fmin, plus_infty, 9, 9),
9519     TEST_ff_f (fmin, 9, plus_infty, 9),
9520     TEST_ff_f (fmin, plus_infty, -9, -9),
9521     TEST_ff_f (fmin, -9, plus_infty, -9),
9522     TEST_ff_f (fmin, minus_infty, 9, minus_infty),
9523     TEST_ff_f (fmin, minus_infty, -9, minus_infty),
9524     TEST_ff_f (fmin, 9, minus_infty, minus_infty),
9525     TEST_ff_f (fmin, -9, minus_infty, minus_infty),
9526
9527     TEST_ff_f (fmin, 0, qnan_value, 0),
9528     TEST_ff_f (fmin, 9, qnan_value, 9),
9529     TEST_ff_f (fmin, -9, qnan_value, -9),
9530     TEST_ff_f (fmin, qnan_value, 0, 0),
9531     TEST_ff_f (fmin, qnan_value, 9, 9),
9532     TEST_ff_f (fmin, qnan_value, -9, -9),
9533     TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty),
9534     TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty),
9535     TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty),
9536     TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty),
9537     TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value),
9538     END_DATA (fmin)
9539   };
9540
9541 static void
9542 fmin_test (void)
9543 {
9544   START (fmin);
9545   RUN_TEST_LOOP_ff_f (fmin, fmin_test_data, );
9546   END (fmin);
9547 }
9548
9549
9550 static const struct test_ff_f_data fmod_test_data[] =
9551   {
9552     START_DATA (fmod),
9553     /* fmod (+0, y) == +0 for y != 0.  */
9554     TEST_ff_f (fmod, 0, 3, 0),
9555
9556     /* fmod (-0, y) == -0 for y != 0.  */
9557     TEST_ff_f (fmod, minus_zero, 3, minus_zero),
9558
9559     /* fmod (+inf, y) == qNaN plus invalid exception.  */
9560     TEST_ff_f (fmod, plus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9561     /* fmod (-inf, y) == qNaN plus invalid exception.  */
9562     TEST_ff_f (fmod, minus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9563     /* fmod (x, +0) == qNaN plus invalid exception.  */
9564     TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9565     /* fmod (x, -0) == qNaN plus invalid exception.  */
9566     TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION),
9567
9568     /* fmod (x, +inf) == x for x not infinite.  */
9569     TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
9570     /* fmod (x, -inf) == x for x not infinite.  */
9571     TEST_ff_f (fmod, 3.0, minus_infty, 3.0),
9572
9573     TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value),
9574
9575     TEST_ff_f (fmod, 6.5, 2.25L, 2.0L),
9576     TEST_ff_f (fmod, -6.5, 2.25L, -2.0L),
9577     TEST_ff_f (fmod, 6.5, -2.25L, 2.0L),
9578     TEST_ff_f (fmod, -6.5, -2.25L, -2.0L),
9579
9580     TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero),
9581 #ifndef TEST_FLOAT
9582     TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero),
9583 #endif
9584 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
9585     TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero),
9586 #endif
9587     END_DATA (fmod)
9588   };
9589
9590 static void
9591 fmod_test (void)
9592 {
9593   errno = 0;
9594   FUNC(fmod) (6.5, 2.3L);
9595   if (errno == ENOSYS)
9596     /* Function not implemented.  */
9597     return;
9598
9599   START (fmod);
9600   RUN_TEST_LOOP_ff_f (fmod, fmod_test_data, );
9601   END (fmod);
9602 }
9603
9604
9605 static const struct test_f_i_data fpclassify_test_data[] =
9606   {
9607     START_DATA (fpclassify),
9608     TEST_f_i (fpclassify, qnan_value, FP_NAN),
9609     TEST_f_i (fpclassify, plus_infty, FP_INFINITE),
9610     TEST_f_i (fpclassify, minus_infty, FP_INFINITE),
9611     TEST_f_i (fpclassify, plus_zero, FP_ZERO),
9612     TEST_f_i (fpclassify, minus_zero, FP_ZERO),
9613     TEST_f_i (fpclassify, 1000, FP_NORMAL),
9614     TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL),
9615     END_DATA (fpclassify)
9616   };
9617
9618 static void
9619 fpclassify_test (void)
9620 {
9621   START (fpclassify);
9622   RUN_TEST_LOOP_f_i_tg (fpclassify, fpclassify_test_data, );
9623   END (fpclassify);
9624 }
9625
9626
9627 static const struct test_f_f1_data frexp_test_data[] =
9628   {
9629     START_DATA (frexp),
9630     TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE),
9631     TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE),
9632     TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE),
9633
9634     TEST_fI_f1 (frexp, 0.0, 0.0, 0.0),
9635     TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0),
9636
9637     TEST_fI_f1 (frexp, 12.8L, 0.8L, 4),
9638     TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5),
9639     END_DATA (frexp)
9640   };
9641
9642 static void
9643 frexp_test (void)
9644 {
9645   int x;
9646
9647   START (frexp);
9648   RUN_TEST_LOOP_fI_f1 (frexp, frexp_test_data, , x);
9649   END (frexp);
9650 }
9651
9652
9653 static const struct test_f_f1_data gamma_test_data[] =
9654   {
9655     START_DATA (gamma),
9656     TEST_f_f1 (gamma, plus_infty, plus_infty, 1),
9657     TEST_f_f1 (gamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION),
9658     TEST_f_f1 (gamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION),
9659     TEST_f_f1 (gamma, minus_infty, plus_infty, IGNORE),
9660     TEST_f_f1 (gamma, qnan_value, qnan_value, IGNORE),
9661
9662     TEST_f_f1 (gamma, 1, 0, 1),
9663     TEST_f_f1 (gamma, 3, M_LN2l, 1),
9664
9665     TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1),
9666     TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1),
9667     END_DATA (gamma)
9668   };
9669
9670 static void
9671 gamma_test (void)
9672 {
9673   errno = 0;
9674   FUNC(gamma) (1);
9675
9676   if (errno == ENOSYS)
9677     /* Function not implemented.  */
9678     return;
9679
9680   START (gamma);
9681   RUN_TEST_LOOP_f_f1 (gamma, gamma_test_data, , signgam);
9682   END (gamma);
9683 }
9684
9685 static const struct test_ff_f_data hypot_test_data[] =
9686   {
9687     START_DATA (hypot),
9688     TEST_ff_f (hypot, plus_infty, 1, plus_infty),
9689     TEST_ff_f (hypot, minus_infty, 1, plus_infty),
9690
9691 #ifndef TEST_INLINE
9692     TEST_ff_f (hypot, plus_infty, qnan_value, plus_infty),
9693     TEST_ff_f (hypot, minus_infty, qnan_value, plus_infty),
9694     TEST_ff_f (hypot, qnan_value, plus_infty, plus_infty),
9695     TEST_ff_f (hypot, qnan_value, minus_infty, plus_infty),
9696 #endif
9697
9698     TEST_ff_f (hypot, qnan_value, qnan_value, qnan_value),
9699
9700     /* hypot (x,y) == hypot (+-x, +-y)  */
9701     TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L),
9702     TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L),
9703     TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L),
9704     TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L),
9705     TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L),
9706     TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L),
9707     TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L),
9708     TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L),
9709
9710     /*  hypot (x,0) == fabs (x)  */
9711     TEST_ff_f (hypot, 0.75L, 0, 0.75L),
9712     TEST_ff_f (hypot, -0.75L, 0, 0.75L),
9713     TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L),
9714
9715     TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
9716
9717     TEST_ff_f (hypot, 1.0L, 0x1p-61L, 1.0L),
9718     TEST_ff_f (hypot, 0x1p+0L, 0x1.fp-129L, 0x1p+0L),
9719 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
9720     TEST_ff_f (hypot, 0x1.23456789abcdef0123456789ab8p-500L, 0x1.23456789abcdef0123456789ab8p-500L, 4.9155782399407039128612180934736799735113e-151L),
9721 #endif
9722
9723 #if !(defined TEST_FLOAT && defined TEST_INLINE)
9724     TEST_ff_f (hypot, 0x3p125L, 0x4p125L, 0x5p125L),
9725     TEST_ff_f (hypot, 0x1.234566p-126L, 0x1.234566p-126L, 1.891441686191081936598531534017449451173e-38L),
9726 #endif
9727
9728 #if !defined TEST_FLOAT && !(defined TEST_DOUBLE && defined TEST_INLINE)
9729     TEST_ff_f (hypot, 0x3p1021L, 0x4p1021L, 0x5p1021L),
9730     TEST_ff_f (hypot, 0x1p+0L, 0x0.3ep-1022L, 0x1p+0L),
9731 #endif
9732
9733 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 && !defined TEST_INLINE
9734     TEST_ff_f (hypot, 0x3p16381L, 0x4p16381L, 0x5p16381L),
9735 #endif
9736     END_DATA (hypot)
9737   };
9738
9739 static void
9740 hypot_test (void)
9741 {
9742   errno = 0;
9743   FUNC(hypot) (0.7L, 12.4L);
9744   if (errno == ENOSYS)
9745     /* Function not implemented.  */
9746     return;
9747
9748   START (hypot);
9749   RUN_TEST_LOOP_ff_f (hypot, hypot_test_data, );
9750   END (hypot);
9751 }
9752
9753
9754 static const struct test_f_i_data ilogb_test_data[] =
9755   {
9756     START_DATA (ilogb),
9757     TEST_f_i (ilogb, 1, 0),
9758     TEST_f_i (ilogb, M_El, 1),
9759     TEST_f_i (ilogb, 1024, 10),
9760     TEST_f_i (ilogb, -2000, 10),
9761
9762     /* ilogb (0.0) == FP_ILOGB0 plus invalid exception  */
9763     TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION|ERRNO_EDOM),
9764     /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception  */
9765     TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION|ERRNO_EDOM),
9766     /* ilogb (inf) == INT_MAX plus invalid exception  */
9767     TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM),
9768     /* ilogb (-inf) == INT_MAX plus invalid exception  */
9769     TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM),
9770     END_DATA (ilogb)
9771   };
9772
9773 static void
9774 ilogb_test (void)
9775 {
9776   START (ilogb);
9777   RUN_TEST_LOOP_f_i (ilogb, ilogb_test_data, );
9778   END (ilogb);
9779 }
9780
9781 static void
9782 isfinite_test (void)
9783 {
9784   START (isfinite);
9785
9786   TEST_f_b (isfinite, 0, 1);
9787   TEST_f_b (isfinite, minus_zero, 1);
9788   TEST_f_b (isfinite, 10, 1);
9789   TEST_f_b (isfinite, min_subnorm_value, 1);
9790   TEST_f_b (isfinite, plus_infty, 0);
9791   TEST_f_b (isfinite, minus_infty, 0);
9792   TEST_f_b (isfinite, qnan_value, 0);
9793
9794   END (isfinite);
9795 }
9796
9797 static const struct test_ff_i_data isgreater_test_data[] =
9798   {
9799     START_DATA (isgreater),
9800     TEST_ff_i (isgreater, minus_zero, minus_zero, 0),
9801     TEST_ff_i (isgreater, minus_zero, plus_zero, 0),
9802     TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0),
9803     TEST_ff_i (isgreater, minus_zero, qnan_value, 0),
9804     TEST_ff_i (isgreater, plus_zero, minus_zero, 0),
9805     TEST_ff_i (isgreater, plus_zero, plus_zero, 0),
9806     TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0),
9807     TEST_ff_i (isgreater, plus_zero, qnan_value, 0),
9808     TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1),
9809     TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1),
9810     TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0),
9811     TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0),
9812     TEST_ff_i (isgreater, qnan_value, minus_zero, 0),
9813     TEST_ff_i (isgreater, qnan_value, plus_zero, 0),
9814     TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0),
9815     TEST_ff_i (isgreater, qnan_value, qnan_value, 0),
9816     END_DATA (isgreater)
9817   };
9818
9819 static void
9820 isgreater_test (void)
9821 {
9822   START (isgreater);
9823   RUN_TEST_LOOP_ff_i_tg (isgreater, isgreater_test_data, );
9824   END (isgreater);
9825 }
9826
9827 static const struct test_ff_i_data isgreaterequal_test_data[] =
9828   {
9829     START_DATA (isgreaterequal),
9830     TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1),
9831     TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1),
9832     TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0),
9833     TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0),
9834     TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1),
9835     TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1),
9836     TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0),
9837     TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0),
9838     TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1),
9839     TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1),
9840     TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1),
9841     TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0),
9842     TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0),
9843     TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0),
9844     TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0),
9845     TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0),
9846     END_DATA (isgreaterequal)
9847   };
9848
9849 static void
9850 isgreaterequal_test (void)
9851 {
9852   START (isgreaterequal);
9853   RUN_TEST_LOOP_ff_i_tg (isgreaterequal, isgreaterequal_test_data, );
9854   END (isgreaterequal);
9855 }
9856
9857 static void
9858 isinf_test (void)
9859 {
9860   START (isinf);
9861
9862   TEST_f_b (isinf, 0, 0);
9863   TEST_f_b (isinf, minus_zero, 0);
9864   TEST_f_b (isinf, 10, 0);
9865   TEST_f_b (isinf, min_subnorm_value, 0);
9866   TEST_f_b (isinf, plus_infty, 1);
9867   TEST_f_b (isinf, minus_infty, 1);
9868   TEST_f_b (isinf, qnan_value, 0);
9869
9870   END (isinf);
9871 }
9872
9873 static const struct test_ff_i_data isless_test_data[] =
9874   {
9875     START_DATA (isless),
9876     TEST_ff_i (isless, minus_zero, minus_zero, 0),
9877     TEST_ff_i (isless, minus_zero, plus_zero, 0),
9878     TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1),
9879     TEST_ff_i (isless, minus_zero, qnan_value, 0),
9880     TEST_ff_i (isless, plus_zero, minus_zero, 0),
9881     TEST_ff_i (isless, plus_zero, plus_zero, 0),
9882     TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1),
9883     TEST_ff_i (isless, plus_zero, qnan_value, 0),
9884     TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0),
9885     TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0),
9886     TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0),
9887     TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0),
9888     TEST_ff_i (isless, qnan_value, minus_zero, 0),
9889     TEST_ff_i (isless, qnan_value, plus_zero, 0),
9890     TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0),
9891     TEST_ff_i (isless, qnan_value, qnan_value, 0),
9892     END_DATA (isless)
9893   };
9894
9895 static void
9896 isless_test (void)
9897 {
9898   START (isless);
9899   RUN_TEST_LOOP_ff_i_tg (isless, isless_test_data, );
9900   END (isless);
9901 }
9902
9903 static const struct test_ff_i_data islessequal_test_data[] =
9904   {
9905     START_DATA (islessequal),
9906     TEST_ff_i (islessequal, minus_zero, minus_zero, 1),
9907     TEST_ff_i (islessequal, minus_zero, plus_zero, 1),
9908     TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1),
9909     TEST_ff_i (islessequal, minus_zero, qnan_value, 0),
9910     TEST_ff_i (islessequal, plus_zero, minus_zero, 1),
9911     TEST_ff_i (islessequal, plus_zero, plus_zero, 1),
9912     TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1),
9913     TEST_ff_i (islessequal, plus_zero, qnan_value, 0),
9914     TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0),
9915     TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0),
9916     TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1),
9917     TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0),
9918     TEST_ff_i (islessequal, qnan_value, minus_zero, 0),
9919     TEST_ff_i (islessequal, qnan_value, plus_zero, 0),
9920     TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0),
9921     TEST_ff_i (islessequal, qnan_value, qnan_value, 0),
9922     END_DATA (islessequal)
9923   };
9924
9925 static void
9926 islessequal_test (void)
9927 {
9928   START (islessequal);
9929   RUN_TEST_LOOP_ff_i_tg (islessequal, islessequal_test_data, );
9930   END (islessequal);
9931 }
9932
9933 static const struct test_ff_i_data islessgreater_test_data[] =
9934   {
9935     START_DATA (islessgreater),
9936     TEST_ff_i (islessgreater, minus_zero, minus_zero, 0),
9937     TEST_ff_i (islessgreater, minus_zero, plus_zero, 0),
9938     TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1),
9939     TEST_ff_i (islessgreater, minus_zero, qnan_value, 0),
9940     TEST_ff_i (islessgreater, plus_zero, minus_zero, 0),
9941     TEST_ff_i (islessgreater, plus_zero, plus_zero, 0),
9942     TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1),
9943     TEST_ff_i (islessgreater, plus_zero, qnan_value, 0),
9944     TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1),
9945     TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1),
9946     TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0),
9947     TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0),
9948     TEST_ff_i (islessgreater, qnan_value, minus_zero, 0),
9949     TEST_ff_i (islessgreater, qnan_value, plus_zero, 0),
9950     TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0),
9951     TEST_ff_i (islessgreater, qnan_value, qnan_value, 0),
9952     END_DATA (islessgreater)
9953   };
9954
9955 static void
9956 islessgreater_test (void)
9957 {
9958   START (islessgreater);
9959   RUN_TEST_LOOP_ff_i_tg (islessgreater, islessgreater_test_data, );
9960   END (islessgreater);
9961 }
9962
9963 static void
9964 isnan_test (void)
9965 {
9966   START (isnan);
9967
9968   TEST_f_b (isnan, 0, 0);
9969   TEST_f_b (isnan, minus_zero, 0);
9970   TEST_f_b (isnan, 10, 0);
9971   TEST_f_b (isnan, min_subnorm_value, 0);
9972   TEST_f_b (isnan, plus_infty, 0);
9973   TEST_f_b (isnan, minus_infty, 0);
9974   TEST_f_b (isnan, qnan_value, 1);
9975
9976   END (isnan);
9977 }
9978
9979 static void
9980 isnormal_test (void)
9981 {
9982   START (isnormal);
9983
9984   TEST_f_b (isnormal, 0, 0);
9985   TEST_f_b (isnormal, minus_zero, 0);
9986   TEST_f_b (isnormal, 10, 1);
9987   TEST_f_b (isnormal, min_subnorm_value, 0);
9988   TEST_f_b (isnormal, plus_infty, 0);
9989   TEST_f_b (isnormal, minus_infty, 0);
9990   TEST_f_b (isnormal, qnan_value, 0);
9991
9992   END (isnormal);
9993 }
9994
9995 static void
9996 issignaling_test (void)
9997 {
9998   START (issignaling);
9999
10000   TEST_f_b (issignaling, 0, 0);
10001   TEST_f_b (issignaling, minus_zero, 0);
10002   TEST_f_b (issignaling, 10, 0);
10003   TEST_f_b (issignaling, min_subnorm_value, 0);
10004   TEST_f_b (issignaling, plus_infty, 0);
10005   TEST_f_b (issignaling, minus_infty, 0);
10006   TEST_f_b (issignaling, qnan_value, 0);
10007
10008   END (issignaling);
10009 }
10010
10011 static const struct test_ff_i_data isunordered_test_data[] =
10012   {
10013     START_DATA (isunordered),
10014     TEST_ff_i (isunordered, minus_zero, minus_zero, 0),
10015     TEST_ff_i (isunordered, minus_zero, plus_zero, 0),
10016     TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0),
10017     TEST_ff_i (isunordered, minus_zero, qnan_value, 1),
10018     TEST_ff_i (isunordered, plus_zero, minus_zero, 0),
10019     TEST_ff_i (isunordered, plus_zero, plus_zero, 0),
10020     TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0),
10021     TEST_ff_i (isunordered, plus_zero, qnan_value, 1),
10022     TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0),
10023     TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0),
10024     TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0),
10025     TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1),
10026     TEST_ff_i (isunordered, qnan_value, minus_zero, 1),
10027     TEST_ff_i (isunordered, qnan_value, plus_zero, 1),
10028     TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1),
10029     TEST_ff_i (isunordered, qnan_value, qnan_value, 1),
10030     END_DATA (isunordered)
10031   };
10032
10033 static void
10034 isunordered_test (void)
10035 {
10036   START (isunordered);
10037   RUN_TEST_LOOP_ff_i_tg (isunordered, isunordered_test_data, );
10038   END (isunordered);
10039 }
10040
10041 static const struct test_f_f_data j0_test_data[] =
10042   {
10043     START_DATA (j0),
10044     /* j0 is the Bessel function of the first kind of order 0 */
10045     TEST_f_f (j0, qnan_value, qnan_value),
10046     TEST_f_f (j0, plus_infty, 0),
10047     TEST_f_f (j0, -1.0, 0.765197686557966551449717526102663221L),
10048     TEST_f_f (j0, 0.0, 1.0),
10049     TEST_f_f (j0, 0.125L, 0.996097563041985204620768999453174712L),
10050     TEST_f_f (j0, 0.75L, 0.864242275166648623555731103820923211L),
10051     TEST_f_f (j0, 1.0, 0.765197686557966551449717526102663221L),
10052     TEST_f_f (j0, 1.5, 0.511827671735918128749051744283411720L),
10053     TEST_f_f (j0, 2.0, 0.223890779141235668051827454649948626L),
10054     TEST_f_f (j0, 8.0, 0.171650807137553906090869407851972001L),
10055     TEST_f_f (j0, 10.0, -0.245935764451348335197760862485328754L),
10056     TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
10057     TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
10058
10059     TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L),
10060
10061 #ifndef TEST_FLOAT
10062     TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L),
10063     TEST_f_f (j0, 0x1p1023L, -1.5665258060609012834424478437196679802783e-155L),
10064 #endif
10065
10066 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
10067     TEST_f_f (j0, 0x1p16382L, -1.2193782500509000574176799046642541129387e-2466L),
10068     TEST_f_f (j0, 0x1p16383L, 9.5859502826270374691362975419147645151233e-2467L),
10069 #endif
10070     END_DATA (j0)
10071   };
10072
10073 static void
10074 j0_test (void)
10075 {
10076   FLOAT s, c;
10077   errno = 0;
10078   FUNC (sincos) (0, &s, &c);
10079   if (errno == ENOSYS)
10080     /* Required function not implemented.  */
10081     return;
10082   FUNC(j0) (0);
10083   if (errno == ENOSYS)
10084     /* Function not implemented.  */
10085     return;
10086
10087   START (j0);
10088   RUN_TEST_LOOP_f_f (j0, j0_test_data, );
10089   END (j0);
10090 }
10091
10092
10093 static const struct test_f_f_data j1_test_data[] =
10094   {
10095     START_DATA (j1),
10096     /* j1 is the Bessel function of the first kind of order 1 */
10097     TEST_f_f (j1, qnan_value, qnan_value),
10098     TEST_f_f (j1, plus_infty, 0),
10099
10100     TEST_f_f (j1, -1.0, -0.440050585744933515959682203718914913L),
10101     TEST_f_f (j1, 0.0, 0.0),
10102     TEST_f_f (j1, 0.125L, 0.0623780091344946810942311355879361177L),
10103     TEST_f_f (j1, 0.75L, 0.349243602174862192523281016426251335L),
10104     TEST_f_f (j1, 1.0, 0.440050585744933515959682203718914913L),
10105     TEST_f_f (j1, 1.5, 0.557936507910099641990121213156089400L),
10106     TEST_f_f (j1, 2.0, 0.576724807756873387202448242269137087L),
10107     TEST_f_f (j1, 8.0, 0.234636346853914624381276651590454612L),
10108     TEST_f_f (j1, 10.0, 0.0434727461688614366697487680258592883L),
10109
10110     TEST_f_f (j1, 0x1.3ffp+74L, 1.818984347516051243459364437186082741567e-12L),
10111
10112 #ifndef TEST_FLOAT
10113     TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
10114     TEST_f_f (j1, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
10115 #endif
10116
10117 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
10118     TEST_f_f (j1, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
10119     TEST_f_f (j1, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
10120 #endif
10121     END_DATA (j1)
10122   };
10123
10124 static void
10125 j1_test (void)
10126 {
10127   FLOAT s, c;
10128   errno = 0;
10129   FUNC (sincos) (0, &s, &c);
10130   if (errno == ENOSYS)
10131     /* Required function not implemented.  */
10132     return;
10133   FUNC(j1) (0);
10134   if (errno == ENOSYS)
10135     /* Function not implemented.  */
10136     return;
10137
10138   START (j1);
10139   RUN_TEST_LOOP_f_f (j1, j1_test_data, );
10140   END (j1);
10141 }
10142
10143 static const struct test_if_f_data jn_test_data[] =
10144   {
10145     START_DATA (jn),
10146     /* jn is the Bessel function of the first kind of order n.  */
10147     /* jn (0, x) == j0 (x)  */
10148     TEST_if_f (jn, 0, qnan_value, qnan_value),
10149     TEST_if_f (jn, 0, plus_infty, 0),
10150     TEST_if_f (jn, 0, -1.0, 0.765197686557966551449717526102663221L),
10151     TEST_if_f (jn, 0, 0.0, 1.0),
10152     TEST_if_f (jn, 0, 0.125L, 0.996097563041985204620768999453174712L),
10153     TEST_if_f (jn, 0, 0.75L, 0.864242275166648623555731103820923211L),
10154     TEST_if_f (jn, 0, 1.0, 0.765197686557966551449717526102663221L),
10155     TEST_if_f (jn, 0, 1.5, 0.511827671735918128749051744283411720L),
10156     TEST_if_f (jn, 0, 2.0, 0.223890779141235668051827454649948626L),
10157     TEST_if_f (jn, 0, 8.0, 0.171650807137553906090869407851972001L),
10158     TEST_if_f (jn, 0, 10.0, -0.245935764451348335197760862485328754L),
10159     TEST_if_f (jn, 0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
10160     TEST_if_f (jn, 0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
10161
10162     /* jn (1, x) == j1 (x)  */
10163     TEST_if_f (jn, 1, qnan_value, qnan_value),
10164     TEST_if_f (jn, 1, plus_infty, 0),
10165     TEST_if_f (jn, 1, -1.0, -0.440050585744933515959682203718914913L),
10166     TEST_if_f (jn, 1, 0.0, 0.0),
10167     TEST_if_f (jn, 1, 0.125L, 0.0623780091344946810942311355879361177L),
10168     TEST_if_f (jn, 1, 0.75L, 0.349243602174862192523281016426251335L),
10169     TEST_if_f (jn, 1, 1.0, 0.440050585744933515959682203718914913L),
10170     TEST_if_f (jn, 1, 1.5, 0.557936507910099641990121213156089400L),
10171     TEST_if_f (jn, 1, 2.0, 0.576724807756873387202448242269137087L),
10172     TEST_if_f (jn, 1, 8.0, 0.234636346853914624381276651590454612L),
10173     TEST_if_f (jn, 1, 10.0, 0.0434727461688614366697487680258592883L),
10174
10175     /* jn (3, x)  */
10176     TEST_if_f (jn, 3, qnan_value, qnan_value),
10177     TEST_if_f (jn, 3, plus_infty, 0),
10178
10179     TEST_if_f (jn, 3, -1.0, -0.0195633539826684059189053216217515083L),
10180     TEST_if_f (jn, 3, 0.0, 0.0),
10181     TEST_if_f (jn, 3, 0.125L, 0.406503832554912875023029337653442868e-4L),
10182     TEST_if_f (jn, 3, 0.75L, 0.848438342327410884392755236884386804e-2L),
10183     TEST_if_f (jn, 3, 1.0, 0.0195633539826684059189053216217515083L),
10184     TEST_if_f (jn, 3, 2.0, 0.128943249474402051098793332969239835L),
10185     TEST_if_f (jn, 3, 10.0, 0.0583793793051868123429354784103409563L),
10186
10187     /*  jn (10, x)  */
10188     TEST_if_f (jn, 10, qnan_value, qnan_value),
10189     TEST_if_f (jn, 10, plus_infty, 0),
10190
10191     TEST_if_f (jn, 10, -1.0, 0.263061512368745320699785368779050294e-9L),
10192     TEST_if_f (jn, 10, 0.0, 0.0),
10193     TEST_if_f (jn, 10, 0.125L, 0.250543369809369890173993791865771547e-18L),
10194     TEST_if_f (jn, 10, 0.75L, 0.149621713117596814698712483621682835e-10L),
10195     TEST_if_f (jn, 10, 1.0, 0.263061512368745320699785368779050294e-9L),
10196     TEST_if_f (jn, 10, 2.0, 0.251538628271673670963516093751820639e-6L),
10197     TEST_if_f (jn, 10, 10.0, 0.207486106633358857697278723518753428L),
10198
10199     /* BZ #11589 .*/
10200     TEST_if_f (jn, 2, 2.4048255576957729L, 0.43175480701968038399746111312430703L),
10201     TEST_if_f (jn, 3, 2.4048255576957729L, 0.19899990535769083404042146764530813L),
10202     TEST_if_f (jn, 4, 2.4048255576957729L, 0.647466661641779720084932282551219891E-1L),
10203     TEST_if_f (jn, 5, 2.4048255576957729L, 0.163892432048058525099230549946147698E-1L),
10204     TEST_if_f (jn, 6, 2.4048255576957729L, 0.34048184720278336646673682895929161E-2L),
10205     TEST_if_f (jn, 7, 2.4048255576957729L, 0.60068836573295394221291569249883076E-3L),
10206     TEST_if_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L),
10207     TEST_if_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L),
10208
10209     /* Bug 14155: spurious exception may occur.  */
10210     TEST_if_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L, UNDERFLOW_EXCEPTION_OK),
10211     END_DATA (jn)
10212   };
10213
10214 static void
10215 jn_test (void)
10216 {
10217   FLOAT s, c;
10218   errno = 0;
10219   FUNC (sincos) (0, &s, &c);
10220   if (errno == ENOSYS)
10221     /* Required function not implemented.  */
10222     return;
10223   FUNC(jn) (1, 1);
10224   if (errno == ENOSYS)
10225     /* Function not implemented.  */
10226     return;
10227
10228   START (jn);
10229   RUN_TEST_LOOP_if_f (jn, jn_test_data, );
10230   END (jn);
10231 }
10232
10233
10234 static const struct test_fi_f_data ldexp_test_data[] =
10235   {
10236     START_DATA (ldexp),
10237     TEST_fi_f (ldexp, 0, 0, 0),
10238     TEST_fi_f (ldexp, minus_zero, 0, minus_zero),
10239
10240     TEST_fi_f (ldexp, plus_infty, 1, plus_infty),
10241     TEST_fi_f (ldexp, minus_infty, 1, minus_infty),
10242     TEST_fi_f (ldexp, qnan_value, 1, qnan_value),
10243
10244     TEST_fi_f (ldexp, 0.8L, 4, 12.8L),
10245     TEST_fi_f (ldexp, -0.854375L, 5, -27.34L),
10246
10247     /* ldexp (x, 0) == x.  */
10248     TEST_fi_f (ldexp, 1.0L, 0L, 1.0L),
10249     END_DATA (ldexp)
10250   };
10251
10252 static void
10253 ldexp_test (void)
10254 {
10255   START (ldexp);
10256   RUN_TEST_LOOP_fi_f (ldexp, ldexp_test_data, );
10257   END (ldexp);
10258 }
10259
10260
10261 static const struct test_f_f1_data lgamma_test_data[] =
10262   {
10263     START_DATA (lgamma),
10264     TEST_f_f1 (lgamma, plus_infty, plus_infty, 1),
10265     TEST_f_f1 (lgamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION),
10266     TEST_f_f1 (lgamma, minus_zero, plus_infty, -1, DIVIDE_BY_ZERO_EXCEPTION),
10267     TEST_f_f1 (lgamma, qnan_value, qnan_value, IGNORE),
10268
10269     /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0.  */
10270     TEST_f_f1 (lgamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
10271     TEST_f_f1 (lgamma, minus_infty, plus_infty, IGNORE),
10272     TEST_f_f1 (lgamma, -max_value, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION),
10273     TEST_f_f1 (lgamma, max_value, plus_infty, 1, OVERFLOW_EXCEPTION),
10274
10275     TEST_f_f1 (lgamma, 1, 0, 1),
10276
10277     TEST_f_f1 (lgamma, 3, M_LN2l, 1),
10278
10279     TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1),
10280     TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1),
10281     TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1),
10282     TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1),
10283     END_DATA (lgamma)
10284   };
10285
10286 static void
10287 lgamma_test (void)
10288 {
10289   errno = 0;
10290   FUNC(lgamma) (0);
10291   if (errno == ENOSYS)
10292     /* Function not implemented.  */
10293     return;
10294
10295   START (lgamma);
10296   RUN_TEST_LOOP_f_f1 (lgamma, lgamma_test_data, , signgam);
10297   END (lgamma);
10298 }
10299
10300
10301 static void
10302 lrint_test (void)
10303 {
10304   /* XXX this test is incomplete.  We need to have a way to specifiy
10305      the rounding method and test the critical cases.  So far, only
10306      unproblematic numbers are tested.  */
10307   /* TODO: missing +/-Inf as well as qNaN tests.  */
10308
10309   START (lrint);
10310
10311   TEST_f_l (lrint, 0.0, 0);
10312   TEST_f_l (lrint, minus_zero, 0);
10313   TEST_f_l (lrint, 0.2L, 0);
10314   TEST_f_l (lrint, -0.2L, 0);
10315
10316   TEST_f_l (lrint, 1.4L, 1);
10317   TEST_f_l (lrint, -1.4L, -1);
10318
10319   TEST_f_l (lrint, 8388600.3L, 8388600);
10320   TEST_f_l (lrint, -8388600.3L, -8388600);
10321
10322   TEST_f_l (lrint, 1071930.0008, 1071930);
10323 #ifndef TEST_FLOAT
10324   TEST_f_l (lrint, 1073741824.01, 1073741824);
10325 # if LONG_MAX > 281474976710656
10326   TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10327 # endif
10328 #endif
10329
10330   END (lrint);
10331 }
10332
10333
10334 static void
10335 lrint_test_tonearest (void)
10336 {
10337   int save_round_mode;
10338   START (lrint_tonearest);
10339
10340   save_round_mode = fegetround ();
10341
10342   if (!fesetround (FE_TONEAREST))
10343     {
10344       TEST_f_l (lrint, 0.0, 0);
10345       TEST_f_l (lrint, minus_zero, 0);
10346       TEST_f_l (lrint, 0.2L, 0);
10347       TEST_f_l (lrint, -0.2L, 0);
10348       TEST_f_l (lrint, 0.5L, 0);
10349       TEST_f_l (lrint, -0.5L, 0);
10350       TEST_f_l (lrint, 0.8L, 1);
10351       TEST_f_l (lrint, -0.8L, -1);
10352
10353       TEST_f_l (lrint, 1.4L, 1);
10354       TEST_f_l (lrint, -1.4L, -1);
10355
10356       TEST_f_l (lrint, 8388600.3L, 8388600);
10357       TEST_f_l (lrint, -8388600.3L, -8388600);
10358
10359       TEST_f_l (lrint, 1071930.0008, 1071930);
10360 #ifndef TEST_FLOAT
10361       TEST_f_l (lrint, 1073741824.01, 1073741824);
10362 # if LONG_MAX > 281474976710656
10363       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10364 # endif
10365 #endif
10366     }
10367
10368   fesetround (save_round_mode);
10369
10370   END (lrint_tonearest);
10371 }
10372
10373
10374 static void
10375 lrint_test_towardzero (void)
10376 {
10377   int save_round_mode;
10378   START (lrint_towardzero);
10379
10380   save_round_mode = fegetround ();
10381
10382   if (!fesetround (FE_TOWARDZERO))
10383     {
10384       TEST_f_l (lrint, 0.0, 0);
10385       TEST_f_l (lrint, minus_zero, 0);
10386       TEST_f_l (lrint, 0.2L, 0);
10387       TEST_f_l (lrint, -0.2L, 0);
10388       TEST_f_l (lrint, 0.5L, 0);
10389       TEST_f_l (lrint, -0.5L, 0);
10390       TEST_f_l (lrint, 0.8L, 0);
10391       TEST_f_l (lrint, -0.8L, 0);
10392
10393       TEST_f_l (lrint, 1.4L, 1);
10394       TEST_f_l (lrint, -1.4L, -1);
10395
10396       TEST_f_l (lrint, 8388600.3L, 8388600);
10397       TEST_f_l (lrint, -8388600.3L, -8388600);
10398
10399       TEST_f_l (lrint, 1071930.0008, 1071930);
10400 #ifndef TEST_FLOAT
10401       TEST_f_l (lrint, 1073741824.01, 1073741824);
10402 # if LONG_MAX > 281474976710656
10403       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10404 # endif
10405 #endif
10406     }
10407
10408   fesetround (save_round_mode);
10409
10410   END (lrint_towardzero);
10411 }
10412
10413
10414 static void
10415 lrint_test_downward (void)
10416 {
10417   int save_round_mode;
10418   START (lrint_downward);
10419
10420   save_round_mode = fegetround ();
10421
10422   if (!fesetround (FE_DOWNWARD))
10423     {
10424       TEST_f_l (lrint, 0.0, 0);
10425       TEST_f_l (lrint, minus_zero, 0);
10426       TEST_f_l (lrint, 0.2L, 0);
10427       TEST_f_l (lrint, -0.2L, -1);
10428       TEST_f_l (lrint, 0.5L, 0);
10429       TEST_f_l (lrint, -0.5L, -1);
10430       TEST_f_l (lrint, 0.8L, 0);
10431       TEST_f_l (lrint, -0.8L, -1);
10432
10433       TEST_f_l (lrint, 1.4L, 1);
10434       TEST_f_l (lrint, -1.4L, -2);
10435
10436       TEST_f_l (lrint, 8388600.3L, 8388600);
10437       TEST_f_l (lrint, -8388600.3L, -8388601);
10438
10439       TEST_f_l (lrint, 1071930.0008, 1071930);
10440 #ifndef TEST_FLOAT
10441       TEST_f_l (lrint, 1073741824.01, 1073741824);
10442 # if LONG_MAX > 281474976710656
10443       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10444 # endif
10445 #endif
10446     }
10447
10448   fesetround (save_round_mode);
10449
10450   END (lrint_downward);
10451 }
10452
10453
10454 static void
10455 lrint_test_upward (void)
10456 {
10457   int save_round_mode;
10458   START (lrint_upward);
10459
10460   save_round_mode = fegetround ();
10461
10462   if (!fesetround (FE_UPWARD))
10463     {
10464       TEST_f_l (lrint, 0.0, 0);
10465       TEST_f_l (lrint, minus_zero, 0);
10466       TEST_f_l (lrint, 0.2L, 1);
10467       TEST_f_l (lrint, -0.2L, 0);
10468       TEST_f_l (lrint, 0.5L, 1);
10469       TEST_f_l (lrint, -0.5L, 0);
10470       TEST_f_l (lrint, 0.8L, 1);
10471       TEST_f_l (lrint, -0.8L, 0);
10472
10473       TEST_f_l (lrint, 1.4L, 2);
10474       TEST_f_l (lrint, -1.4L, -1);
10475
10476       TEST_f_l (lrint, 8388600.3L, 8388601);
10477       TEST_f_l (lrint, -8388600.3L, -8388600);
10478
10479 #ifndef TEST_FLOAT
10480       TEST_f_l (lrint, 1071930.0008, 1071931);
10481       TEST_f_l (lrint, 1073741824.01, 1073741825);
10482 # if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
10483       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10484 # endif
10485 #endif
10486     }
10487
10488   fesetround (save_round_mode);
10489
10490   END (lrint_upward);
10491 }
10492
10493
10494 static void
10495 llrint_test (void)
10496 {
10497   /* XXX this test is incomplete.  We need to have a way to specifiy
10498      the rounding method and test the critical cases.  So far, only
10499      unproblematic numbers are tested.  */
10500   /* TODO: missing +/-Inf as well as qNaN tests.  */
10501
10502   START (llrint);
10503
10504   TEST_f_L (llrint, 0.0, 0);
10505   TEST_f_L (llrint, minus_zero, 0);
10506   TEST_f_L (llrint, 0.2L, 0);
10507   TEST_f_L (llrint, -0.2L, 0);
10508
10509   TEST_f_L (llrint, 1.4L, 1);
10510   TEST_f_L (llrint, -1.4L, -1);
10511
10512   TEST_f_L (llrint, 8388600.3L, 8388600);
10513   TEST_f_L (llrint, -8388600.3L, -8388600);
10514
10515   TEST_f_l (llrint, 1071930.0008, 1071930);
10516
10517   /* Test boundary conditions.  */
10518   /* 0x1FFFFF */
10519   TEST_f_L (llrint, 2097151.0,2097151LL);
10520   /* 0x800000 */
10521   TEST_f_L (llrint, 8388608.0, 8388608LL);
10522   /* 0x1000000 */
10523   TEST_f_L (llrint, 16777216.0, 16777216LL);
10524   /* 0x20000000000 */
10525   TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10526   /* 0x40000000000 */
10527   TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10528   /* 0x1000000000000 */
10529   TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10530   /* 0x10000000000000 */
10531   TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10532   /* 0x10000080000000 */
10533   TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10534   /* 0x20000000000000 */
10535   TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10536   /* 0x80000000000000 */
10537   TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10538   /* 0x100000000000000 */
10539   TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10540 #ifdef TEST_LDOUBLE
10541   /* The input can only be represented in long double.  */
10542   TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10543   TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10544   TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10545   TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10546   TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10547
10548   TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10549   TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10550   TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10551   TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10552   TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10553
10554 # if LDBL_MANT_DIG > 100
10555   TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10556   TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10557   TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10558   TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10559   TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10560   TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10561
10562   TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10563   TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10564   TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10565   TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10566   TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10567   TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10568 #endif
10569
10570   TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10571   TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10572   TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10573   TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10574   TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10575
10576   TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10577   TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10578   TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10579   TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10580   TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10581
10582 # if LDBL_MANT_DIG > 100
10583   TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10584   TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10585   TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10586   TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10587   TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10588   TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10589
10590   TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10591   TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10592   TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10593   TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10594   TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10595   TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10596 #endif
10597
10598   TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10599   TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10600   TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10601   TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10602   TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10603
10604   TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10605   TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10606   TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10607   TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10608   TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10609
10610 # if LDBL_MANT_DIG > 100
10611   TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10612   TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10613   TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10614   TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10615   TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10616   TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10617   TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10618   TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10619   TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10620   TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10621   TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10622   TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10623 # endif
10624 #endif
10625
10626   END (llrint);
10627 }
10628
10629 static void
10630 llrint_test_tonearest (void)
10631 {
10632   int save_round_mode;
10633   START (llrint_tonearest);
10634
10635   save_round_mode = fegetround ();
10636
10637   if (!fesetround (FE_TONEAREST))
10638     {
10639       TEST_f_L (llrint, 0.0, 0);
10640       TEST_f_L (llrint, minus_zero, 0);
10641       TEST_f_L (llrint, 0.2L, 0);
10642       TEST_f_L (llrint, -0.2L, 0);
10643
10644       TEST_f_L (llrint, 1.4L, 1);
10645       TEST_f_L (llrint, -1.4L, -1);
10646
10647       TEST_f_L (llrint, 8388600.3L, 8388600);
10648       TEST_f_L (llrint, -8388600.3L, -8388600);
10649
10650       TEST_f_l (llrint, 1071930.0008, 1071930);
10651
10652       /* Test boundary conditions.  */
10653       /* 0x1FFFFF */
10654       TEST_f_L (llrint, 2097151.0,2097151LL);
10655       /* 0x800000 */
10656       TEST_f_L (llrint, 8388608.0, 8388608LL);
10657       /* 0x1000000 */
10658       TEST_f_L (llrint, 16777216.0, 16777216LL);
10659       /* 0x20000000000 */
10660       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10661       /* 0x40000000000 */
10662       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10663       /* 0x1000000000000 */
10664       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10665       /* 0x10000000000000 */
10666       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10667       /* 0x10000080000000 */
10668       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10669       /* 0x20000000000000 */
10670       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10671       /* 0x80000000000000 */
10672       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10673       /* 0x100000000000000 */
10674       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10675 #ifdef TEST_LDOUBLE
10676       /* The input can only be represented in long double.  */
10677       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10678       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10679       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10680       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10681       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10682
10683       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10684       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10685       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10686       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10687       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10688
10689 # if LDBL_MANT_DIG > 100
10690       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10691       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10692       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10693       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10694       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10695       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10696
10697       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10698       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10699       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10700       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10701       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10702       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10703 #endif
10704
10705       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10706       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10707       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10708       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10709       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10710
10711       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10712       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10713       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10714       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10715       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10716
10717 # if LDBL_MANT_DIG > 100
10718       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10719       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10720       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10721       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10722       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10723       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10724
10725       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10726       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10727       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10728       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10729       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10730       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10731 #endif
10732
10733       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10734       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10735       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10736       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10737       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10738
10739       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10740       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10741       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10742       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10743       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10744
10745 # if LDBL_MANT_DIG > 100
10746       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10747       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10748       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10749       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10750       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10751       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10752       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10753       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10754       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10755       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10756       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10757       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10758 # endif
10759 #endif
10760     }
10761
10762   fesetround (save_round_mode);
10763
10764   END (llrint_tonearest);
10765 }
10766
10767 static void
10768 llrint_test_towardzero (void)
10769 {
10770   int save_round_mode;
10771   START (llrint_towardzero);
10772
10773   save_round_mode = fegetround ();
10774
10775   if (!fesetround (FE_TOWARDZERO))
10776     {
10777       TEST_f_L (llrint, 0.0, 0);
10778       TEST_f_L (llrint, minus_zero, 0);
10779       TEST_f_L (llrint, 0.2L, 0);
10780       TEST_f_L (llrint, -0.2L, 0);
10781
10782       TEST_f_L (llrint, 1.4L, 1);
10783       TEST_f_L (llrint, -1.4L, -1);
10784
10785       TEST_f_L (llrint, 8388600.3L, 8388600);
10786       TEST_f_L (llrint, -8388600.3L, -8388600);
10787
10788       TEST_f_l (llrint, 1071930.0008, 1071930);
10789
10790       /* Test boundary conditions.  */
10791       /* 0x1FFFFF */
10792       TEST_f_L (llrint, 2097151.0,2097151LL);
10793       /* 0x800000 */
10794       TEST_f_L (llrint, 8388608.0, 8388608LL);
10795       /* 0x1000000 */
10796       TEST_f_L (llrint, 16777216.0, 16777216LL);
10797       /* 0x20000000000 */
10798       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10799       /* 0x40000000000 */
10800       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10801       /* 0x1000000000000 */
10802       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10803       /* 0x10000000000000 */
10804       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10805       /* 0x10000080000000 */
10806       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10807       /* 0x20000000000000 */
10808       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10809       /* 0x80000000000000 */
10810       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10811       /* 0x100000000000000 */
10812       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10813 #ifdef TEST_LDOUBLE
10814       /* The input can only be represented in long double.  */
10815       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10816       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10817       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10818       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10819       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10820
10821       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10822       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10823       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10824       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10825       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10826
10827 # if LDBL_MANT_DIG > 100
10828       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10829       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10830       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10831       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10832       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10833       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10834
10835       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10836       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10837       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10838       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10839       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10840       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10841 #endif
10842
10843       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10844       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10845       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10846       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10847       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10848
10849       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10850       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10851       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10852       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10853       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10854
10855 # if LDBL_MANT_DIG > 100
10856       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10857       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10858       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10859       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10860       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10861       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10862
10863       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10864       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10865       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10866       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10867       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10868       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10869 #endif
10870
10871       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10872       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10873       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10874       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10875       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10876
10877       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10878       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10879       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10880       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10881       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10882
10883 # if LDBL_MANT_DIG > 100
10884       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10885       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10886       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10887       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10888       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10889       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10890       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10891       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10892       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10893       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10894       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10895       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10896 # endif
10897 #endif
10898     }
10899
10900   fesetround (save_round_mode);
10901
10902   END (llrint_towardzero);
10903 }
10904
10905 static void
10906 llrint_test_downward (void)
10907 {
10908   int save_round_mode;
10909   START (llrint_downward);
10910
10911   save_round_mode = fegetround ();
10912
10913   if (!fesetround (FE_DOWNWARD))
10914     {
10915       TEST_f_L (llrint, 0.0, 0);
10916       TEST_f_L (llrint, minus_zero, 0);
10917       TEST_f_L (llrint, 0.2L, 0);
10918       TEST_f_L (llrint, -0.2L, -1);
10919
10920       TEST_f_L (llrint, 1.4L, 1);
10921       TEST_f_L (llrint, -1.4L, -2);
10922
10923       TEST_f_L (llrint, 8388600.3L, 8388600);
10924       TEST_f_L (llrint, -8388600.3L, -8388601);
10925
10926       TEST_f_l (llrint, 1071930.0008, 1071930);
10927
10928       /* Test boundary conditions.  */
10929       /* 0x1FFFFF */
10930       TEST_f_L (llrint, 2097151.0,2097151LL);
10931       /* 0x800000 */
10932       TEST_f_L (llrint, 8388608.0, 8388608LL);
10933       /* 0x1000000 */
10934       TEST_f_L (llrint, 16777216.0, 16777216LL);
10935       /* 0x20000000000 */
10936       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10937       /* 0x40000000000 */
10938       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10939       /* 0x1000000000000 */
10940       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10941       /* 0x10000000000000 */
10942       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10943       /* 0x10000080000000 */
10944       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10945       /* 0x20000000000000 */
10946       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10947       /* 0x80000000000000 */
10948       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10949       /* 0x100000000000000 */
10950       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10951 #ifdef TEST_LDOUBLE
10952       /* The input can only be represented in long double.  */
10953       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10954       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10955       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10956       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10957       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10958
10959       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10960       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10961       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10962       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10963       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10964       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10965
10966       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10967       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370497LL);
10968       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370497LL);
10969       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10970       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10971
10972       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370496LL);
10973       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370497LL);
10974       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370498LL);
10975       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10976       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10977       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10978
10979       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10980       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10981       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10982       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10983       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10984
10985       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10986       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10987       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10988       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10989       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10990       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10991
10992       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10993       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740993LL);
10994       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740993LL);
10995       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10996       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10997
10998       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740992LL);
10999       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740993LL);
11000       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740994LL);
11001       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
11002       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
11003       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
11004
11005       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
11006       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
11007       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
11008       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
11009       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
11010
11011       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
11012       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927937LL);
11013       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927937LL);
11014       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
11015       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
11016
11017 # if LDBL_MANT_DIG > 100
11018       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
11019       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
11020       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
11021       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
11022       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
11023       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775807LL);
11024       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
11025       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775807LL);
11026       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
11027       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
11028       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
11029       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
11030 # endif
11031 #endif
11032     }
11033
11034   fesetround (save_round_mode);
11035
11036   END (llrint_downward);
11037 }
11038
11039 static void
11040 llrint_test_upward (void)
11041 {
11042   int save_round_mode;
11043   START (llrint_upward);
11044
11045   save_round_mode = fegetround ();
11046
11047   if (!fesetround (FE_UPWARD))
11048     {
11049       TEST_f_L (llrint, 0.0, 0);
11050       TEST_f_L (llrint, minus_zero, 0);
11051       TEST_f_L (llrint, 0.2L, 1);
11052       TEST_f_L (llrint, -0.2L, 0);
11053
11054       TEST_f_L (llrint, 1.4L, 2);
11055       TEST_f_L (llrint, -1.4L, -1);
11056
11057       TEST_f_L (llrint, 8388600.3L, 8388601);
11058       TEST_f_L (llrint, -8388600.3L, -8388600);
11059 #ifndef TEST_FLOAT
11060       TEST_f_l (llrint, 1071930.0008, 1071931);
11061 #endif
11062       /* Test boundary conditions.  */
11063       /* 0x1FFFFF */
11064       TEST_f_L (llrint, 2097151.0,2097151LL);
11065       /* 0x800000 */
11066       TEST_f_L (llrint, 8388608.0, 8388608LL);
11067       /* 0x1000000 */
11068       TEST_f_L (llrint, 16777216.0, 16777216LL);
11069       /* 0x20000000000 */
11070       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
11071       /* 0x40000000000 */
11072       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
11073       /* 0x1000000000000 */
11074       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
11075       /* 0x10000000000000 */
11076       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
11077       /* 0x10000080000000 */
11078       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
11079       /* 0x20000000000000 */
11080       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
11081       /* 0x80000000000000 */
11082       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
11083       /* 0x100000000000000 */
11084       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
11085 #ifdef TEST_LDOUBLE
11086       /* The input can only be represented in long double.  */
11087       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
11088       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370497LL);
11089       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370497LL);
11090       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
11091       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
11092
11093       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370496LL);
11094       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370497LL);
11095       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370498LL);
11096       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
11097       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
11098       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
11099
11100       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
11101       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
11102       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
11103       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
11104       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
11105
11106       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
11107       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
11108       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
11109       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
11110       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
11111       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
11112
11113       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
11114       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740993LL);
11115       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740993LL);
11116       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
11117       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
11118
11119       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740992LL);
11120       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740993LL);
11121       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740994LL);
11122       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
11123       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
11124       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
11125
11126       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
11127       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
11128       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
11129       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
11130       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
11131
11132       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
11133       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
11134       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
11135       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
11136       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
11137       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
11138
11139       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
11140       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927937LL);
11141       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927937LL);
11142       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
11143       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
11144
11145       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
11146       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
11147       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
11148       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
11149       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
11150
11151 # if LDBL_MANT_DIG > 100
11152       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
11153       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
11154       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
11155       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
11156       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775807LL);
11157       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
11158       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775807L);
11159       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
11160       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
11161       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
11162       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
11163       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
11164 # endif
11165 #endif
11166     }
11167
11168   fesetround (save_round_mode);
11169
11170   END (llrint_upward);
11171 }
11172
11173
11174 static const struct test_f_f_data log_test_data[] =
11175   {
11176     START_DATA (log),
11177     TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11178     TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11179
11180     TEST_f_f (log, 1, 0),
11181
11182     TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION),
11183     TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION),
11184     TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION),
11185     TEST_f_f (log, plus_infty, plus_infty),
11186     TEST_f_f (log, qnan_value, qnan_value),
11187
11188     TEST_f_f (log, M_El, 1),
11189     TEST_f_f (log, M_1_DIV_El, -1),
11190     TEST_f_f (log, 2, M_LN2l),
11191     TEST_f_f (log, 10, M_LN10l),
11192     TEST_f_f (log, 0.75L, -0.287682072451780927439219005993827432L),
11193     END_DATA (log)
11194   };
11195
11196 static void
11197 log_test (void)
11198 {
11199   errno = 0;
11200   FUNC(log) (1);
11201   if (errno == ENOSYS)
11202     /* Function not implemented.  */
11203     return;
11204   START (log);
11205   RUN_TEST_LOOP_f_f (log, log_test_data, );
11206   END (log);
11207 }
11208
11209
11210 static const struct test_f_f_data log10_test_data[] =
11211   {
11212     START_DATA (log10),
11213     TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11214     TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11215
11216     TEST_f_f (log10, 1, 0),
11217
11218     /* log10 (x) == qNaN plus invalid exception if x < 0.  */
11219     TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION),
11220     TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION),
11221     TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION),
11222
11223     TEST_f_f (log10, plus_infty, plus_infty),
11224     TEST_f_f (log10, qnan_value, qnan_value),
11225
11226     TEST_f_f (log10, 0.1L, -1),
11227     TEST_f_f (log10, 10.0, 1),
11228     TEST_f_f (log10, 100.0, 2),
11229     TEST_f_f (log10, 10000.0, 4),
11230     TEST_f_f (log10, M_El, M_LOG10El),
11231     TEST_f_f (log10, 0.75L, -0.124938736608299953132449886193870744L),
11232     END_DATA (log10)
11233   };
11234
11235 static void
11236 log10_test (void)
11237 {
11238   errno = 0;
11239   FUNC(log10) (1);
11240   if (errno == ENOSYS)
11241     /* Function not implemented.  */
11242     return;
11243
11244   START (log10);
11245   RUN_TEST_LOOP_f_f (log10, log10_test_data, );
11246   END (log10);
11247 }
11248
11249
11250 static const struct test_f_f_data log1p_test_data[] =
11251   {
11252     START_DATA (log1p),
11253     TEST_f_f (log1p, 0, 0),
11254     TEST_f_f (log1p, minus_zero, minus_zero),
11255
11256     TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11257     TEST_f_f (log1p, -2, qnan_value, INVALID_EXCEPTION),
11258     TEST_f_f (log1p, -max_value, qnan_value, INVALID_EXCEPTION),
11259     TEST_f_f (log1p, minus_infty, qnan_value, INVALID_EXCEPTION),
11260
11261     TEST_f_f (log1p, plus_infty, plus_infty),
11262     TEST_f_f (log1p, qnan_value, qnan_value),
11263
11264     TEST_f_f (log1p, M_El - 1.0, 1),
11265
11266     TEST_f_f (log1p, -0.25L, -0.287682072451780927439219005993827432L),
11267     TEST_f_f (log1p, -0.875, -2.07944154167983592825169636437452970L),
11268     END_DATA (log1p)
11269   };
11270
11271 static void
11272 log1p_test (void)
11273 {
11274   errno = 0;
11275   FUNC(log1p) (0);
11276   if (errno == ENOSYS)
11277     /* Function not implemented.  */
11278     return;
11279
11280   START (log1p);
11281   RUN_TEST_LOOP_f_f (log1p, log1p_test_data, );
11282   END (log1p);
11283 }
11284
11285
11286 static const struct test_f_f_data log2_test_data[] =
11287   {
11288     START_DATA (log2),
11289     TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11290     TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11291
11292     TEST_f_f (log2, 1, 0),
11293
11294     TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION),
11295     TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION),
11296     TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION),
11297
11298     TEST_f_f (log2, plus_infty, plus_infty),
11299     TEST_f_f (log2, qnan_value, qnan_value),
11300
11301     TEST_f_f (log2, M_El, M_LOG2El),
11302     TEST_f_f (log2, 2.0, 1),
11303     TEST_f_f (log2, 16.0, 4),
11304     TEST_f_f (log2, 256.0, 8),
11305     TEST_f_f (log2, 0.75L, -.415037499278843818546261056052183492L),
11306     END_DATA (log2)
11307   };
11308
11309 static void
11310 log2_test (void)
11311 {
11312   errno = 0;
11313   FUNC(log2) (1);
11314   if (errno == ENOSYS)
11315     /* Function not implemented.  */
11316     return;
11317
11318   START (log2);
11319   RUN_TEST_LOOP_f_f (log2, log2_test_data, );
11320   END (log2);
11321 }
11322
11323
11324 static const struct test_f_f_data logb_test_data[] =
11325   {
11326     START_DATA (logb),
11327     TEST_f_f (logb, plus_infty, plus_infty),
11328     TEST_f_f (logb, minus_infty, plus_infty),
11329
11330     TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11331
11332     TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11333     TEST_f_f (logb, qnan_value, qnan_value),
11334
11335     TEST_f_f (logb, 1, 0),
11336     TEST_f_f (logb, M_El, 1),
11337     TEST_f_f (logb, 1024, 10),
11338     TEST_f_f (logb, -2000, 10),
11339
11340     TEST_f_f (logb, 0x0.1p-127, -131),
11341     TEST_f_f (logb, 0x0.01p-127, -135),
11342     TEST_f_f (logb, 0x0.011p-127, -135),
11343 #ifndef TEST_FLOAT
11344     TEST_f_f (logb, 0x0.8p-1022, -1023),
11345     TEST_f_f (logb, 0x0.1p-1022, -1026),
11346     TEST_f_f (logb, 0x0.00111p-1022, -1034),
11347     TEST_f_f (logb, 0x0.00001p-1022, -1042),
11348     TEST_f_f (logb, 0x0.000011p-1022, -1042),
11349     TEST_f_f (logb, 0x0.0000000000001p-1022, -1074),
11350 #endif
11351 #if defined TEST_LDOUBLE && LDBL_MIN_EXP - LDBL_MANT_DIG <= -16400
11352     TEST_f_f (logb, 0x1p-16400L, -16400),
11353     TEST_f_f (logb, 0x.00000000001p-16382L, -16426),
11354 #endif
11355     END_DATA (logb)
11356   };
11357
11358 static void
11359 logb_test (void)
11360 {
11361   START (logb);
11362   RUN_TEST_LOOP_f_f (logb, logb_test_data, );
11363   END (logb);
11364 }
11365
11366 static const struct test_f_f_data logb_downward_test_data[] =
11367   {
11368     START_DATA (logb_downward),
11369     /* IEEE 754-2008 says (section 5.3.3) that "logB(1) is +0.".  Libm
11370        should not return -0 from logb in any rounding mode.  PowerPC32 has
11371        failed with this test for power4 logb (and logbl on all PowerPC
11372        platforms) in the past due to instruction selection.  GCC PR 52775
11373        provides the availability of the fcfid insn in 32-bit mode which
11374        eliminates the use of fsub in this instance and prevents the negative
11375        signed 0.0.  */
11376
11377     /* BZ #887  */
11378     TEST_f_f (logb, 1.000e+0, plus_zero),
11379     END_DATA (logb_downward)
11380   };
11381
11382 static void
11383 logb_test_downward (void)
11384 {
11385   errno = 0;
11386
11387   FUNC(logb) (0);
11388   if (errno == ENOSYS)
11389     /* Function not implemented.  */
11390     return;
11391
11392   START (logb_downward);
11393   RUN_TEST_LOOP_f_f (logb, logb_downward_test_data, FE_DOWNWARD);
11394   END (logb_downward);
11395 }
11396
11397 static void
11398 lround_test (void)
11399 {
11400   /* TODO: missing +/-Inf as well as qNaN tests.  */
11401
11402   START (lround);
11403
11404   TEST_f_l (lround, 0, 0);
11405   TEST_f_l (lround, minus_zero, 0);
11406   TEST_f_l (lround, 0.2L, 0.0);
11407   TEST_f_l (lround, -0.2L, 0);
11408   TEST_f_l (lround, 0.5, 1);
11409   TEST_f_l (lround, -0.5, -1);
11410   TEST_f_l (lround, 0.8L, 1);
11411   TEST_f_l (lround, -0.8L, -1);
11412   TEST_f_l (lround, 1.5, 2);
11413   TEST_f_l (lround, -1.5, -2);
11414   TEST_f_l (lround, 22514.5, 22515);
11415   TEST_f_l (lround, -22514.5, -22515);
11416   TEST_f_l (lround, 1071930.0008, 1071930);
11417 #ifndef TEST_FLOAT
11418   TEST_f_l (lround, 1073741824.01, 1073741824);
11419 # if LONG_MAX > 281474976710656
11420   TEST_f_l (lround, 281474976710656.025, 281474976710656);
11421   TEST_f_l (lround, 18014398509481974, 18014398509481974);
11422 # endif
11423   TEST_f_l (lround, 2097152.5, 2097153);
11424   TEST_f_l (lround, -2097152.5, -2097153);
11425   /* nextafter(0.5,-1)  */
11426   TEST_f_l (lround, 0x1.fffffffffffffp-2, 0);
11427   /* nextafter(-0.5,1)  */
11428   TEST_f_l (lround, -0x1.fffffffffffffp-2, 0);
11429 #else
11430   /* nextafter(0.5,-1)  */
11431   TEST_f_l (lround, 0x1.fffffp-2, 0);
11432   /* nextafter(-0.5,1)  */
11433   TEST_f_l (lround, -0x1.fffffp-2, 0);
11434   TEST_f_l (lround, 0x1.fffffep+23, 16777215);
11435   TEST_f_l (lround, -0x1.fffffep+23, -16777215);
11436 #endif
11437   END (lround);
11438 }
11439
11440
11441 static void
11442 llround_test (void)
11443 {
11444   /* TODO: missing +/-Inf as well as qNaN tests.  */
11445
11446   START (llround);
11447
11448   TEST_f_L (llround, 0, 0);
11449   TEST_f_L (llround, minus_zero, 0);
11450   TEST_f_L (llround, 0.2L, 0.0);
11451   TEST_f_L (llround, -0.2L, 0);
11452   TEST_f_L (llround, 0.5, 1);
11453   TEST_f_L (llround, -0.5, -1);
11454   TEST_f_L (llround, 0.8L, 1);
11455   TEST_f_L (llround, -0.8L, -1);
11456   TEST_f_L (llround, 1.5, 2);
11457   TEST_f_L (llround, -1.5, -2);
11458   TEST_f_L (llround, 22514.5, 22515);
11459   TEST_f_L (llround, -22514.5, -22515);
11460   TEST_f_l (llround, 1071930.0008, 1071930);
11461 #ifndef TEST_FLOAT
11462   TEST_f_L (llround, 2097152.5, 2097153);
11463   TEST_f_L (llround, -2097152.5, -2097153);
11464   TEST_f_L (llround, 34359738368.5, 34359738369ll);
11465   TEST_f_L (llround, -34359738368.5, -34359738369ll);
11466   TEST_f_L (llround, -3.65309740835E17, -365309740835000000LL);
11467 #endif
11468
11469   /* Test boundary conditions.  */
11470   /* 0x1FFFFF */
11471   TEST_f_L (llround, 2097151.0, 2097151LL);
11472   /* 0x800000 */
11473   TEST_f_L (llround, 8388608.0, 8388608LL);
11474   /* 0x1000000 */
11475   TEST_f_L (llround, 16777216.0, 16777216LL);
11476   /* 0x20000000000 */
11477   TEST_f_L (llround, 2199023255552.0, 2199023255552LL);
11478   /* 0x40000000000 */
11479   TEST_f_L (llround, 4398046511104.0, 4398046511104LL);
11480   /* 0x1000000000000 */
11481   TEST_f_L (llround, 281474976710656.0, 281474976710656LL);
11482   /* 0x10000000000000 */
11483   TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL);
11484   /* 0x10000080000000 */
11485   TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL);
11486   /* 0x20000000000000 */
11487   TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL);
11488   /* 0x80000000000000 */
11489   TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL);
11490   /* 0x100000000000000 */
11491   TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL);
11492
11493 #ifndef TEST_FLOAT
11494   /* 0x100000000 */
11495   TEST_f_L (llround, 4294967295.5, 4294967296LL);
11496   /* 0x200000000 */
11497   TEST_f_L (llround, 8589934591.5, 8589934592LL);
11498
11499   /* nextafter(0.5,-1)  */
11500   TEST_f_L (llround, 0x1.fffffffffffffp-2, 0);
11501   /* nextafter(-0.5,1)  */
11502   TEST_f_L (llround, -0x1.fffffffffffffp-2, 0);
11503   /* On PowerPC an exponent of '52' is the largest incrementally
11504    * representable sequence of whole-numbers in the 'double' range.  We test
11505    * lround to make sure that a guard bit set during the lround operation
11506    * hasn't forced an erroneous shift giving us an incorrect result.  The odd
11507    * numbers between +-(2^52+1 and 2^53-1) are affected since they have the
11508    * rightmost bit set.  */
11509   /* +-(2^52+1)  */
11510   TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL);
11511   TEST_f_L (llround, -0x1.0000000000001p+52,-4503599627370497LL);
11512   /* +-(2^53-1): Input is the last (positive and negative) incrementally
11513    * representable whole-number in the 'double' range that might round
11514    * erroneously.  */
11515   TEST_f_L (llround, 0x1.fffffffffffffp+52, 9007199254740991LL);
11516   TEST_f_L (llround, -0x1.fffffffffffffp+52, -9007199254740991LL);
11517 #else
11518   /* nextafter(0.5,-1)  */
11519   TEST_f_L (llround, 0x1.fffffep-2, 0);
11520   /* nextafter(-0.5,1)  */
11521   TEST_f_L (llround, -0x1.fffffep-2, 0);
11522   /* As above, on PowerPC an exponent of '23' is the largest incrementally
11523    * representable sequence of whole-numbers in the 'float' range.
11524    * Likewise, numbers between +-(2^23+1 and 2^24-1) are affected.  */
11525   TEST_f_L (llround, 0x1.000002p+23,8388609);
11526   TEST_f_L (llround, -0x1.000002p+23,-8388609);
11527   TEST_f_L (llround, 0x1.fffffep+23, 16777215);
11528   TEST_f_L (llround, -0x1.fffffep+23, -16777215);
11529 #endif
11530
11531
11532 #ifdef TEST_LDOUBLE
11533   /* The input can only be represented in long double.  */
11534   TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL);
11535   TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL);
11536   TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL);
11537   TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL);
11538   TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL);
11539
11540 # if LDBL_MANT_DIG > 100
11541   TEST_f_L (llround, 4503599627370495.4999999999999L, 4503599627370495LL);
11542   TEST_f_L (llround, 4503599627370496.4999999999999L, 4503599627370496LL);
11543   TEST_f_L (llround, 4503599627370497.4999999999999L, 4503599627370497LL);
11544   TEST_f_L (llround, 4503599627370494.5000000000001L, 4503599627370495LL);
11545   TEST_f_L (llround, 4503599627370495.5000000000001L, 4503599627370496LL);
11546   TEST_f_L (llround, 4503599627370496.5000000000001L, 4503599627370497LL);
11547
11548   TEST_f_L (llround, -4503599627370495.4999999999999L, -4503599627370495LL);
11549   TEST_f_L (llround, -4503599627370496.4999999999999L, -4503599627370496LL);
11550   TEST_f_L (llround, -4503599627370497.4999999999999L, -4503599627370497LL);
11551   TEST_f_L (llround, -4503599627370494.5000000000001L, -4503599627370495LL);
11552   TEST_f_L (llround, -4503599627370495.5000000000001L, -4503599627370496LL);
11553   TEST_f_L (llround, -4503599627370496.5000000000001L, -4503599627370497LL);
11554 # endif
11555
11556   TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL);
11557   TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL);
11558   TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL);
11559   TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL);
11560   TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL);
11561
11562   TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL);
11563   TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL);
11564   TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL);
11565   TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL);
11566   TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL);
11567
11568 # if LDBL_MANT_DIG > 100
11569   TEST_f_L (llround, 9007199254740991.4999999999999L, 9007199254740991LL);
11570   TEST_f_L (llround, 9007199254740992.4999999999999L, 9007199254740992LL);
11571   TEST_f_L (llround, 9007199254740993.4999999999999L, 9007199254740993LL);
11572   TEST_f_L (llround, 9007199254740991.5000000000001L, 9007199254740992LL);
11573   TEST_f_L (llround, 9007199254740992.5000000000001L, 9007199254740993LL);
11574   TEST_f_L (llround, 9007199254740993.5000000000001L, 9007199254740994LL);
11575
11576   TEST_f_L (llround, -9007199254740991.4999999999999L, -9007199254740991LL);
11577   TEST_f_L (llround, -9007199254740992.4999999999999L, -9007199254740992LL);
11578   TEST_f_L (llround, -9007199254740993.4999999999999L, -9007199254740993LL);
11579   TEST_f_L (llround, -9007199254740991.5000000000001L, -9007199254740992LL);
11580   TEST_f_L (llround, -9007199254740992.5000000000001L, -9007199254740993LL);
11581   TEST_f_L (llround, -9007199254740993.5000000000001L, -9007199254740994LL);
11582 # endif
11583
11584   TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL);
11585   TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL);
11586   TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL);
11587   TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL);
11588   TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL);
11589
11590   TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL);
11591   TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL);
11592   TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL);
11593   TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL);
11594   TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL);
11595
11596   TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL);
11597   TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL);
11598   TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL);
11599   TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL);
11600   TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL);
11601
11602   TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL);
11603   TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL);
11604   TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL);
11605   TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL);
11606   TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL);
11607   TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL);
11608 #endif
11609
11610   END (llround);
11611 }
11612
11613 static const struct test_fF_f1_data modf_test_data[] =
11614   {
11615     START_DATA (modf),
11616     TEST_fF_f1 (modf, plus_infty, 0, plus_infty),
11617     TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty),
11618     TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value),
11619     TEST_fF_f1 (modf, 0, 0, 0),
11620     TEST_fF_f1 (modf, 1.5, 0.5, 1),
11621     TEST_fF_f1 (modf, 2.5, 0.5, 2),
11622     TEST_fF_f1 (modf, -2.5, -0.5, -2),
11623     TEST_fF_f1 (modf, 20, 0, 20),
11624     TEST_fF_f1 (modf, 21, 0, 21),
11625     TEST_fF_f1 (modf, 89.5, 0.5, 89),
11626     END_DATA (modf)
11627   };
11628
11629 static void
11630 modf_test (void)
11631 {
11632   FLOAT x;
11633
11634   START (modf);
11635   RUN_TEST_LOOP_fF_f1 (modf, modf_test_data, , x);
11636   END (modf);
11637 }
11638
11639
11640 static const struct test_f_f_data nearbyint_test_data[] =
11641   {
11642     START_DATA (nearbyint),
11643
11644     TEST_f_f (nearbyint, 0.0, 0.0),
11645     TEST_f_f (nearbyint, minus_zero, minus_zero),
11646     TEST_f_f (nearbyint, plus_infty, plus_infty),
11647     TEST_f_f (nearbyint, minus_infty, minus_infty),
11648     TEST_f_f (nearbyint, qnan_value, qnan_value),
11649
11650     /* Subnormal values */
11651     TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307),
11652     TEST_f_f (nearbyint, -4.45015e-308, minus_zero),
11653
11654     /* Default rounding mode is round to nearest.  */
11655     TEST_f_f (nearbyint, 0.5, 0.0),
11656     TEST_f_f (nearbyint, 1.5, 2.0),
11657     TEST_f_f (nearbyint, -0.5, minus_zero),
11658     TEST_f_f (nearbyint, -1.5, -2.0),
11659
11660     TEST_f_f (nearbyint, 262144.75, 262145.0),
11661     TEST_f_f (nearbyint, 262142.75, 262143.0),
11662     TEST_f_f (nearbyint, 524286.75, 524287.0),
11663     TEST_f_f (nearbyint, 524288.75, 524289.0),
11664
11665     TEST_f_f (nearbyint, 1048576.75, 1048577.0),
11666     TEST_f_f (nearbyint, 2097152.75, 2097153.0),
11667     TEST_f_f (nearbyint, 2492472.75, 2492473.0),
11668     TEST_f_f (nearbyint, 2886220.75, 2886221.0),
11669     TEST_f_f (nearbyint, 3058792.75, 3058793.0),
11670     TEST_f_f (nearbyint, -1048576.75, -1048577.0),
11671     TEST_f_f (nearbyint, -2097152.75, -2097153.0),
11672     TEST_f_f (nearbyint, -2492472.75, -2492473.0),
11673     TEST_f_f (nearbyint, -2886220.75, -2886221.0),
11674     TEST_f_f (nearbyint, -3058792.75, -3058793.0),
11675 #ifndef TEST_FLOAT
11676     TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0),
11677     TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0),
11678     TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0),
11679     TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0),
11680     TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0),
11681     TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0),
11682     TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0),
11683     TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0),
11684     TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0),
11685     TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0),
11686 #endif
11687
11688     END_DATA (nearbyint)
11689   };
11690
11691 static void
11692 nearbyint_test (void)
11693 {
11694   START (nearbyint);
11695   RUN_TEST_LOOP_f_f (nearbyint, nearbyint_test_data, );
11696   END (nearbyint);
11697 }
11698
11699 static const struct test_ff_f_data nextafter_test_data[] =
11700   {
11701     START_DATA (nextafter),
11702
11703     TEST_ff_f (nextafter, 0, 0, 0),
11704     TEST_ff_f (nextafter, minus_zero, 0, 0),
11705     TEST_ff_f (nextafter, 0, minus_zero, minus_zero),
11706     TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero),
11707
11708     TEST_ff_f (nextafter, 9, 9, 9),
11709     TEST_ff_f (nextafter, -9, -9, -9),
11710     TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty),
11711     TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty),
11712
11713     TEST_ff_f (nextafter, qnan_value, 1.1L, qnan_value),
11714     TEST_ff_f (nextafter, 1.1L, qnan_value, qnan_value),
11715     TEST_ff_f (nextafter, qnan_value, qnan_value, qnan_value),
11716
11717     TEST_ff_f (nextafter, max_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
11718     TEST_ff_f (nextafter, -max_value, minus_infty, minus_infty, OVERFLOW_EXCEPTION),
11719
11720 #ifdef TEST_LDOUBLE
11721     // XXX Enable once gcc is fixed.
11722     //TEST_ff_f (nextafter, 0x0.00000040000000000000p-16385L, -0.1L, 0x0.0000003ffffffff00000p-16385L),
11723 #endif
11724
11725     /* XXX We need the hexadecimal FP number representation here for further
11726        tests.  */
11727     END_DATA (nextafter)
11728   };
11729
11730 static void
11731 nextafter_test (void)
11732 {
11733
11734   START (nextafter);
11735   RUN_TEST_LOOP_ff_f (nextafter, nextafter_test_data, );
11736   END (nextafter);
11737 }
11738
11739
11740 static const struct test_ff_f_data_nexttoward nexttoward_test_data[] =
11741   {
11742     START_DATA (nexttoward),
11743     TEST_ff_f (nexttoward, 0, 0, 0),
11744     TEST_ff_f (nexttoward, minus_zero, 0, 0),
11745     TEST_ff_f (nexttoward, 0, minus_zero, minus_zero),
11746     TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero),
11747
11748     TEST_ff_f (nexttoward, 9, 9, 9),
11749     TEST_ff_f (nexttoward, -9, -9, -9),
11750     TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty),
11751     TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty),
11752
11753     TEST_ff_f (nexttoward, qnan_value, 1.1L, qnan_value),
11754     TEST_ff_f (nexttoward, 1.1L, qnan_value, qnan_value),
11755     TEST_ff_f (nexttoward, qnan_value, qnan_value, qnan_value),
11756
11757 #ifdef TEST_FLOAT
11758     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.000002p0),
11759     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.000002p0),
11760     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.000002p0),
11761     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.ffffffp0),
11762     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.ffffffp0),
11763     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.ffffffp0),
11764     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.000002p0),
11765     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.000002p0),
11766     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.000002p0),
11767     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.ffffffp0),
11768     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.ffffffp0),
11769     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.ffffffp0),
11770     TEST_ff_f (nexttoward, -0x1.3p-145, -0xap-148L, -0x1.4p-145, UNDERFLOW_EXCEPTION),
11771 # if LDBL_MANT_DIG >= 64
11772     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.000002p0),
11773     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.ffffffp0),
11774     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.000002p0),
11775     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.ffffffp0),
11776 # endif
11777 # if LDBL_MANT_DIG >= 106
11778     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.000002p0),
11779     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.ffffffp0),
11780     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.000002p0),
11781     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.ffffffp0),
11782 # endif
11783 # if LDBL_MANT_DIG >= 113
11784     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.000002p0),
11785     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffp0),
11786     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.000002p0),
11787     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffp0),
11788 # endif
11789 #endif
11790 #ifdef TEST_DOUBLE
11791     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.0000000000001p0),
11792     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.0000000000001p0),
11793     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.0000000000001p0),
11794     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.fffffffffffff8p0),
11795     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.fffffffffffff8p0),
11796     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0),
11797     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.0000000000001p0),
11798     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.0000000000001p0),
11799     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.0000000000001p0),
11800     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.fffffffffffff8p0),
11801     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.fffffffffffff8p0),
11802     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0),
11803     TEST_ff_f (nexttoward, -1.0, -0x8.00346dc5d6388p-3L, -0x1.0000000000001p0),
11804     TEST_ff_f (nexttoward, 0x1p-1074, 0x1p-1073L, 0x1p-1073, UNDERFLOW_EXCEPTION),
11805 # if LDBL_MANT_DIG >= 64
11806     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.0000000000001p0),
11807     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffff8p0),
11808     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.0000000000001p0),
11809     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffff8p0),
11810 # endif
11811 # if LDBL_MANT_DIG >= 106
11812     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.0000000000001p0),
11813     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.fffffffffffff8p0),
11814     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.0000000000001p0),
11815     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.fffffffffffff8p0),
11816 # endif
11817 # if LDBL_MANT_DIG >= 113
11818     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.0000000000001p0),
11819     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.fffffffffffff8p0),
11820     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.0000000000001p0),
11821     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.fffffffffffff8p0),
11822 # endif
11823 #endif
11824     END_DATA (nexttoward)
11825   };
11826
11827 static void
11828 nexttoward_test (void)
11829 {
11830   START (nexttoward);
11831   RUN_TEST_LOOP_ff_f (nexttoward, nexttoward_test_data, );
11832   END (nexttoward);
11833 }
11834
11835
11836 static const struct test_ff_f_data pow_test_data[] =
11837   {
11838     START_DATA (pow),
11839     TEST_ff_f (pow, 0, 0, 1),
11840     TEST_ff_f (pow, 0, minus_zero, 1),
11841     TEST_ff_f (pow, minus_zero, 0, 1),
11842     TEST_ff_f (pow, minus_zero, minus_zero, 1),
11843
11844     TEST_ff_f (pow, 10, 0, 1),
11845     TEST_ff_f (pow, 10, minus_zero, 1),
11846     TEST_ff_f (pow, -10, 0, 1),
11847     TEST_ff_f (pow, -10, minus_zero, 1),
11848
11849     TEST_ff_f (pow, qnan_value, 0, 1),
11850     TEST_ff_f (pow, qnan_value, minus_zero, 1),
11851
11852 #ifndef TEST_INLINE
11853     TEST_ff_f (pow, 1.1L, plus_infty, plus_infty),
11854     TEST_ff_f (pow, plus_infty, plus_infty, plus_infty),
11855     TEST_ff_f (pow, -1.1L, plus_infty, plus_infty),
11856     TEST_ff_f (pow, minus_infty, plus_infty, plus_infty),
11857
11858     TEST_ff_f (pow, 0.9L, plus_infty, 0),
11859     TEST_ff_f (pow, 1e-7L, plus_infty, 0),
11860     TEST_ff_f (pow, -0.9L, plus_infty, 0),
11861     TEST_ff_f (pow, -1e-7L, plus_infty, 0),
11862
11863     TEST_ff_f (pow, 1.1L, minus_infty, 0),
11864     TEST_ff_f (pow, plus_infty, minus_infty, 0),
11865     TEST_ff_f (pow, -1.1L, minus_infty, 0),
11866     TEST_ff_f (pow, minus_infty, minus_infty, 0),
11867
11868     TEST_ff_f (pow, 0.9L, minus_infty, plus_infty),
11869     TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty),
11870     TEST_ff_f (pow, -0.9L, minus_infty, plus_infty),
11871     TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty),
11872
11873     TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty),
11874     TEST_ff_f (pow, plus_infty, 1, plus_infty),
11875     TEST_ff_f (pow, plus_infty, 1e7L, plus_infty),
11876     TEST_ff_f (pow, plus_infty, min_subnorm_value, plus_infty),
11877
11878     TEST_ff_f (pow, plus_infty, -1e-7L, 0),
11879     TEST_ff_f (pow, plus_infty, -1, 0),
11880     TEST_ff_f (pow, plus_infty, -1e7L, 0),
11881     TEST_ff_f (pow, plus_infty, -min_subnorm_value, 0),
11882
11883     TEST_ff_f (pow, minus_infty, 1, minus_infty),
11884     TEST_ff_f (pow, minus_infty, 11, minus_infty),
11885     TEST_ff_f (pow, minus_infty, 1001, minus_infty),
11886
11887     TEST_ff_f (pow, minus_infty, 2, plus_infty),
11888     TEST_ff_f (pow, minus_infty, 12, plus_infty),
11889     TEST_ff_f (pow, minus_infty, 1002, plus_infty),
11890     TEST_ff_f (pow, minus_infty, 0.1L, plus_infty),
11891     TEST_ff_f (pow, minus_infty, 1.1L, plus_infty),
11892     TEST_ff_f (pow, minus_infty, 11.1L, plus_infty),
11893     TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty),
11894     TEST_ff_f (pow, minus_infty, min_subnorm_value, plus_infty),
11895
11896     TEST_ff_f (pow, minus_infty, -1, minus_zero),
11897     TEST_ff_f (pow, minus_infty, -11, minus_zero),
11898     TEST_ff_f (pow, minus_infty, -1001, minus_zero),
11899
11900     TEST_ff_f (pow, minus_infty, -2, 0),
11901     TEST_ff_f (pow, minus_infty, -12, 0),
11902     TEST_ff_f (pow, minus_infty, -1002, 0),
11903     TEST_ff_f (pow, minus_infty, -0.1L, 0),
11904     TEST_ff_f (pow, minus_infty, -1.1L, 0),
11905     TEST_ff_f (pow, minus_infty, -11.1L, 0),
11906     TEST_ff_f (pow, minus_infty, -1001.1L, 0),
11907     TEST_ff_f (pow, minus_infty, -min_subnorm_value, 0),
11908 #endif
11909
11910     TEST_ff_f (pow, qnan_value, qnan_value, qnan_value),
11911     TEST_ff_f (pow, 0, qnan_value, qnan_value),
11912     TEST_ff_f (pow, 1, qnan_value, 1),
11913     TEST_ff_f (pow, -1, qnan_value, qnan_value),
11914     TEST_ff_f (pow, qnan_value, 1, qnan_value),
11915     TEST_ff_f (pow, qnan_value, -1, qnan_value),
11916
11917     /* pow (x, qNaN) == qNaN.  */
11918     TEST_ff_f (pow, 3.0, qnan_value, qnan_value),
11919     TEST_ff_f (pow, minus_zero, qnan_value, qnan_value),
11920     TEST_ff_f (pow, plus_infty, qnan_value, qnan_value),
11921     TEST_ff_f (pow, -3.0, qnan_value, qnan_value),
11922     TEST_ff_f (pow, minus_infty, qnan_value, qnan_value),
11923
11924     TEST_ff_f (pow, qnan_value, 3.0, qnan_value),
11925     TEST_ff_f (pow, qnan_value, -3.0, qnan_value),
11926     TEST_ff_f (pow, qnan_value, plus_infty, qnan_value),
11927     TEST_ff_f (pow, qnan_value, minus_infty, qnan_value),
11928     TEST_ff_f (pow, qnan_value, 2.5, qnan_value),
11929     TEST_ff_f (pow, qnan_value, -2.5, qnan_value),
11930     TEST_ff_f (pow, qnan_value, min_subnorm_value, qnan_value),
11931     TEST_ff_f (pow, qnan_value, -min_subnorm_value, qnan_value),
11932
11933     TEST_ff_f (pow, 1, plus_infty, 1),
11934     TEST_ff_f (pow, -1, plus_infty, 1),
11935     TEST_ff_f (pow, 1, minus_infty, 1),
11936     TEST_ff_f (pow, -1, minus_infty, 1),
11937     TEST_ff_f (pow, 1, 1, 1),
11938     TEST_ff_f (pow, 1, -1, 1),
11939     TEST_ff_f (pow, 1, 1.25, 1),
11940     TEST_ff_f (pow, 1, -1.25, 1),
11941     TEST_ff_f (pow, 1, 0x1p62L, 1),
11942     TEST_ff_f (pow, 1, 0x1p63L, 1),
11943     TEST_ff_f (pow, 1, 0x1p64L, 1),
11944     TEST_ff_f (pow, 1, 0x1p72L, 1),
11945     TEST_ff_f (pow, 1, min_subnorm_value, 1),
11946     TEST_ff_f (pow, 1, -min_subnorm_value, 1),
11947
11948     /* pow (x, +-0) == 1.  */
11949     TEST_ff_f (pow, plus_infty, 0, 1),
11950     TEST_ff_f (pow, plus_infty, minus_zero, 1),
11951     TEST_ff_f (pow, minus_infty, 0, 1),
11952     TEST_ff_f (pow, minus_infty, minus_zero, 1),
11953     TEST_ff_f (pow, 32.75L, 0, 1),
11954     TEST_ff_f (pow, 32.75L, minus_zero, 1),
11955     TEST_ff_f (pow, -32.75L, 0, 1),
11956     TEST_ff_f (pow, -32.75L, minus_zero, 1),
11957     TEST_ff_f (pow, 0x1p72L, 0, 1),
11958     TEST_ff_f (pow, 0x1p72L, minus_zero, 1),
11959     TEST_ff_f (pow, 0x1p-72L, 0, 1),
11960     TEST_ff_f (pow, 0x1p-72L, minus_zero, 1),
11961
11962     TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11963     TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11964     TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11965     TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11966     TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11967     TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11968     TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11969     TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11970
11971     TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11972     TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11973     TEST_ff_f (pow, 0, -0xffffff, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11974 #ifndef TEST_FLOAT
11975     TEST_ff_f (pow, 0, -0x1.fffffffffffffp+52L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11976 #endif
11977 #ifdef TEST_LDOUBLE
11978 # if LDBL_MANT_DIG >= 64
11979     TEST_ff_f (pow, 0, -0x1.fffffffffffffffep+63L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11980 # endif
11981 # if LDBL_MANT_DIG >= 106
11982     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffff8p+105L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11983 # endif
11984 # if LDBL_MANT_DIG >= 113
11985     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffffffp+112L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11986 # endif
11987 #endif
11988     TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11989     TEST_ff_f (pow, minus_zero, -11L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11990     TEST_ff_f (pow, minus_zero, -0xffffff, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11991     TEST_ff_f (pow, minus_zero, -0x1fffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11992 #ifndef TEST_FLOAT
11993     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+52L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11994     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+53L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11995 #endif
11996 #ifdef TEST_LDOUBLE
11997 # if LDBL_MANT_DIG >= 64
11998     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+63L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11999     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+64L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12000 # endif
12001 # if LDBL_MANT_DIG >= 106
12002     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12003     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12004 # endif
12005 # if LDBL_MANT_DIG >= 113
12006     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12007     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12008 # endif
12009 #endif
12010
12011     TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12012     TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12013     TEST_ff_f (pow, 0, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12014     TEST_ff_f (pow, 0, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12015     TEST_ff_f (pow, 0, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12016     TEST_ff_f (pow, 0, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12017     TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12018     TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12019     TEST_ff_f (pow, minus_zero, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12020     TEST_ff_f (pow, minus_zero, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12021     TEST_ff_f (pow, minus_zero, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12022     TEST_ff_f (pow, minus_zero, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
12023
12024     TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty, OVERFLOW_EXCEPTION),
12025     TEST_ff_f (pow, 10, -0x1p72L, 0, UNDERFLOW_EXCEPTION),
12026     TEST_ff_f (pow, max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
12027     TEST_ff_f (pow, 10, -max_value, 0, UNDERFLOW_EXCEPTION),
12028
12029     TEST_ff_f (pow, 0, 1, 0),
12030     TEST_ff_f (pow, 0, 11, 0),
12031
12032     TEST_ff_f (pow, minus_zero, 1, minus_zero),
12033     TEST_ff_f (pow, minus_zero, 11, minus_zero),
12034
12035     TEST_ff_f (pow, 0, 2, 0),
12036     TEST_ff_f (pow, 0, 11.1L, 0),
12037
12038     TEST_ff_f (pow, minus_zero, 2, 0),
12039     TEST_ff_f (pow, minus_zero, 11.1L, 0),
12040     TEST_ff_f (pow, 0, plus_infty, 0),
12041     TEST_ff_f (pow, minus_zero, plus_infty, 0),
12042     TEST_ff_f (pow, 0, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
12043     TEST_ff_f (pow, minus_zero, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
12044
12045 #ifndef TEST_INLINE
12046     /* pow (x, +inf) == +inf for |x| > 1.  */
12047     TEST_ff_f (pow, 1.5, plus_infty, plus_infty),
12048
12049     /* pow (x, +inf) == +0 for |x| < 1.  */
12050     TEST_ff_f (pow, 0.5, plus_infty, 0.0),
12051
12052     /* pow (x, -inf) == +0 for |x| > 1.  */
12053     TEST_ff_f (pow, 1.5, minus_infty, 0.0),
12054
12055     /* pow (x, -inf) == +inf for |x| < 1.  */
12056     TEST_ff_f (pow, 0.5, minus_infty, plus_infty),
12057 #endif
12058
12059     /* pow (+inf, y) == +inf for y > 0.  */
12060     TEST_ff_f (pow, plus_infty, 2, plus_infty),
12061     TEST_ff_f (pow, plus_infty, 0xffffff, plus_infty),
12062 #ifndef TEST_FLOAT
12063     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffp+52L, plus_infty),
12064 #endif
12065 #ifdef TEST_LDOUBLE
12066 # if LDBL_MANT_DIG >= 64
12067     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffffep+63L, plus_infty),
12068 # endif
12069 # if LDBL_MANT_DIG >= 106
12070     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, plus_infty),
12071 # endif
12072 # if LDBL_MANT_DIG >= 113
12073     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, plus_infty),
12074 # endif
12075 #endif
12076     TEST_ff_f (pow, plus_infty, 0x1p24, plus_infty),
12077     TEST_ff_f (pow, plus_infty, 0x1p127, plus_infty),
12078     TEST_ff_f (pow, plus_infty, max_value, plus_infty),
12079
12080     /* pow (+inf, y) == +0 for y < 0.  */
12081     TEST_ff_f (pow, plus_infty, -1, 0.0),
12082     TEST_ff_f (pow, plus_infty, -0xffffff, 0.0),
12083 #ifndef TEST_FLOAT
12084     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffp+52L, 0.0),
12085 #endif
12086 #ifdef TEST_LDOUBLE
12087 # if LDBL_MANT_DIG >= 64
12088     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffffep+63L, 0.0),
12089 # endif
12090 # if LDBL_MANT_DIG >= 106
12091     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
12092 # endif
12093 # if LDBL_MANT_DIG >= 113
12094     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
12095 # endif
12096 #endif
12097     TEST_ff_f (pow, plus_infty, -0x1p24, 0.0),
12098     TEST_ff_f (pow, plus_infty, -0x1p127, 0.0),
12099     TEST_ff_f (pow, plus_infty, -max_value, 0.0),
12100
12101     /* pow (-inf, y) == -inf for y an odd integer > 0.  */
12102     TEST_ff_f (pow, minus_infty, 27, minus_infty),
12103     TEST_ff_f (pow, minus_infty, 0xffffff, minus_infty),
12104     TEST_ff_f (pow, minus_infty, 0x1fffffe, plus_infty),
12105 #ifndef TEST_FLOAT
12106     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+52L, minus_infty),
12107     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+53L, plus_infty),
12108 #endif
12109 #ifdef TEST_LDOUBLE
12110 # if LDBL_MANT_DIG >= 64
12111     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+63L, minus_infty),
12112     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+64L, plus_infty),
12113 # endif
12114 # if LDBL_MANT_DIG >= 106
12115     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty),
12116     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty),
12117 # endif
12118 # if LDBL_MANT_DIG >= 113
12119     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty),
12120     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty),
12121 # endif
12122 #endif
12123
12124     /* pow (-inf, y) == +inf for y > 0 and not an odd integer.  */
12125     TEST_ff_f (pow, minus_infty, 28, plus_infty),
12126     TEST_ff_f (pow, minus_infty, 0x1p24, plus_infty),
12127     TEST_ff_f (pow, minus_infty, 0x1p127, plus_infty),
12128     TEST_ff_f (pow, minus_infty, max_value, plus_infty),
12129
12130     /* pow (-inf, y) == -0 for y an odd integer < 0. */
12131     TEST_ff_f (pow, minus_infty, -3, minus_zero),
12132     TEST_ff_f (pow, minus_infty, -0xffffff, minus_zero),
12133     TEST_ff_f (pow, minus_infty, -0x1fffffe, plus_zero),
12134 #ifndef TEST_FLOAT
12135     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+52L, minus_zero),
12136     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+53L, plus_zero),
12137 #endif
12138 #ifdef TEST_LDOUBLE
12139 # if LDBL_MANT_DIG >= 64
12140     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+63L, minus_zero),
12141     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+64L, plus_zero),
12142 # endif
12143 # if LDBL_MANT_DIG >= 106
12144     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
12145     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
12146 # endif
12147 # if LDBL_MANT_DIG >= 113
12148     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
12149     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
12150 # endif
12151 #endif
12152     /* pow (-inf, y) == +0 for y < 0 and not an odd integer.  */
12153     TEST_ff_f (pow, minus_infty, -2.0, 0.0),
12154     TEST_ff_f (pow, minus_infty, -0x1p24, 0.0),
12155     TEST_ff_f (pow, minus_infty, -0x1p127, 0.0),
12156     TEST_ff_f (pow, minus_infty, -max_value, 0.0),
12157
12158     /* pow (+0, y) == +0 for y an odd integer > 0.  */
12159     TEST_ff_f (pow, 0.0, 27, 0.0),
12160     TEST_ff_f (pow, 0.0, 0xffffff, 0.0),
12161 #ifndef TEST_FLOAT
12162     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffp+52L, 0.0),
12163 #endif
12164 #ifdef TEST_LDOUBLE
12165 # if LDBL_MANT_DIG >= 64
12166     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffffep+63L, 0.0),
12167 # endif
12168 # if LDBL_MANT_DIG >= 106
12169     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
12170 # endif
12171 # if LDBL_MANT_DIG >= 113
12172     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
12173 # endif
12174 #endif
12175
12176     /* pow (-0, y) == -0 for y an odd integer > 0.  */
12177     TEST_ff_f (pow, minus_zero, 27, minus_zero),
12178     TEST_ff_f (pow, minus_zero, 0xffffff, minus_zero),
12179     TEST_ff_f (pow, minus_zero, 0x1fffffe, plus_zero),
12180 #ifndef TEST_FLOAT
12181     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+52L, minus_zero),
12182     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+53L, plus_zero),
12183 #endif
12184 #ifdef TEST_LDOUBLE
12185 # if LDBL_MANT_DIG >= 64
12186     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+63L, minus_zero),
12187     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+64L, plus_zero),
12188 # endif
12189 # if LDBL_MANT_DIG >= 106
12190     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
12191     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
12192 # endif
12193 # if LDBL_MANT_DIG >= 113
12194     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
12195     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
12196 # endif
12197 #endif
12198
12199     /* pow (+0, y) == +0 for y > 0 and not an odd integer.  */
12200     TEST_ff_f (pow, 0.0, 4, 0.0),
12201     TEST_ff_f (pow, 0.0, 0x1p24, 0.0),
12202     TEST_ff_f (pow, 0.0, 0x1p127, 0.0),
12203     TEST_ff_f (pow, 0.0, max_value, 0.0),
12204     TEST_ff_f (pow, 0.0, min_subnorm_value, 0.0),
12205
12206     /* pow (-0, y) == +0 for y > 0 and not an odd integer.  */
12207     TEST_ff_f (pow, minus_zero, 4, 0.0),
12208     TEST_ff_f (pow, minus_zero, 0x1p24, 0.0),
12209     TEST_ff_f (pow, minus_zero, 0x1p127, 0.0),
12210     TEST_ff_f (pow, minus_zero, max_value, 0.0),
12211     TEST_ff_f (pow, minus_zero, min_subnorm_value, 0.0),
12212
12213     TEST_ff_f (pow, 16, 0.25L, 2),
12214     TEST_ff_f (pow, 0x1p64L, 0.125L, 256),
12215     TEST_ff_f (pow, 2, 4, 16),
12216     TEST_ff_f (pow, 256, 8, 0x1p64L),
12217
12218     TEST_ff_f (pow, 0.75L, 1.25L, 0.697953644326574699205914060237425566L),
12219
12220 #if defined TEST_DOUBLE || defined TEST_LDOUBLE
12221     TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0, UNDERFLOW_EXCEPTION),
12222 #endif
12223
12224     TEST_ff_f (pow, -1.0, -0xffffff, -1.0),
12225     TEST_ff_f (pow, -1.0, -0x1fffffe, 1.0),
12226 #ifndef TEST_FLOAT
12227     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+52L, -1.0),
12228     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+53L, 1.0),
12229 #endif
12230 #ifdef TEST_LDOUBLE
12231 # if LDBL_MANT_DIG >= 64
12232     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+63L, -1.0),
12233     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+64L, 1.0),
12234 # endif
12235 # if LDBL_MANT_DIG >= 106
12236     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
12237     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
12238 # endif
12239 # if LDBL_MANT_DIG >= 113
12240     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
12241     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
12242 # endif
12243 #endif
12244     TEST_ff_f (pow, -1.0, -max_value, 1.0),
12245
12246     TEST_ff_f (pow, -1.0, 0xffffff, -1.0),
12247     TEST_ff_f (pow, -1.0, 0x1fffffe, 1.0),
12248 #ifndef TEST_FLOAT
12249     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+52L, -1.0),
12250     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+53L, 1.0),
12251 #endif
12252 #ifdef TEST_LDOUBLE
12253 # if LDBL_MANT_DIG >= 64
12254     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+63L, -1.0),
12255     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+64L, 1.0),
12256 # endif
12257 # if LDBL_MANT_DIG >= 106
12258     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
12259     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
12260 # endif
12261 # if LDBL_MANT_DIG >= 113
12262     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
12263     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
12264 # endif
12265 #endif
12266     TEST_ff_f (pow, -1.0, max_value, 1.0),
12267
12268     TEST_ff_f (pow, -2.0, 126, 0x1p126),
12269     TEST_ff_f (pow, -2.0, 127, -0x1p127),
12270     /* Allow inexact results for float to be considered to underflow.  */
12271     TEST_ff_f (pow, -2.0, -126, 0x1p-126, UNDERFLOW_EXCEPTION_OK_FLOAT),
12272     TEST_ff_f (pow, -2.0, -127, -0x1p-127, UNDERFLOW_EXCEPTION_OK_FLOAT),
12273
12274     TEST_ff_f (pow, -2.0, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12275     TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12276 #ifndef TEST_FLOAT
12277     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12278     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12279 #endif
12280 #ifdef TEST_LDOUBLE
12281 # if LDBL_MANT_DIG >= 64
12282     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12283     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12284 # endif
12285 # if LDBL_MANT_DIG >= 106
12286     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12287     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12288 # endif
12289 # if LDBL_MANT_DIG >= 113
12290     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12291     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12292 # endif
12293 #endif
12294     TEST_ff_f (pow, -2.0, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12295
12296     TEST_ff_f (pow, -2.0, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12297     TEST_ff_f (pow, -2.0, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12298 #ifndef TEST_FLOAT
12299     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12300     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12301 #endif
12302 #ifdef TEST_LDOUBLE
12303 # if LDBL_MANT_DIG >= 64
12304     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12305     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12306 # endif
12307 # if LDBL_MANT_DIG >= 106
12308     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12309     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12310 # endif
12311 # if LDBL_MANT_DIG >= 113
12312     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12313     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12314 # endif
12315 #endif
12316     TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION),
12317
12318     TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION),
12319     TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION),
12320     TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12321     TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION),
12322     TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION),
12323     TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION),
12324     TEST_ff_f (pow, -max_value, 3, minus_infty, OVERFLOW_EXCEPTION),
12325
12326     TEST_ff_f (pow, -max_value, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12327     TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12328 #ifndef TEST_FLOAT
12329     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12330     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12331 #endif
12332 #ifdef TEST_LDOUBLE
12333 # if LDBL_MANT_DIG >= 64
12334     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12335     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12336 # endif
12337 # if LDBL_MANT_DIG >= 106
12338     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12339     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12340 # endif
12341 # if LDBL_MANT_DIG >= 113
12342     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12343     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12344 # endif
12345 #endif
12346     TEST_ff_f (pow, -max_value, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12347
12348     TEST_ff_f (pow, -max_value, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12349     TEST_ff_f (pow, -max_value, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12350 #ifndef TEST_FLOAT
12351     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12352     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12353 #endif
12354 #ifdef TEST_LDOUBLE
12355 # if LDBL_MANT_DIG >= 64
12356     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12357     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12358 # endif
12359 # if LDBL_MANT_DIG >= 106
12360     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12361     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12362 # endif
12363 # if LDBL_MANT_DIG >= 113
12364     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12365     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12366 # endif
12367 #endif
12368     TEST_ff_f (pow, -max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
12369
12370     TEST_ff_f (pow, -0.5, 126, 0x1p-126),
12371     TEST_ff_f (pow, -0.5, 127, -0x1p-127),
12372     TEST_ff_f (pow, -0.5, -126, 0x1p126),
12373     TEST_ff_f (pow, -0.5, -127, -0x1p127),
12374
12375     TEST_ff_f (pow, -0.5, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12376     TEST_ff_f (pow, -0.5, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12377 #ifndef TEST_FLOAT
12378     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12379     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12380 #endif
12381 #ifdef TEST_LDOUBLE
12382 # if LDBL_MANT_DIG >= 64
12383     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12384     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12385 # endif
12386 # if LDBL_MANT_DIG >= 106
12387     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12388     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12389 # endif
12390 # if LDBL_MANT_DIG >= 113
12391     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12392     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12393 # endif
12394 #endif
12395     TEST_ff_f (pow, -0.5, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12396
12397     TEST_ff_f (pow, -0.5, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12398     TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12399 #ifndef TEST_FLOAT
12400     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12401     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12402 #endif
12403 #ifdef TEST_LDOUBLE
12404 # if LDBL_MANT_DIG >= 64
12405     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12406     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12407 # endif
12408 # if LDBL_MANT_DIG >= 106
12409     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12410     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12411 # endif
12412 # if LDBL_MANT_DIG >= 113
12413     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12414     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12415 # endif
12416 #endif
12417     TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12418
12419     TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION),
12420     TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION),
12421     TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12422     TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION),
12423     TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION),
12424     /* Allow inexact results to be considered to underflow.  */
12425     TEST_ff_f (pow, -min_value, 1, -min_value, UNDERFLOW_EXCEPTION_OK),
12426     TEST_ff_f (pow, -min_value, 2, plus_zero, UNDERFLOW_EXCEPTION),
12427     TEST_ff_f (pow, -min_value, 3, minus_zero, UNDERFLOW_EXCEPTION),
12428
12429     TEST_ff_f (pow, -min_value, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12430     TEST_ff_f (pow, -min_value, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12431 #ifndef TEST_FLOAT
12432     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12433     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12434 #endif
12435 #ifdef TEST_LDOUBLE
12436 # if LDBL_MANT_DIG >= 64
12437     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12438     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12439 # endif
12440 # if LDBL_MANT_DIG >= 106
12441     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12442     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12443 # endif
12444 # if LDBL_MANT_DIG >= 113
12445     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12446     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12447 # endif
12448 #endif
12449     TEST_ff_f (pow, -min_value, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12450
12451     TEST_ff_f (pow, -min_value, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12452     TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12453 #ifndef TEST_FLOAT
12454     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12455     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12456 #endif
12457 #ifdef TEST_LDOUBLE
12458 # if LDBL_MANT_DIG >= 64
12459     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12460     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12461 # endif
12462 # if LDBL_MANT_DIG >= 106
12463     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12464     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12465 # endif
12466 # if LDBL_MANT_DIG >= 113
12467     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12468     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12469 # endif
12470 #endif
12471     TEST_ff_f (pow, -min_value, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12472
12473     TEST_ff_f (pow, 0x0.ffffffp0, 10, 0.999999403953712118183885036774764444747L),
12474     TEST_ff_f (pow, 0x0.ffffffp0, 100, 0.999994039553108359406305079606228341585L),
12475     TEST_ff_f (pow, 0x0.ffffffp0, 1000, 0.9999403971297699052276650144650733772182L),
12476     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p24, 0.3678794302077803437135155590023422899744L),
12477     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p30, 1.603807831524924233828134753069728224044e-28L),
12478     TEST_ff_f (pow, 0x0.ffffffp0, 0x1.234566p30, 2.374884712135295099971443365381007297732e-32L),
12479     TEST_ff_f (pow, 0x0.ffffffp0, -10, 1.000000596046643153205170848674671339688L),
12480     TEST_ff_f (pow, 0x0.ffffffp0, -100, 1.000005960482418779499387594989252621451L),
12481     TEST_ff_f (pow, 0x0.ffffffp0, -1000, 1.000059606422943986382898964231519867906L),
12482     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p24, 2.7182819094701610539628664526874952929416L),
12483     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p30, 6.2351609734265057988914412331288163636075e+27L),
12484     TEST_ff_f (pow, 0x0.ffffffp0, -0x1.234566p30, 4.2107307141696353498921307077142537353515e+31L),
12485     TEST_ff_f (pow, 0x1.000002p0, 0x1p24, 7.3890552180866447284268641248075832310141L),
12486     TEST_ff_f (pow, 0x1.000002p0, 0x1.234566p29, 4.2107033006507495188536371520637025716256e+31L),
12487     TEST_ff_f (pow, 0x1.000002p0, -0x1.234566p29, 2.3749001736727769098946062325205705312166e-32L),
12488
12489 #if !defined TEST_FLOAT
12490     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, 0x1.23456789abcdfp62L, 1.0118762747827252817436395051178295138220e-253L),
12491     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, -0x1.23456789abcdfp62L, 9.8826311568054561811190162420900667121992e+252L),
12492     TEST_ff_f (pow, 0x1.0000000000001p0L, 0x1.23456789abcdfp61L, 9.8826311568044974397135026217687399395481e+252L),
12493     TEST_ff_f (pow, 0x1.0000000000001p0L, -0x1.23456789abcdfp61L, 1.0118762747828234466621210689458255908670e-253L),
12494 #endif
12495
12496 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 && LDBL_MAX_EXP >= 16384
12497     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, 0x1.23456789abcdef0ep77L, 1.2079212226420368189981778807634890018840e-4048L),
12498     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, -0x1.23456789abcdef0ep77L, 8.2786855736563746280496724205839522148001e+4047L),
12499     TEST_ff_f (pow, 0x1.0000000000000002p0L, 0x1.23456789abcdef0ep76L, 8.2786855736563683535324500168799315131570e+4047L),
12500     TEST_ff_f (pow, 0x1.0000000000000002p0L, -0x1.23456789abcdef0ep76L, 1.2079212226420377344964713407722652880280e-4048L),
12501 #endif
12502
12503 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
12504     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.23456789abcdef0123456789abcdp126L, 1.2079212226420440237790185999151440179953e-4048L),
12505     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.23456789abcdef0123456789abcdp126L, 8.2786855736563252489063231915535105363602e+4047L),
12506     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, 0x1.23456789abcdef0123456789abcdp125L, 8.2786855736563252489063231915423647547782e+4047L),
12507     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, -0x1.23456789abcdef0123456789abcdp125L, 1.2079212226420440237790185999167702696503e-4048L),
12508 #endif
12509
12510 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
12511     TEST_ff_f (pow, 1e4932L, 0.75L, 1e3699L),
12512     TEST_ff_f (pow, 1e4928L, 0.75L, 1e3696L),
12513     TEST_ff_f (pow, 1e4924L, 0.75L, 1e3693L),
12514     TEST_ff_f (pow, 1e4920L, 0.75L, 1e3690L),
12515     TEST_ff_f (pow, 10.0L, 4932.0L, 1e4932L),
12516     TEST_ff_f (pow, 10.0L, 4931.0L, 1e4931L),
12517     TEST_ff_f (pow, 10.0L, 4930.0L, 1e4930L),
12518     TEST_ff_f (pow, 10.0L, 4929.0L, 1e4929L),
12519     TEST_ff_f (pow, 10.0L, -4931.0L, 1e-4931L),
12520     TEST_ff_f (pow, 10.0L, -4930.0L, 1e-4930L),
12521     TEST_ff_f (pow, 10.0L, -4929.0L, 1e-4929L),
12522     TEST_ff_f (pow, 1e27L, 182.0L, 1e4914L),
12523     TEST_ff_f (pow, 1e27L, -182.0L, 1e-4914L),
12524 #endif
12525
12526     TEST_ff_f (pow, min_subnorm_value, min_subnorm_value, 1.0L),
12527     TEST_ff_f (pow, min_subnorm_value, -min_subnorm_value, 1.0L),
12528     TEST_ff_f (pow, max_value, min_subnorm_value, 1.0L),
12529     TEST_ff_f (pow, max_value, -min_subnorm_value, 1.0L),
12530     TEST_ff_f (pow, 0.99L, min_subnorm_value, 1.0L),
12531     TEST_ff_f (pow, 0.99L, -min_subnorm_value, 1.0L),
12532     TEST_ff_f (pow, 1.01L, min_subnorm_value, 1.0L),
12533     TEST_ff_f (pow, 1.01L, -min_subnorm_value, 1.0L),
12534
12535     TEST_ff_f (pow, 2.0L, -100000.0L, plus_zero, UNDERFLOW_EXCEPTION),
12536     END_DATA (pow)
12537   };
12538
12539 static void
12540 pow_test (void)
12541 {
12542
12543   errno = 0;
12544   FUNC(pow) (0, 0);
12545   if (errno == ENOSYS)
12546     /* Function not implemented.  */
12547     return;
12548
12549   START (pow);
12550   RUN_TEST_LOOP_ff_f (pow, pow_test_data, );
12551   END (pow);
12552 }
12553
12554
12555 static const struct test_ff_f_data pow_tonearest_test_data[] =
12556   {
12557     START_DATA (pow_tonearest),
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_tonearest)
12561   };
12562
12563 static void
12564 pow_test_tonearest (void)
12565 {
12566   errno = 0;
12567   FUNC(pow) (0, 0);
12568   if (errno == ENOSYS)
12569     /* Function not implemented.  */
12570     return;
12571
12572   START (pow_tonearest);
12573   RUN_TEST_LOOP_ff_f (pow, pow_tonearest_test_data, FE_TONEAREST);
12574   END (pow_tonearest);
12575 }
12576
12577
12578 static const struct test_ff_f_data pow_towardzero_test_data[] =
12579   {
12580     START_DATA (pow_towardzero),
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_towardzero)
12584   };
12585
12586 static void
12587 pow_test_towardzero (void)
12588 {
12589   errno = 0;
12590   FUNC(pow) (0, 0);
12591   if (errno == ENOSYS)
12592     /* Function not implemented.  */
12593     return;
12594
12595   START (pow_towardzero);
12596   RUN_TEST_LOOP_ff_f (pow, pow_towardzero_test_data, FE_TOWARDZERO);
12597   END (pow_towardzero);
12598 }
12599
12600
12601 static const struct test_ff_f_data pow_downward_test_data[] =
12602   {
12603     START_DATA (pow_downward),
12604     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12605     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12606     END_DATA (pow_downward)
12607   };
12608
12609 static void
12610 pow_test_downward (void)
12611 {
12612   errno = 0;
12613   FUNC(pow) (0, 0);
12614   if (errno == ENOSYS)
12615     /* Function not implemented.  */
12616     return;
12617
12618   START (pow_downward);
12619   RUN_TEST_LOOP_ff_f (pow, pow_downward_test_data, FE_DOWNWARD);
12620   END (pow_downward);
12621 }
12622
12623
12624 static const struct test_ff_f_data pow_upward_test_data[] =
12625   {
12626     START_DATA (pow_upward),
12627     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12628     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12629     END_DATA (pow_upward)
12630   };
12631
12632 static void
12633 pow_test_upward (void)
12634 {
12635   errno = 0;
12636   FUNC(pow) (0, 0);
12637   if (errno == ENOSYS)
12638     /* Function not implemented.  */
12639     return;
12640
12641   START (pow_upward);
12642   RUN_TEST_LOOP_ff_f (pow, pow_upward_test_data, FE_UPWARD);
12643   END (pow_upward);
12644 }
12645
12646
12647 static const struct test_ff_f_data remainder_test_data[] =
12648   {
12649     START_DATA (remainder),
12650     TEST_ff_f (remainder, 1, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12651     TEST_ff_f (remainder, 1, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12652     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12653     TEST_ff_f (remainder, plus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12654     TEST_ff_f (remainder, plus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12655     TEST_ff_f (remainder, plus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12656     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12657     TEST_ff_f (remainder, minus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12658     TEST_ff_f (remainder, minus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12659     TEST_ff_f (remainder, minus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12660     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, ERRNO_UNCHANGED),
12661     TEST_ff_f (remainder, 0, qnan_value, qnan_value, ERRNO_UNCHANGED),
12662     TEST_ff_f (remainder, qnan_value, 0, qnan_value, ERRNO_UNCHANGED),
12663
12664     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, ERRNO_UNCHANGED),
12665     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, ERRNO_UNCHANGED),
12666
12667     TEST_ff_f (remainder, 1.625, 1.0, -0.375),
12668     TEST_ff_f (remainder, -1.625, 1.0, 0.375),
12669     TEST_ff_f (remainder, 1.625, -1.0, -0.375),
12670     TEST_ff_f (remainder, -1.625, -1.0, 0.375),
12671     TEST_ff_f (remainder, 5.0, 2.0, 1.0),
12672     TEST_ff_f (remainder, 3.0, 2.0, -1.0),
12673     END_DATA (remainder)
12674   };
12675
12676 static void
12677 remainder_test (void)
12678 {
12679   errno = 0;
12680   FUNC(remainder) (1.625, 1.0);
12681   if (errno == ENOSYS)
12682     /* Function not implemented.  */
12683     return;
12684
12685   START (remainder);
12686   RUN_TEST_LOOP_ff_f (remainder, remainder_test_data, );
12687   END (remainder);
12688 }
12689
12690 static const struct test_ffI_f1_data remquo_test_data[] =
12691   {
12692     START_DATA (remquo),
12693     TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, INVALID_EXCEPTION),
12694     TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, INVALID_EXCEPTION),
12695     TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION),
12696     TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION),
12697     TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE),
12698
12699     TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2),
12700     TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2),
12701     TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2),
12702     TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2),
12703
12704     TEST_ffI_f1 (remquo, 5, 2, 1, 2),
12705     TEST_ffI_f1 (remquo, 3, 2, -1, 2),
12706     END_DATA (remquo)
12707   };
12708
12709 static void
12710 remquo_test (void)
12711 {
12712   /* x is needed.  */
12713   int x;
12714
12715   errno = 0;
12716   FUNC(remquo) (1.625, 1.0, &x);
12717   if (errno == ENOSYS)
12718     /* Function not implemented.  */
12719     return;
12720
12721   START (remquo);
12722   RUN_TEST_LOOP_ffI_f1 (remquo, remquo_test_data, , x);
12723   END (remquo);
12724 }
12725
12726 static const struct test_f_f_data rint_test_data[] =
12727   {
12728     START_DATA (rint),
12729     /* TODO: missing qNaN tests.  */
12730
12731     TEST_f_f (rint, 0.0, 0.0),
12732     TEST_f_f (rint, minus_zero, minus_zero),
12733     TEST_f_f (rint, plus_infty, plus_infty),
12734     TEST_f_f (rint, minus_infty, minus_infty),
12735
12736     /* Default rounding mode is round to even.  */
12737     TEST_f_f (rint, 0.5, 0.0),
12738     TEST_f_f (rint, 1.5, 2.0),
12739     TEST_f_f (rint, 2.5, 2.0),
12740     TEST_f_f (rint, 3.5, 4.0),
12741     TEST_f_f (rint, 4.5, 4.0),
12742     TEST_f_f (rint, -0.5, -0.0),
12743     TEST_f_f (rint, -1.5, -2.0),
12744     TEST_f_f (rint, -2.5, -2.0),
12745     TEST_f_f (rint, -3.5, -4.0),
12746     TEST_f_f (rint, -4.5, -4.0),
12747     TEST_f_f (rint, 0.1, 0.0),
12748     TEST_f_f (rint, 0.25, 0.0),
12749     TEST_f_f (rint, 0.625, 1.0),
12750     TEST_f_f (rint, -0.1, -0.0),
12751     TEST_f_f (rint, -0.25, -0.0),
12752     TEST_f_f (rint, -0.625, -1.0),
12753     TEST_f_f (rint, 262144.75, 262145.0),
12754     TEST_f_f (rint, 262142.75, 262143.0),
12755     TEST_f_f (rint, 524286.75, 524287.0),
12756     TEST_f_f (rint, 524288.75, 524289.0),
12757     TEST_f_f (rint, 1048576.75, 1048577.0),
12758     TEST_f_f (rint, 2097152.75, 2097153.0),
12759     TEST_f_f (rint, -1048576.75, -1048577.0),
12760     TEST_f_f (rint, -2097152.75, -2097153.0),
12761 #ifndef TEST_FLOAT
12762     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12763     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12764     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12765     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12766     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12767     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12768     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12769     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12770     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12771     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12772 #endif
12773 #ifdef TEST_LDOUBLE
12774     /* The result can only be represented in long double.  */
12775     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12776     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12777     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12778     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12779     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12780
12781 # if LDBL_MANT_DIG > 100
12782     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12783     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12784     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12785 # endif
12786
12787     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12788     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12789     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12790     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12791     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12792
12793 # if LDBL_MANT_DIG > 100
12794     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12795     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12796     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12797
12798     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12799     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12800     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12801     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12802     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12803     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12804
12805     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12806     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12807     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12808     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12809     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12810     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12811 # endif
12812
12813     TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L),
12814     TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L),
12815     TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L),
12816     TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L),
12817     TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L),
12818
12819     TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L),
12820     TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L),
12821     TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L),
12822     TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L),
12823     TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L),
12824
12825     TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L),
12826     TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L),
12827     TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L),
12828     TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L),
12829     TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L),
12830
12831     TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L),
12832     TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L),
12833     TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L),
12834     TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L),
12835     TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L),
12836
12837     TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
12838     TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
12839     TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
12840     TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
12841     TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
12842 #endif
12843     END_DATA (rint)
12844   };
12845
12846 static void
12847 rint_test (void)
12848 {
12849   START (rint);
12850   RUN_TEST_LOOP_f_f (rint, rint_test_data, );
12851   END (rint);
12852 }
12853
12854 static const struct test_f_f_data rint_tonearest_test_data[] =
12855   {
12856     START_DATA (rint_tonearest),
12857     TEST_f_f (rint, 2.0, 2.0),
12858     TEST_f_f (rint, 1.5, 2.0),
12859     TEST_f_f (rint, 1.0, 1.0),
12860     TEST_f_f (rint, 0.5, 0.0),
12861     TEST_f_f (rint, 0.0, 0.0),
12862     TEST_f_f (rint, minus_zero, minus_zero),
12863     TEST_f_f (rint, -0.5, -0.0),
12864     TEST_f_f (rint, -1.0, -1.0),
12865     TEST_f_f (rint, -1.5, -2.0),
12866     TEST_f_f (rint, -2.0, -2.0),
12867     TEST_f_f (rint, 0.1, 0.0),
12868     TEST_f_f (rint, 0.25, 0.0),
12869     TEST_f_f (rint, 0.625, 1.0),
12870     TEST_f_f (rint, -0.1, -0.0),
12871     TEST_f_f (rint, -0.25, -0.0),
12872     TEST_f_f (rint, -0.625, -1.0),
12873     TEST_f_f (rint, 1048576.75, 1048577.0),
12874     TEST_f_f (rint, 2097152.75, 2097153.0),
12875     TEST_f_f (rint, -1048576.75, -1048577.0),
12876     TEST_f_f (rint, -2097152.75, -2097153.0),
12877 #ifndef TEST_FLOAT
12878     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12879     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12880     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12881     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12882     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12883     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12884     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12885     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12886     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12887     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12888 #endif
12889 #ifdef TEST_LDOUBLE
12890     /* The result can only be represented in long double.  */
12891     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12892     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12893     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12894     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12895     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12896 # if LDBL_MANT_DIG > 100
12897     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12898     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12899     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12900 # endif
12901     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12902     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12903     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12904     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12905     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12906 # if LDBL_MANT_DIG > 100
12907     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12908     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12909     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12910
12911     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12912     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12913     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12914     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12915     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12916     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12917
12918     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12919     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12920     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12921     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12922     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12923     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12924 # endif
12925 #endif
12926     END_DATA (rint_tonearest)
12927   };
12928
12929 static void
12930 rint_test_tonearest (void)
12931 {
12932   START (rint_tonearest);
12933   RUN_TEST_LOOP_f_f (rint, rint_tonearest_test_data, FE_TONEAREST);
12934   END (rint_tonearest);
12935 }
12936
12937 static const struct test_f_f_data rint_towardzero_test_data[] =
12938   {
12939     START_DATA (rint_towardzero),
12940     TEST_f_f (rint, 2.0, 2.0),
12941     TEST_f_f (rint, 1.5, 1.0),
12942     TEST_f_f (rint, 1.0, 1.0),
12943     TEST_f_f (rint, 0.5, 0.0),
12944     TEST_f_f (rint, 0.0, 0.0),
12945     TEST_f_f (rint, minus_zero, minus_zero),
12946     TEST_f_f (rint, -0.5, -0.0),
12947     TEST_f_f (rint, -1.0, -1.0),
12948     TEST_f_f (rint, -1.5, -1.0),
12949     TEST_f_f (rint, -2.0, -2.0),
12950     TEST_f_f (rint, 0.1, 0.0),
12951     TEST_f_f (rint, 0.25, 0.0),
12952     TEST_f_f (rint, 0.625, 0.0),
12953     TEST_f_f (rint, -0.1, -0.0),
12954     TEST_f_f (rint, -0.25, -0.0),
12955     TEST_f_f (rint, -0.625, -0.0),
12956     TEST_f_f (rint, 1048576.75, 1048576.0),
12957     TEST_f_f (rint, 2097152.75, 2097152.0),
12958     TEST_f_f (rint, -1048576.75, -1048576.0),
12959     TEST_f_f (rint, -2097152.75, -2097152.0),
12960 #ifndef TEST_FLOAT
12961     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
12962     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
12963     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
12964     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
12965     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
12966     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
12967     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
12968     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
12969     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
12970     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
12971 #endif
12972 #ifdef TEST_LDOUBLE
12973     /* The result can only be represented in long double.  */
12974     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
12975     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12976     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12977     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
12978     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
12979 # if LDBL_MANT_DIG > 100
12980     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
12981     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
12982     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
12983 # endif
12984     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
12985     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12986     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12987     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
12988     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
12989 # if LDBL_MANT_DIG > 100
12990     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
12991     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
12992     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
12993
12994     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12995     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12996     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12997     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
12998     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
12999     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
13000
13001     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
13002     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
13003     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
13004     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
13005     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
13006     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
13007 # endif
13008 #endif
13009     END_DATA (rint_towardzero)
13010   };
13011
13012 static void
13013 rint_test_towardzero (void)
13014 {
13015   START (rint_towardzero);
13016   RUN_TEST_LOOP_f_f (rint, rint_towardzero_test_data, FE_TOWARDZERO);
13017   END (rint_towardzero);
13018 }
13019
13020 static const struct test_f_f_data rint_downward_test_data[] =
13021   {
13022     START_DATA (rint_downward),
13023     TEST_f_f (rint, 2.0, 2.0),
13024     TEST_f_f (rint, 1.5, 1.0),
13025     TEST_f_f (rint, 1.0, 1.0),
13026     TEST_f_f (rint, 0.5, 0.0),
13027     TEST_f_f (rint, 0.0, 0.0),
13028     TEST_f_f (rint, minus_zero, minus_zero),
13029     TEST_f_f (rint, -0.5, -1.0),
13030     TEST_f_f (rint, -1.0, -1.0),
13031     TEST_f_f (rint, -1.5, -2.0),
13032     TEST_f_f (rint, -2.0, -2.0),
13033     TEST_f_f (rint, 0.1, 0.0),
13034     TEST_f_f (rint, 0.25, 0.0),
13035     TEST_f_f (rint, 0.625, 0.0),
13036     TEST_f_f (rint, -0.1, -1.0),
13037     TEST_f_f (rint, -0.25, -1.0),
13038     TEST_f_f (rint, -0.625, -1.0),
13039     TEST_f_f (rint, 1048576.75, 1048576.0),
13040     TEST_f_f (rint, 2097152.75, 2097152.0),
13041     TEST_f_f (rint, -1048576.75, -1048577.0),
13042     TEST_f_f (rint, -2097152.75, -2097153.0),
13043 #ifndef TEST_FLOAT
13044     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
13045     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
13046     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
13047     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
13048     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
13049     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
13050     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
13051     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
13052     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
13053     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
13054 #endif
13055 #ifdef TEST_LDOUBLE
13056     /* The result can only be represented in long double.  */
13057     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
13058     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
13059     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
13060     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
13061     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
13062 # if LDBL_MANT_DIG > 100
13063     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
13064     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
13065     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
13066 # endif
13067     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
13068     TEST_f_f (rint, -4503599627370496.25L, -4503599627370497.0L),
13069     TEST_f_f (rint, -4503599627370496.5L, -4503599627370497.0L),
13070     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
13071     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
13072 # if LDBL_MANT_DIG > 100
13073     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
13074     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
13075     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
13076
13077     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
13078     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
13079     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
13080     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
13081     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
13082     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
13083
13084     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740992.0L),
13085     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740993.0L),
13086     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740994.0L),
13087     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
13088     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
13089     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
13090 # endif
13091 #endif
13092     END_DATA (rint_downward)
13093   };
13094
13095 static void
13096 rint_test_downward (void)
13097 {
13098   START (rint_downward);
13099   RUN_TEST_LOOP_f_f (rint, rint_downward_test_data, FE_DOWNWARD);
13100   END (rint_downward);
13101 }
13102
13103 static const struct test_f_f_data rint_upward_test_data[] =
13104   {
13105     START_DATA (rint_upward),
13106     TEST_f_f (rint, 2.0, 2.0),
13107     TEST_f_f (rint, 1.5, 2.0),
13108     TEST_f_f (rint, 1.0, 1.0),
13109     TEST_f_f (rint, 0.5, 1.0),
13110     TEST_f_f (rint, 0.0, 0.0),
13111     TEST_f_f (rint, minus_zero, minus_zero),
13112     TEST_f_f (rint, -0.5, -0.0),
13113     TEST_f_f (rint, -1.0, -1.0),
13114     TEST_f_f (rint, -1.5, -1.0),
13115     TEST_f_f (rint, -2.0, -2.0),
13116     TEST_f_f (rint, 0.1, 1.0),
13117     TEST_f_f (rint, 0.25, 1.0),
13118     TEST_f_f (rint, 0.625, 1.0),
13119     TEST_f_f (rint, -0.1, -0.0),
13120     TEST_f_f (rint, -0.25, -0.0),
13121     TEST_f_f (rint, -0.625, -0.0),
13122     TEST_f_f (rint, 1048576.75, 1048577.0),
13123     TEST_f_f (rint, 2097152.75, 2097153.0),
13124     TEST_f_f (rint, -1048576.75, -1048576.0),
13125     TEST_f_f (rint, -2097152.75, -2097152.0),
13126 #ifndef TEST_FLOAT
13127     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
13128     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
13129     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
13130     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
13131     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
13132     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
13133     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
13134     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
13135     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
13136     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
13137 #endif
13138 #ifdef TEST_LDOUBLE
13139     /* The result can only be represented in long double.  */
13140     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
13141     TEST_f_f (rint, 4503599627370496.25L, 4503599627370497.0L),
13142     TEST_f_f (rint, 4503599627370496.5L, 4503599627370497.0L),
13143     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
13144     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
13145 # if LDBL_MANT_DIG > 100
13146     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
13147     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
13148     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
13149 # endif
13150     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
13151     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
13152     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
13153     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
13154     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
13155 # if LDBL_MANT_DIG > 100
13156     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
13157     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
13158     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
13159
13160     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740992.0L),
13161     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740993.0L),
13162     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740994.0L),
13163     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
13164     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
13165     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
13166
13167     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
13168     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
13169     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
13170     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
13171     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
13172     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
13173 # endif
13174 #endif
13175     END_DATA (rint_upward)
13176   };
13177
13178 static void
13179 rint_test_upward (void)
13180 {
13181   START (rint_upward);
13182   RUN_TEST_LOOP_f_f (rint, rint_upward_test_data, FE_UPWARD);
13183   END (rint_upward);
13184 }
13185
13186 static const struct test_f_f_data round_test_data[] =
13187   {
13188     START_DATA (round),
13189     /* TODO: missing +/-Inf as well as qNaN tests.  */
13190
13191     TEST_f_f (round, 0, 0),
13192     TEST_f_f (round, minus_zero, minus_zero),
13193     TEST_f_f (round, 0.2L, 0.0),
13194     TEST_f_f (round, -0.2L, minus_zero),
13195     TEST_f_f (round, 0.5, 1.0),
13196     TEST_f_f (round, -0.5, -1.0),
13197     TEST_f_f (round, 0.8L, 1.0),
13198     TEST_f_f (round, -0.8L, -1.0),
13199     TEST_f_f (round, 1.5, 2.0),
13200     TEST_f_f (round, -1.5, -2.0),
13201     TEST_f_f (round, 0.1, 0.0),
13202     TEST_f_f (round, 0.25, 0.0),
13203     TEST_f_f (round, 0.625, 1.0),
13204     TEST_f_f (round, -0.1, -0.0),
13205     TEST_f_f (round, -0.25, -0.0),
13206     TEST_f_f (round, -0.625, -1.0),
13207     TEST_f_f (round, 2097152.5, 2097153),
13208     TEST_f_f (round, -2097152.5, -2097153),
13209
13210 #ifdef TEST_LDOUBLE
13211     /* The result can only be represented in long double.  */
13212     TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L),
13213     TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L),
13214     TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L),
13215     TEST_f_f (round, 4503599627370496.75L, 4503599627370497.0L),
13216     TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L),
13217 # if LDBL_MANT_DIG > 100
13218     TEST_f_f (round, 4503599627370494.5000000000001L, 4503599627370495.0L),
13219     TEST_f_f (round, 4503599627370495.5000000000001L, 4503599627370496.0L),
13220     TEST_f_f (round, 4503599627370496.5000000000001L, 4503599627370497.0L),
13221 # endif
13222
13223     TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L),
13224     TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L),
13225     TEST_f_f (round, -4503599627370496.5L, -4503599627370497.0L),
13226     TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L),
13227     TEST_f_f (round, -4503599627370497.5L, -4503599627370498.0L),
13228 # if LDBL_MANT_DIG > 100
13229     TEST_f_f (round, -4503599627370494.5000000000001L, -4503599627370495.0L),
13230     TEST_f_f (round, -4503599627370495.5000000000001L, -4503599627370496.0L),
13231     TEST_f_f (round, -4503599627370496.5000000000001L, -4503599627370497.0L),
13232 # endif
13233
13234     TEST_f_f (round, 9007199254740991.5L, 9007199254740992.0L),
13235     TEST_f_f (round, 9007199254740992.25L, 9007199254740992.0L),
13236     TEST_f_f (round, 9007199254740992.5L, 9007199254740993.0L),
13237     TEST_f_f (round, 9007199254740992.75L, 9007199254740993.0L),
13238     TEST_f_f (round, 9007199254740993.5L, 9007199254740994.0L),
13239
13240     TEST_f_f (round, -9007199254740991.5L, -9007199254740992.0L),
13241     TEST_f_f (round, -9007199254740992.25L, -9007199254740992.0L),
13242     TEST_f_f (round, -9007199254740992.5L, -9007199254740993.0L),
13243     TEST_f_f (round, -9007199254740992.75L, -9007199254740993.0L),
13244     TEST_f_f (round, -9007199254740993.5L, -9007199254740994.0L),
13245
13246 # if LDBL_MANT_DIG > 100
13247     TEST_f_f (round, 9007199254740991.0000000000001L, 9007199254740991.0L),
13248     TEST_f_f (round, 9007199254740992.0000000000001L, 9007199254740992.0L),
13249     TEST_f_f (round, 9007199254740993.0000000000001L, 9007199254740993.0L),
13250     TEST_f_f (round, 9007199254740991.5000000000001L, 9007199254740992.0L),
13251     TEST_f_f (round, 9007199254740992.5000000000001L, 9007199254740993.0L),
13252     TEST_f_f (round, 9007199254740993.5000000000001L, 9007199254740994.0L),
13253
13254     TEST_f_f (round, -9007199254740991.0000000000001L, -9007199254740991.0L),
13255     TEST_f_f (round, -9007199254740992.0000000000001L, -9007199254740992.0L),
13256     TEST_f_f (round, -9007199254740993.0000000000001L, -9007199254740993.0L),
13257     TEST_f_f (round, -9007199254740991.5000000000001L, -9007199254740992.0L),
13258     TEST_f_f (round, -9007199254740992.5000000000001L, -9007199254740993.0L),
13259     TEST_f_f (round, -9007199254740993.5000000000001L, -9007199254740994.0L),
13260 # endif
13261
13262     TEST_f_f (round, 72057594037927935.5L, 72057594037927936.0L),
13263     TEST_f_f (round, 72057594037927936.25L, 72057594037927936.0L),
13264     TEST_f_f (round, 72057594037927936.5L, 72057594037927937.0L),
13265     TEST_f_f (round, 72057594037927936.75L, 72057594037927937.0L),
13266     TEST_f_f (round, 72057594037927937.5L, 72057594037927938.0L),
13267
13268     TEST_f_f (round, -72057594037927935.5L, -72057594037927936.0L),
13269     TEST_f_f (round, -72057594037927936.25L, -72057594037927936.0L),
13270     TEST_f_f (round, -72057594037927936.5L, -72057594037927937.0L),
13271     TEST_f_f (round, -72057594037927936.75L, -72057594037927937.0L),
13272     TEST_f_f (round, -72057594037927937.5L, -72057594037927938.0L),
13273
13274     TEST_f_f (round, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
13275     TEST_f_f (round, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
13276     TEST_f_f (round, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
13277     TEST_f_f (round, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
13278     TEST_f_f (round, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
13279 #endif
13280     END_DATA (round)
13281   };
13282
13283 static void
13284 round_test (void)
13285 {
13286   START (round);
13287   RUN_TEST_LOOP_f_f (round, round_test_data, );
13288   END (round);
13289 }
13290
13291
13292 static const struct test_ff_f_data scalb_test_data[] =
13293   {
13294     START_DATA (scalb),
13295     TEST_ff_f (scalb, 2.0, 0.5, qnan_value, INVALID_EXCEPTION),
13296     TEST_ff_f (scalb, 3.0, -2.5, qnan_value, INVALID_EXCEPTION),
13297
13298     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13299     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13300
13301     TEST_ff_f (scalb, 1, 0, 1),
13302     TEST_ff_f (scalb, -1, 0, -1),
13303
13304     TEST_ff_f (scalb, 0, plus_infty, qnan_value, INVALID_EXCEPTION),
13305     TEST_ff_f (scalb, minus_zero, plus_infty, qnan_value, INVALID_EXCEPTION),
13306
13307     TEST_ff_f (scalb, 0, 2, 0),
13308     TEST_ff_f (scalb, minus_zero, -4, minus_zero),
13309     TEST_ff_f (scalb, 0, 0, 0),
13310     TEST_ff_f (scalb, minus_zero, 0, minus_zero),
13311     TEST_ff_f (scalb, 0, -1, 0),
13312     TEST_ff_f (scalb, minus_zero, -10, minus_zero),
13313     TEST_ff_f (scalb, 0, minus_infty, 0),
13314     TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero),
13315
13316     TEST_ff_f (scalb, plus_infty, -1, plus_infty),
13317     TEST_ff_f (scalb, minus_infty, -10, minus_infty),
13318     TEST_ff_f (scalb, plus_infty, 0, plus_infty),
13319     TEST_ff_f (scalb, minus_infty, 0, minus_infty),
13320     TEST_ff_f (scalb, plus_infty, 2, plus_infty),
13321     TEST_ff_f (scalb, minus_infty, 100, minus_infty),
13322
13323     TEST_ff_f (scalb, 0.1L, minus_infty, 0.0),
13324     TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero),
13325
13326     TEST_ff_f (scalb, 1, plus_infty, plus_infty),
13327     TEST_ff_f (scalb, -1, plus_infty, minus_infty),
13328     TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty),
13329     TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty),
13330
13331     TEST_ff_f (scalb, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13332     TEST_ff_f (scalb, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13333
13334     TEST_ff_f (scalb, qnan_value, 1, qnan_value),
13335     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13336     TEST_ff_f (scalb, qnan_value, 0, qnan_value),
13337     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13338     TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value),
13339     TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value),
13340     TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value),
13341
13342     TEST_ff_f (scalb, 0.8L, 4, 12.8L),
13343     TEST_ff_f (scalb, -0.854375L, 5, -27.34L),
13344     END_DATA (scalb)
13345   };
13346
13347 static void
13348 scalb_test (void)
13349 {
13350
13351   START (scalb);
13352   RUN_TEST_LOOP_ff_f (scalb, scalb_test_data, );
13353   END (scalb);
13354 }
13355
13356
13357 static const struct test_fi_f_data scalbn_test_data[] =
13358   {
13359     START_DATA (scalbn),
13360     TEST_fi_f (scalbn, 0, 0, 0),
13361     TEST_fi_f (scalbn, minus_zero, 0, minus_zero),
13362
13363     TEST_fi_f (scalbn, plus_infty, 1, plus_infty),
13364     TEST_fi_f (scalbn, minus_infty, 1, minus_infty),
13365     TEST_fi_f (scalbn, qnan_value, 1, qnan_value),
13366
13367     TEST_fi_f (scalbn, 0.8L, 4, 12.8L),
13368     TEST_fi_f (scalbn, -0.854375L, 5, -27.34L),
13369
13370     TEST_fi_f (scalbn, 1, 0L, 1),
13371
13372     TEST_fi_f (scalbn, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13373     TEST_fi_f (scalbn, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13374     TEST_fi_f (scalbn, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13375     TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13376     TEST_fi_f (scalbn, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13377     TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13378     TEST_fi_f (scalbn, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13379     TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13380     END_DATA (scalbn)
13381   };
13382
13383 static void
13384 scalbn_test (void)
13385 {
13386
13387   START (scalbn);
13388   RUN_TEST_LOOP_fi_f (scalbn, scalbn_test_data, );
13389   END (scalbn);
13390 }
13391
13392
13393 static const struct test_fl_f_data scalbln_test_data[] =
13394   {
13395     START_DATA (scalbln),
13396     TEST_fl_f (scalbln, 0, 0, 0),
13397     TEST_fl_f (scalbln, minus_zero, 0, minus_zero),
13398
13399     TEST_fl_f (scalbln, plus_infty, 1, plus_infty),
13400     TEST_fl_f (scalbln, minus_infty, 1, minus_infty),
13401     TEST_fl_f (scalbln, qnan_value, 1, qnan_value),
13402
13403     TEST_fl_f (scalbln, 0.8L, 4, 12.8L),
13404     TEST_fl_f (scalbln, -0.854375L, 5, -27.34L),
13405
13406     TEST_fl_f (scalbln, 1, 0L, 1),
13407
13408     TEST_fl_f (scalbln, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13409     TEST_fl_f (scalbln, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13410     TEST_fl_f (scalbln, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13411     TEST_fl_f (scalbln, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13412     TEST_fl_f (scalbln, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13413     TEST_fl_f (scalbln, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13414     TEST_fl_f (scalbln, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13415     TEST_fl_f (scalbln, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13416
13417     TEST_fl_f (scalbln, 1, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION),
13418     TEST_fl_f (scalbln, 1, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13419     TEST_fl_f (scalbln, max_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION),
13420     TEST_fl_f (scalbln, max_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13421     TEST_fl_f (scalbln, min_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION),
13422     TEST_fl_f (scalbln, min_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13423     TEST_fl_f (scalbln, min_value / 4, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION),
13424     TEST_fl_f (scalbln, min_value / 4, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13425
13426 #if LONG_MAX >= 0x100000000
13427     TEST_fl_f (scalbln, 1, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION),
13428     TEST_fl_f (scalbln, 1, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION),
13429     TEST_fl_f (scalbln, max_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION),
13430     TEST_fl_f (scalbln, max_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION),
13431     TEST_fl_f (scalbln, min_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION),
13432     TEST_fl_f (scalbln, min_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION),
13433     TEST_fl_f (scalbln, min_value / 4, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION),
13434     TEST_fl_f (scalbln, min_value / 4, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION),
13435 #endif
13436     END_DATA (scalbln)
13437   };
13438
13439 static void
13440 scalbln_test (void)
13441 {
13442
13443   START (scalbln);
13444   RUN_TEST_LOOP_fl_f (scalbln, scalbln_test_data, );
13445   END (scalbln);
13446 }
13447
13448
13449 static void
13450 signbit_test (void)
13451 {
13452   /* TODO: missing qNaN tests.  */
13453
13454   START (signbit);
13455
13456   TEST_f_b (signbit, 0, 0);
13457   TEST_f_b (signbit, minus_zero, 1);
13458   TEST_f_b (signbit, plus_infty, 0);
13459   TEST_f_b (signbit, minus_infty, 1);
13460
13461   /* signbit (x) != 0 for x < 0.  */
13462   TEST_f_b (signbit, -1, 1);
13463   /* signbit (x) == 0 for x >= 0.  */
13464   TEST_f_b (signbit, 1, 0);
13465
13466   END (signbit);
13467 }
13468
13469
13470 static const struct test_f_f_data sin_test_data[] =
13471   {
13472     START_DATA (sin),
13473     TEST_f_f (sin, 0, 0),
13474     TEST_f_f (sin, minus_zero, minus_zero),
13475     TEST_f_f (sin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13476     TEST_f_f (sin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13477     TEST_f_f (sin, qnan_value, qnan_value, ERRNO_UNCHANGED),
13478
13479     TEST_f_f (sin, M_PI_6l, 0.5),
13480     TEST_f_f (sin, -M_PI_6l, -0.5),
13481     TEST_f_f (sin, M_PI_2l, 1),
13482     TEST_f_f (sin, -M_PI_2l, -1),
13483     TEST_f_f (sin, 0.75L, 0.681638760023334166733241952779893935L),
13484
13485     TEST_f_f (sin, 0x1p65, -0.047183876212354673805106149805700013943218L),
13486     TEST_f_f (sin, -0x1p65, 0.047183876212354673805106149805700013943218L),
13487
13488     TEST_f_f (sin, 0x1.7f4134p+103, -6.6703229329788657073304190650534846045235e-08L),
13489
13490 #ifdef TEST_DOUBLE
13491     TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868),
13492     TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1),
13493 #endif
13494
13495 #ifndef TEST_FLOAT
13496     TEST_f_f (sin, 1e22, -0.8522008497671888017727058937530293682618L),
13497     TEST_f_f (sin, 0x1p1023, 0.5631277798508840134529434079444683477104L),
13498 #endif
13499
13500 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13501     TEST_f_f (sin, 0x1p16383L, 0.3893629985894208126948115852610595405563L),
13502 #endif
13503
13504     TEST_f_f (sin, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L),
13505     TEST_f_f (sin, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L),
13506     TEST_f_f (sin, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L),
13507     TEST_f_f (sin, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L),
13508     TEST_f_f (sin, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L),
13509     TEST_f_f (sin, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L),
13510     END_DATA (sin)
13511   };
13512
13513 static void
13514 sin_test (void)
13515 {
13516   errno = 0;
13517   FUNC(sin) (0);
13518   if (errno == ENOSYS)
13519     /* Function not implemented.  */
13520     return;
13521
13522   START (sin);
13523   RUN_TEST_LOOP_f_f (sin, sin_test_data, );
13524   END (sin);
13525 }
13526
13527
13528 static const struct test_f_f_data sin_tonearest_test_data[] =
13529   {
13530     START_DATA (sin_tonearest),
13531     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13532     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13533     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13534     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13535     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13536     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13537     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13538     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13539     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13540     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13541     END_DATA (sin_tonearest)
13542   };
13543
13544 static void
13545 sin_test_tonearest (void)
13546 {
13547   errno = 0;
13548   FUNC(sin) (0);
13549   if (errno == ENOSYS)
13550     /* Function not implemented.  */
13551     return;
13552
13553   START (sin_tonearest);
13554   RUN_TEST_LOOP_f_f (sin, sin_tonearest_test_data, FE_TONEAREST);
13555   END (sin_tonearest);
13556 }
13557
13558
13559 static const struct test_f_f_data sin_towardzero_test_data[] =
13560   {
13561     START_DATA (sin_towardzero),
13562     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13563     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13564     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13565     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13566     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13567     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13568     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13569     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13570     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13571     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13572     END_DATA (sin_towardzero)
13573   };
13574
13575 static void
13576 sin_test_towardzero (void)
13577 {
13578   errno = 0;
13579   FUNC(sin) (0);
13580   if (errno == ENOSYS)
13581     /* Function not implemented.  */
13582     return;
13583
13584   START (sin_towardzero);
13585   RUN_TEST_LOOP_f_f (sin, sin_towardzero_test_data, FE_TOWARDZERO);
13586   END (sin_towardzero);
13587 }
13588
13589
13590 static const struct test_f_f_data sin_downward_test_data[] =
13591   {
13592     START_DATA (sin_downward),
13593     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13594     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13595     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13596     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13597     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13598     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13599     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13600     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13601     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13602     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13603     END_DATA (sin_downward)
13604   };
13605
13606 static void
13607 sin_test_downward (void)
13608 {
13609   errno = 0;
13610   FUNC(sin) (0);
13611   if (errno == ENOSYS)
13612     /* Function not implemented.  */
13613     return;
13614
13615   START (sin_downward);
13616   RUN_TEST_LOOP_f_f (sin, sin_downward_test_data, FE_DOWNWARD);
13617   END (sin_downward);
13618 }
13619
13620
13621 static const struct test_f_f_data sin_upward_test_data[] =
13622   {
13623     START_DATA (sin_upward),
13624     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13625     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13626     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13627     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13628     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13629     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13630     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13631     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13632     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13633     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13634     END_DATA (sin_upward)
13635   };
13636
13637 static void
13638 sin_test_upward (void)
13639 {
13640   errno = 0;
13641   FUNC(sin) (0);
13642   if (errno == ENOSYS)
13643     /* Function not implemented.  */
13644     return;
13645
13646   START (sin_upward);
13647   RUN_TEST_LOOP_f_f (sin, sin_upward_test_data, FE_UPWARD);
13648   END (sin_upward);
13649 }
13650
13651
13652 static void
13653 sincos_test (void)
13654 {
13655   FLOAT sin_res, cos_res;
13656
13657   errno = 0;
13658   FUNC(sincos) (0, &sin_res, &cos_res);
13659   if (errno == ENOSYS)
13660     /* Function not implemented.  */
13661     return;
13662
13663   START (sincos);
13664
13665   /* sincos is treated differently because it returns void.  */
13666   TEST_extra (sincos, 0, 0, 1);
13667
13668   TEST_extra (sincos, minus_zero, minus_zero, 1);
13669   TEST_extra (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13670   TEST_extra (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13671   TEST_extra (sincos, qnan_value, qnan_value, qnan_value);
13672
13673   /* The value of M_PI_2l is never exactly PI/2, and therefore the
13674      answer is never exactly zero. The answer is equal to the error
13675      in rounding PI/2 for the type used.  Thus the answer is unique
13676      to each type.  */
13677 #ifdef TEST_FLOAT
13678   /* 32-bit float.  */
13679   TEST_extra (sincos, M_PI_2l, 1, -0x1.777a5cp-25L);
13680 #endif
13681 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
13682   /* 64-bit double or 64-bit long double.  */
13683   TEST_extra (sincos, M_PI_2l, 1, 0x1.1a62633145c07p-54L);
13684 #endif
13685 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
13686   /* 96-bit long double.  */
13687   TEST_extra (sincos, M_PI_2l, 1, -0xe.ce675d1fc8f8cbbp-69L);
13688 #endif
13689 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
13690   /* 128-bit IBM long double.  */
13691   TEST_extra (sincos, M_PI_2l, 1, 0x1.c1cd129024e088a67cc74020bcp-107L);
13692 #endif
13693 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
13694   /* 128-bit long double.  */
13695   TEST_extra (sincos, M_PI_2l, 1, 0x1.cd129024e088a67cc74020bbea64p-115L);
13696 #endif
13697
13698   TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L);
13699   TEST_extra (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5);
13700   TEST_extra (sincos, 0.75L, 0.681638760023334166733241952779893935L, 0.731688868873820886311838753000084544L);
13701
13702   TEST_extra (sincos, 0x1p65, -0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13703   TEST_extra (sincos, -0x1p65, 0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13704
13705 #ifdef TEST_DOUBLE
13706   TEST_extra (sincos, 0.80190127184058835, 0.71867942238767868, 0.69534156199418473);
13707 #endif
13708
13709 #ifndef TEST_FLOAT
13710   TEST_extra (sincos, 1e22, -0.8522008497671888017727058937530293682618L, 0.5232147853951389454975944733847094921409L);
13711   TEST_extra (sincos, 0x1p1023, 0.5631277798508840134529434079444683477104L, -0.826369834614147994500785680811743734805L);
13712 #endif
13713
13714 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13715   TEST_extra (sincos, 0x1p16383L, 0.3893629985894208126948115852610595405563L, 0.9210843909921906206874509522505756251609L);
13716 #endif
13717
13718   TEST_extra (sincos, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L, -9.25879022854837867303861764107414946730833e-01L);
13719   TEST_extra (sincos, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L, 7.81914638714960072263910298466369236613162e-01L);
13720   TEST_extra (sincos, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L, 9.98819362551949040703862043664101081064641e-01L);
13721   TEST_extra (sincos, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L, 8.53021039830304158051791467692161107353094e-01L);
13722   TEST_extra (sincos, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L, 8.68095904660550604334592502063501320395739e-01L);
13723   TEST_extra (sincos, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L, -1.65568979490578758865468278195361551113358e-01L);
13724
13725   END (sincos);
13726 }
13727
13728 static const struct test_f_f_data sinh_test_data[] =
13729   {
13730     START_DATA (sinh),
13731     TEST_f_f (sinh, 0, 0),
13732     TEST_f_f (sinh, minus_zero, minus_zero),
13733
13734 #ifndef TEST_INLINE
13735     TEST_f_f (sinh, plus_infty, plus_infty),
13736     TEST_f_f (sinh, minus_infty, minus_infty),
13737 #endif
13738     TEST_f_f (sinh, qnan_value, qnan_value),
13739
13740     TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L),
13741     TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L),
13742     END_DATA (sinh)
13743   };
13744
13745 static void
13746 sinh_test (void)
13747 {
13748   errno = 0;
13749   FUNC(sinh) (0.7L);
13750   if (errno == ENOSYS)
13751     /* Function not implemented.  */
13752     return;
13753
13754   START (sinh);
13755   RUN_TEST_LOOP_f_f (sinh, sinh_test_data, );
13756   END (sinh);
13757 }
13758
13759
13760 static const struct test_f_f_data sinh_tonearest_test_data[] =
13761   {
13762     START_DATA (sinh_tonearest),
13763     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13764     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13765     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13766     END_DATA (sinh_tonearest)
13767   };
13768
13769 static void
13770 sinh_test_tonearest (void)
13771 {
13772   errno = 0;
13773   FUNC(sinh) (0);
13774   if (errno == ENOSYS)
13775     /* Function not implemented.  */
13776     return;
13777
13778   START (sinh_tonearest);
13779   RUN_TEST_LOOP_f_f (sinh, sinh_tonearest_test_data, FE_TONEAREST);
13780   END (sinh_tonearest);
13781 }
13782
13783
13784 static const struct test_f_f_data sinh_towardzero_test_data[] =
13785   {
13786     START_DATA (sinh_towardzero),
13787     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13788     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13789     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13790     END_DATA (sinh_towardzero)
13791   };
13792
13793 static void
13794 sinh_test_towardzero (void)
13795 {
13796   errno = 0;
13797   FUNC(sinh) (0);
13798   if (errno == ENOSYS)
13799     /* Function not implemented.  */
13800     return;
13801
13802   START (sinh_towardzero);
13803   RUN_TEST_LOOP_f_f (sinh, sinh_towardzero_test_data, FE_TOWARDZERO);
13804   END (sinh_towardzero);
13805 }
13806
13807
13808 static const struct test_f_f_data sinh_downward_test_data[] =
13809   {
13810     START_DATA (sinh_downward),
13811     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13812     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13813     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13814     END_DATA (sinh_downward)
13815   };
13816
13817 static void
13818 sinh_test_downward (void)
13819 {
13820   errno = 0;
13821   FUNC(sinh) (0);
13822   if (errno == ENOSYS)
13823     /* Function not implemented.  */
13824     return;
13825
13826   START (sinh_downward);
13827   RUN_TEST_LOOP_f_f (sinh, sinh_downward_test_data, FE_DOWNWARD);
13828   END (sinh_downward);
13829 }
13830
13831
13832 static const struct test_f_f_data sinh_upward_test_data[] =
13833   {
13834     START_DATA (sinh_upward),
13835     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13836     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13837     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13838     END_DATA (sinh_upward)
13839   };
13840
13841 static void
13842 sinh_test_upward (void)
13843 {
13844   errno = 0;
13845   FUNC(sinh) (0);
13846   if (errno == ENOSYS)
13847     /* Function not implemented.  */
13848     return;
13849
13850   START (sinh_upward);
13851   RUN_TEST_LOOP_f_f (sinh, sinh_upward_test_data, FE_UPWARD);
13852   END (sinh_upward);
13853 }
13854
13855
13856 static const struct test_f_f_data sqrt_test_data[] =
13857   {
13858     START_DATA (sqrt),
13859     TEST_f_f (sqrt, 0, 0),
13860     TEST_f_f (sqrt, qnan_value, qnan_value),
13861     TEST_f_f (sqrt, plus_infty, plus_infty),
13862
13863     TEST_f_f (sqrt, minus_zero, minus_zero),
13864
13865     /* sqrt (x) == qNaN plus invalid exception for x < 0.  */
13866     TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION),
13867     TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION),
13868     TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION),
13869
13870     TEST_f_f (sqrt, 2209, 47),
13871     TEST_f_f (sqrt, 4, 2),
13872     TEST_f_f (sqrt, 2, M_SQRT2l),
13873     TEST_f_f (sqrt, 0.25, 0.5),
13874     TEST_f_f (sqrt, 6642.25, 81.5),
13875     TEST_f_f (sqrt, 15190.5625L, 123.25L),
13876     TEST_f_f (sqrt, 0.75L, 0.866025403784438646763723170752936183L),
13877     END_DATA (sqrt)
13878   };
13879
13880 static void
13881 sqrt_test (void)
13882 {
13883   errno = 0;
13884   FUNC(sqrt) (1);
13885   if (errno == ENOSYS)
13886     /* Function not implemented.  */
13887     return;
13888
13889   START (sqrt);
13890   RUN_TEST_LOOP_f_f (sqrt, sqrt_test_data, );
13891   END (sqrt);
13892 }
13893
13894
13895 static const struct test_f_f_data tan_test_data[] =
13896   {
13897     START_DATA (tan),
13898     TEST_f_f (tan, 0, 0),
13899     TEST_f_f (tan, minus_zero, minus_zero),
13900     TEST_f_f (tan, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13901     TEST_f_f (tan, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13902     TEST_f_f (tan, qnan_value, qnan_value, ERRNO_UNCHANGED),
13903
13904     TEST_f_f (tan, M_PI_4l, 1),
13905     TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L),
13906
13907     TEST_f_f (tan, 0x1p65, -0.0472364872359047946798414219288370688827L),
13908     TEST_f_f (tan, -0x1p65, 0.0472364872359047946798414219288370688827L),
13909
13910     TEST_f_f (tan, 0xc.9p-4, 0.9995162902115457818029468900654150261381L),
13911     TEST_f_f (tan, 0xc.908p-4, 0.9997603425502441410973077452249560802034L),
13912     TEST_f_f (tan, 0xc.90cp-4, 0.9998823910588060302788513970802357770031L),
13913     TEST_f_f (tan, 0xc.90ep-4, 0.9999434208994808753305784795924711152508L),
13914     TEST_f_f (tan, 0xc.90fp-4, 0.9999739372166156702433266059635165160515L),
13915     TEST_f_f (tan, 0xc.90f8p-4, 0.9999891957244072765118898375645469865764L),
13916     TEST_f_f (tan, 0xc.90fcp-4, 0.9999968250656122402859679132395522927393L),
13917     TEST_f_f (tan, 0xc.90fdp-4, 0.9999987324100083358016192309006353329444L),
13918     TEST_f_f (tan, 0xc.90fd8p-4, 0.9999996860835706212861509874451585282616L),
13919     TEST_f_f (tan, 0xc.90fdap-4, 0.9999999245021033010474530133665235922808L),
13920     TEST_f_f (tan, 0xc.ap-4, 1.0073556597407272165371804539701396631519L),
13921     TEST_f_f (tan, 0xc.98p-4, 1.0034282930863044654045449407466962736255L),
13922     TEST_f_f (tan, 0xc.94p-4, 1.0014703786820082237342656561856877993328L),
13923     TEST_f_f (tan, 0xc.92p-4, 1.0004928571392300571266638743539017593717L),
13924     TEST_f_f (tan, 0xc.91p-4, 1.0000044544650244953647966900221905361131L),
13925     TEST_f_f (tan, 0xc.90fep-4, 1.0000006397580424009014454926842136804016L),
13926     TEST_f_f (tan, 0xc.90fdcp-4, 1.0000001629206928242190327320047489394217L),
13927     TEST_f_f (tan, 0xc.90fdbp-4, 1.0000000437113909572052640953950483705005L),
13928
13929     TEST_f_f (tan, -0xc.9p-4, -0.9995162902115457818029468900654150261381L),
13930     TEST_f_f (tan, -0xc.908p-4, -0.9997603425502441410973077452249560802034L),
13931     TEST_f_f (tan, -0xc.90cp-4, -0.9998823910588060302788513970802357770031L),
13932     TEST_f_f (tan, -0xc.90ep-4, -0.9999434208994808753305784795924711152508L),
13933     TEST_f_f (tan, -0xc.90fp-4, -0.9999739372166156702433266059635165160515L),
13934     TEST_f_f (tan, -0xc.90f8p-4, -0.9999891957244072765118898375645469865764L),
13935     TEST_f_f (tan, -0xc.90fcp-4, -0.9999968250656122402859679132395522927393L),
13936     TEST_f_f (tan, -0xc.90fdp-4, -0.9999987324100083358016192309006353329444L),
13937     TEST_f_f (tan, -0xc.90fd8p-4, -0.9999996860835706212861509874451585282616L),
13938     TEST_f_f (tan, -0xc.90fdap-4, -0.9999999245021033010474530133665235922808L),
13939     TEST_f_f (tan, -0xc.ap-4, -1.0073556597407272165371804539701396631519L),
13940     TEST_f_f (tan, -0xc.98p-4, -1.0034282930863044654045449407466962736255L),
13941     TEST_f_f (tan, -0xc.94p-4, -1.0014703786820082237342656561856877993328L),
13942     TEST_f_f (tan, -0xc.92p-4, -1.0004928571392300571266638743539017593717L),
13943     TEST_f_f (tan, -0xc.91p-4, -1.0000044544650244953647966900221905361131L),
13944     TEST_f_f (tan, -0xc.90fep-4, -1.0000006397580424009014454926842136804016L),
13945     TEST_f_f (tan, -0xc.90fdcp-4, -1.0000001629206928242190327320047489394217L),
13946     TEST_f_f (tan, -0xc.90fdbp-4, -1.0000000437113909572052640953950483705005L),
13947
13948 #ifndef TEST_FLOAT
13949     TEST_f_f (tan, 1e22, -1.628778225606898878549375936939548513545L),
13950     TEST_f_f (tan, 0x1p1023, -0.6814476476066215012854144040167365190368L),
13951 #endif
13952
13953 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13954     TEST_f_f (tan, 0x1p16383L, 0.422722393732022337800504160054440141575L),
13955 #endif
13956     END_DATA (tan)
13957   };
13958
13959 static void
13960 tan_test (void)
13961 {
13962   errno = 0;
13963   FUNC(tan) (0);
13964   if (errno == ENOSYS)
13965     /* Function not implemented.  */
13966     return;
13967
13968   START (tan);
13969   RUN_TEST_LOOP_f_f (tan, tan_test_data, );
13970   END (tan);
13971 }
13972
13973
13974 static const struct test_f_f_data tan_tonearest_test_data[] =
13975   {
13976     START_DATA (tan_tonearest),
13977     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13978     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13979     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13980     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13981     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13982     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13983     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13984     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13985     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13986     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13987     END_DATA (tan_tonearest)
13988   };
13989
13990 static void
13991 tan_test_tonearest (void)
13992 {
13993   errno = 0;
13994   FUNC(tan) (0);
13995   if (errno == ENOSYS)
13996     /* Function not implemented.  */
13997     return;
13998
13999   START (tan_tonearest);
14000   RUN_TEST_LOOP_f_f (tan, tan_tonearest_test_data, FE_TONEAREST);
14001   END (tan_tonearest);
14002 }
14003
14004
14005 static const struct test_f_f_data tan_towardzero_test_data[] =
14006   {
14007     START_DATA (tan_towardzero),
14008     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
14009     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
14010     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
14011     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
14012     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
14013     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
14014     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
14015     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
14016     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
14017     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
14018     END_DATA (tan_towardzero)
14019   };
14020
14021 static void
14022 tan_test_towardzero (void)
14023 {
14024   errno = 0;
14025   FUNC(tan) (0);
14026   if (errno == ENOSYS)
14027     /* Function not implemented.  */
14028     return;
14029
14030   START (tan_towardzero);
14031   RUN_TEST_LOOP_f_f (tan, tan_towardzero_test_data, FE_TOWARDZERO);
14032   END (tan_towardzero);
14033 }
14034
14035
14036 static const struct test_f_f_data tan_downward_test_data[] =
14037   {
14038     START_DATA (tan_downward),
14039     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
14040     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
14041     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
14042     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
14043     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
14044     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
14045     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
14046     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
14047     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
14048     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
14049     END_DATA (tan_downward)
14050   };
14051
14052 static void
14053 tan_test_downward (void)
14054 {
14055   errno = 0;
14056   FUNC(tan) (0);
14057   if (errno == ENOSYS)
14058     /* Function not implemented.  */
14059     return;
14060
14061   START (tan_downward);
14062   RUN_TEST_LOOP_f_f (tan, tan_downward_test_data, FE_DOWNWARD);
14063   END (tan_downward);
14064 }
14065
14066
14067 static const struct test_f_f_data tan_upward_test_data[] =
14068   {
14069     START_DATA (tan_upward),
14070     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
14071     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
14072     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
14073     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
14074     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
14075     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
14076     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
14077     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
14078     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
14079     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
14080     END_DATA (tan_upward)
14081   };
14082
14083 static void
14084 tan_test_upward (void)
14085 {
14086   errno = 0;
14087   FUNC(tan) (0);
14088   if (errno == ENOSYS)
14089     /* Function not implemented.  */
14090     return;
14091
14092   START (tan_upward);
14093   RUN_TEST_LOOP_f_f (tan, tan_upward_test_data, FE_UPWARD);
14094   END (tan_upward);
14095 }
14096
14097
14098 static const struct test_f_f_data tanh_test_data[] =
14099   {
14100     START_DATA (tanh),
14101     TEST_f_f (tanh, 0, 0),
14102     TEST_f_f (tanh, minus_zero, minus_zero),
14103
14104 #ifndef TEST_INLINE
14105     TEST_f_f (tanh, plus_infty, 1),
14106     TEST_f_f (tanh, minus_infty, -1),
14107 #endif
14108     TEST_f_f (tanh, qnan_value, qnan_value),
14109
14110     TEST_f_f (tanh, 0.75L, 0.635148952387287319214434357312496495L),
14111     TEST_f_f (tanh, -0.75L, -0.635148952387287319214434357312496495L),
14112
14113     TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L),
14114     TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L),
14115
14116     /* 2^-57  */
14117     TEST_f_f (tanh, 0x1p-57L, 6.938893903907228377647697925567626953125e-18L),
14118     END_DATA (tanh)
14119   };
14120
14121 static void
14122 tanh_test (void)
14123 {
14124   errno = 0;
14125   FUNC(tanh) (0.7L);
14126   if (errno == ENOSYS)
14127     /* Function not implemented.  */
14128     return;
14129
14130   START (tanh);
14131   RUN_TEST_LOOP_f_f (tanh, tanh_test_data, );
14132   END (tanh);
14133 }
14134
14135 static const struct test_f_f_data tgamma_test_data[] =
14136   {
14137     START_DATA (tgamma),
14138     TEST_f_f (tgamma, plus_infty, plus_infty),
14139     TEST_f_f (tgamma, max_value, plus_infty, OVERFLOW_EXCEPTION),
14140     TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
14141     TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
14142     /* tgamma (x) == qNaN plus invalid exception for integer x <= 0.  */
14143     TEST_f_f (tgamma, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
14144     TEST_f_f (tgamma, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
14145     TEST_f_f (tgamma, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
14146     TEST_f_f (tgamma, qnan_value, qnan_value),
14147
14148     TEST_f_f (tgamma, 0.5, M_SQRT_PIl),
14149     TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl),
14150
14151     TEST_f_f (tgamma, 1, 1),
14152     TEST_f_f (tgamma, 2, 1),
14153     TEST_f_f (tgamma, 3, 2),
14154     TEST_f_f (tgamma, 4, 6),
14155     TEST_f_f (tgamma, 5, 24),
14156     TEST_f_f (tgamma, 6, 120),
14157     TEST_f_f (tgamma, 7, 720),
14158     TEST_f_f (tgamma, 8, 5040),
14159     TEST_f_f (tgamma, 9,  40320),
14160     TEST_f_f (tgamma, 10, 362880),
14161
14162     TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L),
14163     TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L),
14164
14165     TEST_f_f (tgamma, 1.5L, 8.8622692545275801364908374167057259139877e-01L),
14166     TEST_f_f (tgamma, 2.5L, 1.3293403881791370204736256125058588870982e+00L),
14167     TEST_f_f (tgamma, 3.5L, 3.3233509704478425511840640312646472177454e+00L),
14168     TEST_f_f (tgamma, 4.5L, 1.1631728396567448929144224109426265262109e+01L),
14169     TEST_f_f (tgamma, 5.5L, 5.2342777784553520181149008492418193679490e+01L),
14170     TEST_f_f (tgamma, 6.5L, 2.8788527781504436099631954670830006523720e+02L),
14171     TEST_f_f (tgamma, 7.5L, 1.8712543057977883464760770536039504240418e+03L),
14172     TEST_f_f (tgamma, 8.5L, 1.4034407293483412598570577902029628180313e+04L),
14173     TEST_f_f (tgamma, 9.5L, 1.1929246199460900708784991216725183953266e+05L),
14174     TEST_f_f (tgamma, -1.5L, 2.3632718012073547030642233111215269103967e+00L),
14175     TEST_f_f (tgamma, -2.5L, -9.4530872048294188122568932444861076415869e-01L),
14176     TEST_f_f (tgamma, -3.5L, 2.7008820585226910892162552127103164690248e-01L),
14177     TEST_f_f (tgamma, -4.5L, -6.0019601300504246427027893615784810422774e-02L),
14178     TEST_f_f (tgamma, -5.5L, 1.0912654781909862986732344293779056440504e-02L),
14179     TEST_f_f (tgamma, -6.5L, -1.6788699664476712287280529682737009908468e-03L),
14180     TEST_f_f (tgamma, -7.5L, 2.2384932885968949716374039576982679877958e-04L),
14181     TEST_f_f (tgamma, -8.5L, -2.6335215159963470254557693619979623385833e-05L),
14182     TEST_f_f (tgamma, -9.5L, 2.7721279115751021320587045915768024616666e-06L),
14183     TEST_f_f (tgamma, 0x1p-24L, 1.6777215422784394050795179874582764575261e+07L),
14184     TEST_f_f (tgamma, -0x1p-24L, -1.6777216577215723853867349114260580375249e+07L),
14185     TEST_f_f (tgamma, 0x1p-53L, 9.0071992547409914227843350984672492007618e+15L),
14186     TEST_f_f (tgamma, -0x1p-53L, -9.0071992547409925772156649015329704137860e+15L),
14187     TEST_f_f (tgamma, 0x1p-64L, 1.8446744073709551615422784335098467139447e+19L),
14188     TEST_f_f (tgamma, -0x1p-64L, -1.8446744073709551616577215664901532860660e+19L),
14189     TEST_f_f (tgamma, 0x1p-106L, 8.1129638414606681695789005144063422784335e+31L),
14190     TEST_f_f (tgamma, -0x1p-106L, -8.1129638414606681695789005144064577215665e+31L),
14191     TEST_f_f (tgamma, 0x1p-113L, 1.0384593717069655257060992658440191422784e+34L),
14192     TEST_f_f (tgamma, -0x1p-113L, -1.0384593717069655257060992658440192577216e+34L),
14193     TEST_f_f (tgamma, 0x1p-127L, 1.7014118346046923173168730371588410572742e+38L),
14194     TEST_f_f (tgamma, -0x1p-127L, -1.7014118346046923173168730371588410572858e+38L),
14195 #ifdef TEST_FLOAT
14196     TEST_f_f (tgamma, 0x1p-128L, plus_infty, OVERFLOW_EXCEPTION),
14197     TEST_f_f (tgamma, -0x1p-128L, minus_infty, OVERFLOW_EXCEPTION),
14198     TEST_f_f (tgamma, 0x1p-149L, plus_infty, OVERFLOW_EXCEPTION),
14199     TEST_f_f (tgamma, -0x1p-149L, minus_infty, OVERFLOW_EXCEPTION),
14200 #else
14201     TEST_f_f (tgamma, 0x1p-128L, 3.4028236692093846346337460743176821145542e+38L),
14202     TEST_f_f (tgamma, -0x1p-128L, -3.4028236692093846346337460743176821145658e+38L),
14203     TEST_f_f (tgamma, 0x1p-149L, 7.1362384635297994052914298472474756819137e+44L),
14204     TEST_f_f (tgamma, -0x1p-149L, -7.1362384635297994052914298472474756819137e+44L),
14205 #endif
14206 #ifndef TEST_FLOAT
14207     TEST_f_f (tgamma, 0x1p-1023L, 8.9884656743115795386465259539451236680899e+307L),
14208     TEST_f_f (tgamma, -0x1p-1023L, -8.9884656743115795386465259539451236680899e+307L),
14209 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14210     TEST_f_f (tgamma, 0x1p-1024L, plus_infty, OVERFLOW_EXCEPTION),
14211     TEST_f_f (tgamma, -0x1p-1024L, minus_infty, OVERFLOW_EXCEPTION),
14212     TEST_f_f (tgamma, 0x1p-1074L, plus_infty, OVERFLOW_EXCEPTION),
14213     TEST_f_f (tgamma, -0x1p-1074L, minus_infty, OVERFLOW_EXCEPTION),
14214 # else
14215     TEST_f_f (tgamma, 0x1p-1024L, 1.7976931348623159077293051907890247336180e+308L),
14216     TEST_f_f (tgamma, -0x1p-1024L, -1.7976931348623159077293051907890247336180e+308L),
14217     TEST_f_f (tgamma, 0x1p-1074L, 2.0240225330731061835249534671891730704956e+323L),
14218     TEST_f_f (tgamma, -0x1p-1074L, -2.0240225330731061835249534671891730704956e+323L),
14219 # endif
14220 #endif
14221 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
14222     TEST_f_f (tgamma, 0x1p-16383L, 5.9486574767861588254287966331400356538172e+4931L),
14223     TEST_f_f (tgamma, -0x1p-16383L, -5.9486574767861588254287966331400356538172e+4931L),
14224     TEST_f_f (tgamma, 0x1p-16384L, plus_infty, OVERFLOW_EXCEPTION),
14225     TEST_f_f (tgamma, -0x1p-16384L, minus_infty, OVERFLOW_EXCEPTION),
14226     TEST_f_f (tgamma, 0x1p-16445L, plus_infty, OVERFLOW_EXCEPTION),
14227     TEST_f_f (tgamma, -0x1p-16445L, minus_infty, OVERFLOW_EXCEPTION),
14228 # if LDBL_MANT_DIG >= 113
14229     TEST_f_f (tgamma, 0x1p-16494L, plus_infty, OVERFLOW_EXCEPTION),
14230     TEST_f_f (tgamma, -0x1p-16494L, minus_infty, OVERFLOW_EXCEPTION),
14231 # endif
14232 #endif
14233     TEST_f_f (tgamma, 0x8.00001p0L, 5.0400096882277802019946778420223050233915e+03L),
14234     TEST_f_f (tgamma, 0x7.fffff8p0L, 5.0399951558933225045148935487583089307135e+03L),
14235     TEST_f_f (tgamma, 0x7.000008p0L, 7.2000064296977505705636258629805621178587e+02L),
14236     TEST_f_f (tgamma, 0x6.fffff8p0L, 7.1999935703082425988147448928288557689866e+02L),
14237     TEST_f_f (tgamma, 0x6.000008p0L, 1.2000009762487825358530770343720418162783e+02L),
14238     TEST_f_f (tgamma, 0x5.fffff8p0L, 1.1999990237520611552119807476573441975106e+02L),
14239     TEST_f_f (tgamma, 0x5.000008p0L, 2.4000017236155647574166073485628713443799e+01L),
14240     TEST_f_f (tgamma, 0x4.fffff8p0L, 2.3999982763857938712639837029547357501709e+01L),
14241     TEST_f_f (tgamma, 0x4.000008p0L, 6.0000035937827461765660468073471093546129e+00L),
14242     TEST_f_f (tgamma, 0x3.fffffcp0L, 5.9999982031095793171233994481968816873643e+00L),
14243     TEST_f_f (tgamma, 0x3.000004p0L, 2.0000004400179308360529417942462250547999e+00L),
14244     TEST_f_f (tgamma, 0x2.fffffcp0L, 1.9999995599822108706107786027549565954046e+00L),
14245     TEST_f_f (tgamma, 0x2.000004p0L, 1.0000001007996638509889062631687945799175e+00L),
14246     TEST_f_f (tgamma, 0x1.fffffep0L, 9.9999994960018563231526611134590489120697e-01L),
14247     TEST_f_f (tgamma, 0x1.000002p0L, 9.9999993119054472483596471908942669644327e-01L),
14248     TEST_f_f (tgamma, 0x0.ffffffp0L, 1.0000000344047381790797322460568297132998e+00L),
14249     TEST_f_f (tgamma, -0x0.ffffffp0L, -1.6777216422784419250710305882992376932423e+07L),
14250     TEST_f_f (tgamma, -0x1.000002p0L, 8.3886075772158332060084424806449513922858e+06L),
14251     TEST_f_f (tgamma, -0x1.fffffep0L, 4.1943044613922792026014320172298377770578e+06L),
14252     TEST_f_f (tgamma, -0x2.000004p0L, -2.0971515386080557574407223895988378776747e+06L),
14253     TEST_f_f (tgamma, -0x2.fffffcp0L, -6.9905087601970247876992248591045142913324e+05L),
14254     TEST_f_f (tgamma, -0x3.000004p0L, 6.9905045731381300146131914617735687322025e+05L),
14255     TEST_f_f (tgamma, -0x3.fffffcp0L, 1.7476272942159602684441970627092458855771e+05L),
14256     TEST_f_f (tgamma, -0x4.000008p0L, -8.7381270578483499672965708923121931082305e+04L),
14257     TEST_f_f (tgamma, -0x4.fffff8p0L, -1.7476280884325863043793087474680780379554e+04L),
14258     TEST_f_f (tgamma, -0x5.000008p0L, 1.7476252449031389167286893378510439443844e+04L),
14259     TEST_f_f (tgamma, -0x5.fffff8p0L, 2.9127137122026653716311560165769071985443e+03L),
14260     TEST_f_f (tgamma, -0x6.000008p0L, -2.9127085100239567622341538102130981196910e+03L),
14261     TEST_f_f (tgamma, -0x6.fffff8p0L, -4.1610198723079349791939054365613377035519e+02L),
14262     TEST_f_f (tgamma, -0x7.000008p0L, 4.1610118737306415004517215226199741948733e+02L),
14263     TEST_f_f (tgamma, -0x7.fffff8p0L, 5.2012751504050764429534086402871289946986e+01L),
14264     TEST_f_f (tgamma, -0x8.00001p0L, -2.6006296115134418896533598545925084576702e+01L),
14265     TEST_f_f (tgamma, -0x9.fffffp0L, 2.8896008370721717567612135720915723136310e-01L),
14266     TEST_f_f (tgamma, -0xa.00001p0L, -2.8895878754728051776830454190076999107021e-01L),
14267     TEST_f_f (tgamma, -0x13.ffffep0L, 2.1550026214525536756224040483579183652119e-13L),
14268     TEST_f_f (tgamma, -0x14.00002p0L, -2.1549777908265594916405421768142757507179e-13L),
14269     TEST_f_f (tgamma, -0x1d.ffffep0L, 1.9765721589464867957912772592816027583176e-27L),
14270     TEST_f_f (tgamma, -0x1e.00002p0L, -1.9765463890341964384070157599286498212650e-27L),
14271     TEST_f_f (tgamma, -0x27.ffffcp0L, 3.2129279441390812141195076945616975790225e-43L, UNDERFLOW_EXCEPTION_FLOAT),
14272     TEST_f_f (tgamma, -0x28.00004p0L, -3.2128372159115252365699015758097981155793e-43L, UNDERFLOW_EXCEPTION_FLOAT),
14273     TEST_f_f (tgamma, -0x28.ffffcp0L, -7.8364103489619817539676737414096652170685e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14274     TEST_f_f (tgamma, -0x29.00004p0L, 7.8361876024016854597745353972619195760515e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14275 #ifdef TEST_FLOAT
14276     TEST_f_f (tgamma, -0x29.ffffcp0L, plus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14277     TEST_f_f (tgamma, -0x2a.00004p0L, minus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14278 #else
14279     TEST_f_f (tgamma, -0x29.ffffcp0L, 1.8658121573125798145204120066590953505132e-46L),
14280     TEST_f_f (tgamma, -0x2a.00004p0L, -1.8657587834931410688246126853566488626385e-46L),
14281 #endif
14282 #ifndef TEST_FLOAT
14283     TEST_f_f (tgamma, 0x8.0000000000008p0L, 5.0400000000000180457125667322294144477136e+03L),
14284     TEST_f_f (tgamma, 0x7.ffffffffffffcp0L, 5.0399999999999909771437166339103165198442e+03L),
14285     TEST_f_f (tgamma, 0x7.0000000000004p0L, 7.2000000000000119762397445457359071259652e+02L),
14286     TEST_f_f (tgamma, 0x6.ffffffffffffcp0L, 7.1999999999999880237602554542848858572672e+02L),
14287     TEST_f_f (tgamma, 0x6.0000000000004p0L, 1.2000000000000018184042734842640022086408e+02L),
14288     TEST_f_f (tgamma, 0x5.ffffffffffffcp0L, 1.1999999999999981815957265157389249327533e+02L),
14289     TEST_f_f (tgamma, 0x5.0000000000004p0L, 2.4000000000000032104829055124673225982803e+01L),
14290     TEST_f_f (tgamma, 0x4.ffffffffffffcp0L, 2.3999999999999967895170944875373910918544e+01L),
14291     TEST_f_f (tgamma, 0x4.0000000000004p0L, 6.0000000000000066939396342309789716341613e+00L),
14292     TEST_f_f (tgamma, 0x3.ffffffffffffep0L, 5.9999999999999966530301828845138185025345e+00L),
14293     TEST_f_f (tgamma, 0x3.0000000000002p0L, 2.0000000000000008195971324717875960213536e+00L),
14294     TEST_f_f (tgamma, 0x2.ffffffffffffep0L, 1.9999999999999991804028675282128956223990e+00L),
14295     TEST_f_f (tgamma, 0x2.0000000000002p0L, 1.0000000000000001877539613108624482361963e+00L),
14296     TEST_f_f (tgamma, 0x1.fffffffffffffp0L, 9.9999999999999990612301934456883679778984e-01L),
14297     TEST_f_f (tgamma, 0x1.0000000000001p0L, 9.9999999999999987183237573039992418700531e-01L),
14298     TEST_f_f (tgamma, 0x0.fffffffffffff8p0L, 1.0000000000000000640838121348000744796665e+00L),
14299     TEST_f_f (tgamma, -0x0.fffffffffffff8p0L, -9.0071992547409924227843350984672961392521e+15L),
14300     TEST_f_f (tgamma, -0x1.0000000000001p0L, 4.5035996273704955772156649015331740980405e+15L),
14301     TEST_f_f (tgamma, -0x1.fffffffffffffp0L, 2.2517998136852484613921675492337776673289e+15L),
14302     TEST_f_f (tgamma, -0x2.0000000000002p0L, -1.1258999068426235386078324507668462444260e+15L),
14303     TEST_f_f (tgamma, -0x2.ffffffffffffep0L, -3.7529996894754154268627807196691509198813e+14L),
14304     TEST_f_f (tgamma, -0x3.0000000000002p0L, 3.7529996894754112398038859470009084971438e+14L),
14305     TEST_f_f (tgamma, -0x3.ffffffffffffep0L, 9.3824992236885396088236184658402406857503e+13L),
14306     TEST_f_f (tgamma, -0x4.0000000000004p0L, -4.6912496118442603911763815341745722862351e+13L),
14307     TEST_f_f (tgamma, -0x4.ffffffffffffcp0L, -9.3824992236885475509805702650262155809819e+12L),
14308     TEST_f_f (tgamma, -0x5.0000000000004p0L, 9.3824992236885191156860964016850034672946e+12L),
14309     TEST_f_f (tgamma, -0x5.ffffffffffffcp0L, 1.5637498706147581566449098589862357835505e+12L),
14310     TEST_f_f (tgamma, -0x6.0000000000004p0L, -1.5637498706147529544662012521330708016396e+12L),
14311     TEST_f_f (tgamma, -0x6.ffffffffffffcp0L, -2.2339283865925119357965832452642909859289e+11L),
14312     TEST_f_f (tgamma, -0x7.0000000000004p0L, 2.2339283865925039372192897706214475877342e+11L),
14313     TEST_f_f (tgamma, -0x7.ffffffffffffcp0L, 2.7924104832406402297655703264222230055898e+10L),
14314     TEST_f_f (tgamma, -0x8.0000000000008p0L, -1.3962052416203121511868106259843527348026e+10L),
14315     TEST_f_f (tgamma, -0x9.ffffffffffff8p0L, 1.5513391573559147700413058496716749249803e+08L),
14316     TEST_f_f (tgamma, -0xa.0000000000008p0L, -1.5513391573559018084419393002828541166901e+08L),
14317     TEST_f_f (tgamma, -0x13.ffffffffffffp0L, 1.1569515572952029402736625857313236848570e-04L),
14318     TEST_f_f (tgamma, -0x14.000000000001p0L, -1.1569515572951781096476686854873801225397e-04L),
14319     TEST_f_f (tgamma, -0x1d.ffffffffffffp0L, 1.0611571800204311628217068863959963842891e-18L),
14320     TEST_f_f (tgamma, -0x1e.000000000001p0L, -1.0611571800204053929094168642022073530425e-18L),
14321     TEST_f_f (tgamma, -0x27.fffffffffffep0L, 1.7249032006742266376460389310340465554361e-34L),
14322     TEST_f_f (tgamma, -0x28.000000000002p0L, -1.7249032006741359094184881234822934593822e-34L),
14323     TEST_f_f (tgamma, -0x28.fffffffffffep0L, -4.2070809772542120404320040128839297118648e-36L),
14324     TEST_f_f (tgamma, -0x29.000000000002p0L, 4.2070809772539892938717205103652583609422e-36L),
14325     TEST_f_f (tgamma, -0x29.fffffffffffep0L, 1.0016859469652887505173040814397197718981e-37L),
14326     TEST_f_f (tgamma, -0x2a.000000000002p0L, -1.0016859469652353766978684241048308120274e-37L),
14327     TEST_f_f (tgamma, -0x31.fffffffffffep0L, 4.6273774273632946947805289899230181990085e-51L),
14328     TEST_f_f (tgamma, -0x32.000000000002p0L, -4.6273774273630367887073532197576655720178e-51L),
14329     TEST_f_f (tgamma, -0x63.fffffffffffcp0L, 7.5400833348840965463348754984345825364294e-145L),
14330     TEST_f_f (tgamma, -0x64.000000000004p0L, -7.5400833348831085791638490135462230991587e-145L),
14331     TEST_f_f (tgamma, -0x95.fffffffffff8p0L, 6.1582369322723207086020016423767264008839e-250L),
14332     TEST_f_f (tgamma, -0x96.000000000008p0L, -6.1582369322705655439003240743176243138734e-250L),
14333     TEST_f_f (tgamma, -0xb4.fffffffffff8p0L, -9.6760879059917574597728750098636253931457e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14334     TEST_f_f (tgamma, -0xb5.000000000008p0L, 9.6760879059888966544677044221698800670218e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14335     TEST_f_f (tgamma, -0xb5.fffffffffff8p0L, 5.3165318164789884455066481673086605454904e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14336     TEST_f_f (tgamma, -0xb6.000000000008p0L, -5.3165318164774149139661976747137185876909e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14337     TEST_f_f (tgamma, -0xb6.fffffffffff8p0L, -2.9052086428846935908287469917922960610289e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14338     TEST_f_f (tgamma, -0xb7.000000000008p0L, 2.9052086428838328351126988236541632950925e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14339 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14340     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14341     TEST_f_f (tgamma, -0xb8.000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14342 # else
14343     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, 1.5789177406982032823826953250736039527543e-325L),
14344     TEST_f_f (tgamma, -0xb8.000000000008p0L, -1.5789177406977349925854817486109369828857e-325L),
14345 # endif
14346 #endif
14347 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14348     TEST_f_f (tgamma, 0x8.00000000000000000000000004p0L, 5.0400000000000000000000000000020034765587e+03L),
14349     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffep0L, 5.0399999999999999999999999999989982617206e+03L),
14350     TEST_f_f (tgamma, 0x7.00000000000000000000000002p0L, 7.2000000000000000000000000000013296297113e+02L),
14351     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffep0L, 7.1999999999999999999999999999986703702887e+02L),
14352     TEST_f_f (tgamma, 0x6.00000000000000000000000002p0L, 1.2000000000000000000000000000002018834292e+02L),
14353     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffep0L, 1.1999999999999999999999999999997981165708e+02L),
14354     TEST_f_f (tgamma, 0x5.00000000000000000000000002p0L, 2.4000000000000000000000000000003564352042e+01L),
14355     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffep0L, 2.3999999999999999999999999999996435647958e+01L),
14356     TEST_f_f (tgamma, 0x4.00000000000000000000000002p0L, 6.0000000000000000000000000000007431765907e+00L),
14357     TEST_f_f (tgamma, 0x3.ffffffffffffffffffffffffffp0L, 5.9999999999999999999999999999996284117046e+00L),
14358     TEST_f_f (tgamma, 0x3.00000000000000000000000001p0L, 2.0000000000000000000000000000000909935607e+00L),
14359     TEST_f_f (tgamma, 0x2.ffffffffffffffffffffffffffp0L, 1.9999999999999999999999999999999090064393e+00L),
14360     TEST_f_f (tgamma, 0x2.00000000000000000000000001p0L, 1.0000000000000000000000000000000208448771e+00L),
14361     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffff8p0L, 9.9999999999999999999999999999998957756146e-01L),
14362     TEST_f_f (tgamma, 0x1.000000000000000000000000008p0L, 9.9999999999999999999999999999998577053525e-01L),
14363     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffcp0L, 1.0000000000000000000000000000000071147324e+00L),
14364     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffcp0L, -8.1129638414606681695789005144064422784335e+31L),
14365     TEST_f_f (tgamma, -0x1.000000000000000000000000008p0L, 4.0564819207303340847894502572031577215665e+31L),
14366     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffff8p0L, 2.0282409603651670423947251286016461392168e+31L),
14367     TEST_f_f (tgamma, -0x2.00000000000000000000000001p0L, -1.0141204801825835211973625643007538607832e+31L),
14368     TEST_f_f (tgamma, -0x2.ffffffffffffffffffffffffffp0L, -3.3804016006086117373245418810028760196114e+30L),
14369     TEST_f_f (tgamma, -0x3.00000000000000000000000001p0L, 3.3804016006086117373245418810024573137219e+30L),
14370     TEST_f_f (tgamma, -0x3.ffffffffffffffffffffffffffp0L, 8.4510040015215293433113547025072942156952e+29L),
14371     TEST_f_f (tgamma, -0x4.00000000000000000000000002p0L, -4.2255020007607646716556773512527057843048e+29L),
14372     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffep0L, -8.4510040015215293433113547025080884313904e+28L),
14373     TEST_f_f (tgamma, -0x5.00000000000000000000000002p0L, 8.4510040015215293433113547025052449019430e+28L),
14374     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffep0L, 1.4085006669202548905518924504180378867132e+28L),
14375     TEST_f_f (tgamma, -0x6.00000000000000000000000002p0L, -1.4085006669202548905518924504175176688423e+28L),
14376     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffep0L, -2.0121438098860784150741320720257967542615e+27L),
14377     TEST_f_f (tgamma, -0x7.00000000000000000000000002p0L, 2.0121438098860784150741320720249968965322e+27L),
14378     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffep0L, 2.5151797623575980188426650900322769448110e+26L),
14379     TEST_f_f (tgamma, -0x8.00000000000000000000000004p0L, -1.2575898811787990094213325450153421028080e+26L),
14380     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffcp0L, 1.3973220901986655660237028277960625420495e+24L),
14381     TEST_f_f (tgamma, -0xa.00000000000000000000000004p0L, -1.3973220901986655660237028277947663821128e+24L),
14382     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffff8p0L, 1.0420893204640670202556853709074896123293e+12L),
14383     TEST_f_f (tgamma, -0x14.00000000000000000000000008p0L, -1.0420893204640670202556853709050065497299e+12L),
14384     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffff8p0L, 9.5580541610429641982963434151488827190079e-03L),
14385     TEST_f_f (tgamma, -0x1e.00000000000000000000000008p0L, -9.5580541610429641982963434151231128067179e-03L),
14386     TEST_f_f (tgamma, -0x27.fffffffffffffffffffffffffp0L, 1.5536546823612837336494536911280147806523e-18L),
14387     TEST_f_f (tgamma, -0x28.0000000000000000000000001p0L, -1.5536546823612837336494536911189419578973e-18L),
14388     TEST_f_f (tgamma, -0x28.fffffffffffffffffffffffffp0L, -3.7894016642958139845108626612879138384405e-20L),
14389     TEST_f_f (tgamma, -0x29.0000000000000000000000001p0L, 3.7894016642958139845108626612656391824122e-20L),
14390     TEST_f_f (tgamma, -0x29.fffffffffffffffffffffffffp0L, 9.0223849149900332964544349078285357440663e-22L),
14391     TEST_f_f (tgamma, -0x2a.0000000000000000000000001p0L, -9.0223849149900332964544349077751619246306e-22L),
14392     TEST_f_f (tgamma, -0x31.fffffffffffffffffffffffffp0L, 4.1679710515150795310771069868348482819424e-35L),
14393     TEST_f_f (tgamma, -0x32.0000000000000000000000001p0L, -4.1679710515150795310771069868090576746248e-35L),
14394     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffep0L, 6.7915032994648558610510614163560656864280e-129L),
14395     TEST_f_f (tgamma, -0x64.0000000000000000000000002p0L, -6.7915032994648558610510614162572689693253e-129L),
14396     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffcp0L, 5.5468467106873795353190582463444660395353e-234L),
14397     TEST_f_f (tgamma, -0x96.0000000000000000000000004p0L, -5.5468467106873795353190582461689495693675e-234L),
14398     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffcp0L, -8.7154451775644399729745472278589884205029e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14399     TEST_f_f (tgamma, -0xb5.0000000000000000000000004p0L, 8.7154451775644399729745472275729078899858e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14400     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffcp0L, 4.7887061415189230620739270482742524864974e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14401     TEST_f_f (tgamma, -0xb6.0000000000000000000000004p0L, -4.7887061415189230620739270481168993324524e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14402     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffcp0L, -2.6167793123054224382917634143575601407067e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14403     TEST_f_f (tgamma, -0xb7.0000000000000000000000004p0L, 2.6167793123054224382917634142714845691019e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14404     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffcp0L, 1.4221626697312078468976975078030462044826e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14405     TEST_f_f (tgamma, -0xb8.0000000000000000000000004p0L, -1.4221626697312078468976975077562172247612e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14406     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffcp0L, 1.1756150745511026776007338998283058108448e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14407     TEST_f_f (tgamma, -0xbc.0000000000000000000000004p0L, -1.1756150745511026776007338997894360215107e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14408     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffcp0L, -6.2201855796354639026493857133773832713743e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14409     TEST_f_f (tgamma, -0xbd.0000000000000000000000004p0L, 6.2201855796354639026493857131715153125175e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14410     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffcp0L, 3.2737818840186652119207293228302560914295e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14411     TEST_f_f (tgamma, -0xbe.0000000000000000000000004p0L, -3.2737818840186652119207293227217957948294e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14412 # if LDBL_MAX_EXP <= 1024
14413     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14414     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14415 # else
14416     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, -1.7140219288055838805867692789687487834686e-325L),
14417     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, 1.7140219288055838805867692789119066543632e-325L),
14418 # endif
14419 #endif
14420 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14421     TEST_f_f (tgamma, 0x8.000000000000001p0L, 5.0400000000000000088113830892247051102283e+03L),
14422     TEST_f_f (tgamma, 0x7.fffffffffffffff8p0L, 5.0399999999999999955943084553876474508520e+03L),
14423     TEST_f_f (tgamma, 0x7.0000000000000008p0L, 7.2000000000000000058477733127664675369681e+02L),
14424     TEST_f_f (tgamma, 0x6.fffffffffffffff8p0L, 7.1999999999999999941522266872335324679893e+02L),
14425     TEST_f_f (tgamma, 0x6.0000000000000008p0L, 1.2000000000000000008878927116622375680433e+02L),
14426     TEST_f_f (tgamma, 0x5.fffffffffffffff8p0L, 1.1999999999999999991121072883377624326546e+02L),
14427     TEST_f_f (tgamma, 0x5.0000000000000008p0L, 2.4000000000000000015676186062072582846211e+01L),
14428     TEST_f_f (tgamma, 0x4.fffffffffffffff8p0L, 2.3999999999999999984323813937927417165027e+01L),
14429     TEST_f_f (tgamma, 0x4.0000000000000008p0L, 6.0000000000000000032685252120268430507939e+00L),
14430     TEST_f_f (tgamma, 0x3.fffffffffffffffcp0L, 5.9999999999999999983657373939865784753909e+00L),
14431     TEST_f_f (tgamma, 0x3.0000000000000004p0L, 2.0000000000000000004001939123397399171482e+00L),
14432     TEST_f_f (tgamma, 0x2.fffffffffffffffcp0L, 1.9999999999999999995998060876602600829690e+00L),
14433     TEST_f_f (tgamma, 0x2.0000000000000004p0L, 1.0000000000000000000916767389213195151634e+00L),
14434     TEST_f_f (tgamma, 0x1.fffffffffffffffep0L, 9.9999999999999999995416163053934024243282e-01L),
14435     TEST_f_f (tgamma, 0x1.0000000000000002p0L, 9.9999999999999999993741815221210931418291e-01L),
14436     TEST_f_f (tgamma, 0x0.ffffffffffffffffp0L, 1.0000000000000000000312909238939453429173e+00L),
14437     TEST_f_f (tgamma, -0x0.ffffffffffffffffp0L, -1.8446744073709551616422784335098467139470e+19L),
14438     TEST_f_f (tgamma, -0x1.0000000000000002p0L, 9.2233720368547758075772156649015328607596e+18L),
14439     TEST_f_f (tgamma, -0x1.fffffffffffffffep0L, 4.6116860184273879044613921675492335697983e+18L),
14440     TEST_f_f (tgamma, -0x2.0000000000000004p0L, -2.3058430092136939515386078324507664305064e+18L),
14441     TEST_f_f (tgamma, -0x2.fffffffffffffffcp0L, -7.6861433640456465087601961140530007887063e+17L),
14442     TEST_f_f (tgamma, -0x3.0000000000000004p0L, 7.6861433640456465045731372192803325462836e+17L),
14443     TEST_f_f (tgamma, -0x3.fffffffffffffffcp0L, 1.9215358410114116272942156951799168638773e+17L),
14444     TEST_f_f (tgamma, -0x4.0000000000000008p0L, -9.6076792050570581270578430482008313684602e+16L),
14445     TEST_f_f (tgamma, -0x4.fffffffffffffff8p0L, -1.9215358410114116280884313903598337283601e+16L),
14446     TEST_f_f (tgamma, -0x5.0000000000000008p0L, 1.9215358410114116252449019429734996071487e+16L),
14447     TEST_f_f (tgamma, -0x5.fffffffffffffff8p0L, 3.2025597350190193803788671320812043622696e+15L),
14448     TEST_f_f (tgamma, -0x6.0000000000000008p0L, -3.2025597350190193751766884234743511972877e+15L),
14449     TEST_f_f (tgamma, -0x6.fffffffffffffff8p0L, -4.5750853357414562579675426149912896787735e+14L),
14450     TEST_f_f (tgamma, -0x7.0000000000000008p0L, 4.5750853357414562499689653215166468353753e+14L),
14451     TEST_f_f (tgamma, -0x7.fffffffffffffff8p0L, 5.7188566696768203227694481100089533685959e+13L),
14452     TEST_f_f (tgamma, -0x8.000000000000001p0L, -2.8594283348384101534210280804672371201060e+13L),
14453     TEST_f_f (tgamma, -0x9.fffffffffffffffp0L, 3.1771425942649001828476427167843945971988e+11L),
14454     TEST_f_f (tgamma, -0xa.000000000000001p0L, -3.1771425942649001698860433502350057763905e+11L),
14455     TEST_f_f (tgamma, -0x13.ffffffffffffffep0L, 2.3694367893405502075347562184931828448654e-01L),
14456     TEST_f_f (tgamma, -0x14.000000000000002p0L, -2.3694367893405501827041302245929389013031e-01L),
14457     TEST_f_f (tgamma, -0x1d.ffffffffffffffep0L, 2.1732499046818166459536268654187775086902e-15L),
14458     TEST_f_f (tgamma, -0x1e.000000000000002p0L, -2.1732499046818166201837145753965837196590e-15L),
14459     TEST_f_f (tgamma, -0x27.ffffffffffffffcp0L, 3.5326017549807232935581894777156474496719e-31L),
14460     TEST_f_f (tgamma, -0x28.000000000000004p0L, -3.5326017549807232028299619269080956965758e-31L),
14461     TEST_f_f (tgamma, -0x28.ffffffffffffffcp0L, -8.6161018414163982777002940498289948893044e-33L),
14462     TEST_f_f (tgamma, -0x29.000000000000004p0L, 8.6161018414163980549537337663264762179535e-33L),
14463     TEST_f_f (tgamma, -0x29.ffffffffffffffcp0L, 2.0514528193848567329552463626090806737389e-34L),
14464     TEST_f_f (tgamma, -0x2a.000000000000004p0L, -2.0514528193848566795814269269517457847791e-34L),
14465     TEST_f_f (tgamma, -0x31.ffffffffffffffcp0L, 9.4768689712397635680446279661359728835046e-48L),
14466     TEST_f_f (tgamma, -0x32.000000000000004p0L, -9.4768689712397633101385547903658075308777e-48L),
14467     TEST_f_f (tgamma, -0x63.ffffffffffffff8p0L, 1.5442090669841618542494279375256856430049e-141L),
14468     TEST_f_f (tgamma, -0x64.000000000000008p0L, -1.5442090669841617554527108348771968070612e-141L),
14469     TEST_f_f (tgamma, -0x95.ffffffffffffffp0L, 1.2612069237291916400144732227892704713839e-246L),
14470     TEST_f_f (tgamma, -0x96.00000000000001p0L, -1.2612069237291914644980030550324645611752e-246L),
14471     TEST_f_f (tgamma, -0xb4.ffffffffffffffp0L, -1.9816628031468191243385005680879281767694e-315L),
14472     TEST_f_f (tgamma, -0xb5.00000000000001p0L, 1.9816628031468188382579700510291588022368e-315L),
14473     TEST_f_f (tgamma, -0xb5.ffffffffffffffp0L, 1.0888257160147357826865964233809723297472e-317L),
14474     TEST_f_f (tgamma, -0xb6.00000000000001p0L, -1.0888257160147356253334423783317128355514e-317L),
14475     TEST_f_f (tgamma, -0xb6.ffffffffffffffp0L, -5.9498673006269714905418984659220067091260e-320L),
14476     TEST_f_f (tgamma, -0xb7.00000000000001p0L, 5.9498673006269706297861824177538685763601e-320L),
14477     TEST_f_f (tgamma, -0xb7.ffffffffffffffp0L, 3.2336235329494410277123118903958061569834e-322L),
14478     TEST_f_f (tgamma, -0xb8.00000000000001p0L, -3.2336235329494405594225146768193434900135e-322L),
14479     TEST_f_f (tgamma, -0xbb.ffffffffffffffp0L, 2.6730392040715350119087465463119939092815e-331L),
14480     TEST_f_f (tgamma, -0xbc.00000000000001p0L, -2.6730392040715346232108532050343031951651e-331L),
14481     TEST_f_f (tgamma, -0xbc.ffffffffffffffp0L, -1.4143064571807063556111222197839950086445e-333L),
14482     TEST_f_f (tgamma, -0xbd.00000000000001p0L, 1.4143064571807061497431633629389135273431e-333L),
14483     TEST_f_f (tgamma, -0xbd.ffffffffffffffp0L, 7.4437181956879281879706555863416819210399e-336L),
14484     TEST_f_f (tgamma, -0xbe.00000000000001p0L, -7.4437181956879271033676895858841525581153e-336L),
14485     TEST_f_f (tgamma, -0xbe.ffffffffffffffp0L, -3.8972346574282346536709453101948570578636e-338L),
14486     TEST_f_f (tgamma, -0xbf.00000000000001p0L, 3.8972346574282340852496542564155275274974e-338L),
14487     TEST_f_f (tgamma, -0xf9.ffffffffffffffp0L, 2.2289142548411573883553287678043297937797e-476L),
14488     TEST_f_f (tgamma, -0xfa.00000000000001p0L, -2.2289142548411570466476165308364665814265e-476L),
14489     TEST_f_f (tgamma, -0x1f3.fffffffffffffep0L, 2.9528489142763141594943668922610562530068e-1118L),
14490     TEST_f_f (tgamma, -0x1f4.00000000000002p0L, -2.9528489142763131406565394149878256133744e-1118L),
14491     TEST_f_f (tgamma, -0x2ed.fffffffffffffcp0L, 6.9801511765871818502006905472380418430269e-1817L),
14492     TEST_f_f (tgamma, -0x2ee.00000000000004p0L, -6.9801511765871767194421856376592926002995e-1817L),
14493     TEST_f_f (tgamma, -0x3e7.fffffffffffffcp0L, 4.4768809295877296071892611539415773519036e-2552L),
14494     TEST_f_f (tgamma, -0x3e8.00000000000004p0L, -4.4768809295877261735541135972060089530309e-2552L),
14495     TEST_f_f (tgamma, -0x4e1.fffffffffffff8p0L, 5.4651488569236507565341414077911790252381e-3315L),
14496     TEST_f_f (tgamma, -0x4e2.00000000000008p0L, -5.4651488569236421026544487194247355967789e-3315L),
14497     TEST_f_f (tgamma, -0x5db.fffffffffffff8p0L, 1.8718211510339187689122114747834510481993e-4099L),
14498     TEST_f_f (tgamma, -0x5dc.00000000000008p0L, -1.8718211510339157291960718369454861898499e-4099L),
14499     TEST_f_f (tgamma, -0x6d5.fffffffffffff8p0L, 4.2925786447266492555651378780094011518063e-4902L),
14500     TEST_f_f (tgamma, -0x6d6.00000000000008p0L, -4.2925786447266421378134368786479937285900e-4902L),
14501     TEST_f_f (tgamma, -0x6e2.fffffffffffff8p0L, -2.8229173528168668283609231628661510187536e-4944L, UNDERFLOW_EXCEPTION),
14502     TEST_f_f (tgamma, -0x6e3.00000000000008p0L, 2.8229173528168621428945467532322397890424e-4944L, UNDERFLOW_EXCEPTION),
14503     TEST_f_f (tgamma, -0x6e3.fffffffffffff8p0L, 1.6002932839097884515524894602387278842659e-4947L, UNDERFLOW_EXCEPTION),
14504     TEST_f_f (tgamma, -0x6e4.00000000000008p0L, -1.6002932839097857951909742110188634438017e-4947L, UNDERFLOW_EXCEPTION),
14505     TEST_f_f (tgamma, -0x6e4.fffffffffffff8p0L, -9.0668174725767051085164382743343408095146e-4951L, UNDERFLOW_EXCEPTION),
14506     TEST_f_f (tgamma, -0x6e5.00000000000008p0L, 9.0668174725766900571689083050287838090189e-4951L, UNDERFLOW_EXCEPTION),
14507 # if LDBL_MANT_DIG <= 64
14508     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION),
14509     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION),
14510 # else
14511     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, 5.1340982290921319983501912122292601780326e-4954L, UNDERFLOW_EXCEPTION),
14512     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, -5.1340982290921234748578193083614111497314e-4954L, UNDERFLOW_EXCEPTION),
14513 # endif
14514 # if LDBL_MANT_DIG >= 113
14515     TEST_f_f (tgamma, 0x8.0000000000000000000000000008p0L, 5.0400000000000000000000000000000156521606e+03L),
14516     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffffcp0L, 5.0399999999999999999999999999999921739197e+03L),
14517     TEST_f_f (tgamma, 0x7.0000000000000000000000000004p0L, 7.2000000000000000000000000000000103877321e+02L),
14518     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffffcp0L, 7.1999999999999999999999999999999896122679e+02L),
14519     TEST_f_f (tgamma, 0x6.0000000000000000000000000004p0L, 1.2000000000000000000000000000000015772143e+02L),
14520     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffffcp0L, 1.1999999999999999999999999999999984227857e+02L),
14521     TEST_f_f (tgamma, 0x5.0000000000000000000000000004p0L, 2.4000000000000000000000000000000027846500e+01L),
14522     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffffcp0L, 2.3999999999999999999999999999999972153500e+01L),
14523     TEST_f_f (tgamma, 0x4.0000000000000000000000000004p0L, 6.0000000000000000000000000000000058060671e+00L),
14524     TEST_f_f (tgamma, 0x3.fffffffffffffffffffffffffffep0L, 5.9999999999999999999999999999999970969664e+00L),
14525     TEST_f_f (tgamma, 0x3.0000000000000000000000000002p0L, 2.0000000000000000000000000000000007108872e+00L),
14526     TEST_f_f (tgamma, 0x2.fffffffffffffffffffffffffffep0L, 1.9999999999999999999999999999999992891128e+00L),
14527     TEST_f_f (tgamma, 0x2.0000000000000000000000000002p0L, 1.0000000000000000000000000000000001628506e+00L),
14528     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffffffp0L, 9.9999999999999999999999999999999991857470e-01L),
14529     TEST_f_f (tgamma, 0x1.0000000000000000000000000001p0L, 9.9999999999999999999999999999999988883231e-01L),
14530     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffff8p0L, 1.0000000000000000000000000000000000555838e+00L),
14531     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffff8p0L, -1.0384593717069655257060992658440192422784e+34L),
14532     TEST_f_f (tgamma, -0x1.0000000000000000000000000001p0L, 5.1922968585348276285304963292200955772157e+33L),
14533     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffffffp0L, 2.5961484292674138142652481646100484613922e+33L),
14534     TEST_f_f (tgamma, -0x2.0000000000000000000000000002p0L, -1.2980742146337069071326240823050235386078e+33L),
14535     TEST_f_f (tgamma, -0x2.fffffffffffffffffffffffffffep0L, -4.3269140487790230237754136076834154268628e+32L),
14536     TEST_f_f (tgamma, -0x3.0000000000000000000000000002p0L, 4.3269140487790230237754136076834112398039e+32L),
14537     TEST_f_f (tgamma, -0x3.fffffffffffffffffffffffffffep0L, 1.0817285121947557559438534019208539608824e+32L),
14538     TEST_f_f (tgamma, -0x4.0000000000000000000000000004p0L, -5.4086425609737787797192670096042603911764e+31L),
14539     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffffcp0L, -1.0817285121947557559438534019208547550981e+31L),
14540     TEST_f_f (tgamma, -0x5.0000000000000000000000000004p0L, 1.0817285121947557559438534019208519115686e+31L),
14541     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffffcp0L, 1.8028808536579262599064223365347581566449e+30L),
14542     TEST_f_f (tgamma, -0x6.0000000000000000000000000004p0L, -1.8028808536579262599064223365347529544662e+30L),
14543     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffffcp0L, -2.5755440766541803712948890521925119357966e+29L),
14544     TEST_f_f (tgamma, -0x7.0000000000000000000000000004p0L, 2.5755440766541803712948890521925039372193e+29L),
14545     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffffcp0L, 3.2194300958177254641186113152406402297656e+28L),
14546     TEST_f_f (tgamma, -0x8.0000000000000000000000000008p0L, -1.6097150479088627320593056576203121511868e+28L),
14547     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffff8p0L, 1.7885722754542919245103396195781369922635e+26L),
14548     TEST_f_f (tgamma, -0xa.0000000000000000000000000008p0L, -1.7885722754542919245103396195781240306642e+26L),
14549     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffffffp0L, 1.3338743301940057859272772747600099590309e+14L),
14550     TEST_f_f (tgamma, -0x14.000000000000000000000000001p0L, -1.3338743301940057859272772747599851284049e+14L),
14551     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffffffp0L, 1.2234309326134994173819319571374205986026e+00L),
14552     TEST_f_f (tgamma, -0x1e.000000000000000000000000001p0L, -1.2234309326134994173819319571373948286903e+00L),
14553     TEST_f_f (tgamma, -0x27.ffffffffffffffffffffffffffep0L, 1.9886779934224431790713007246380976767855e-16L),
14554     TEST_f_f (tgamma, -0x28.000000000000000000000000002p0L, -1.9886779934224431790713007246380069485580e-16L),
14555     TEST_f_f (tgamma, -0x28.ffffffffffffffffffffffffffep0L, -4.8504341302986419001739042064343853066259e-18L),
14556     TEST_f_f (tgamma, -0x29.000000000000000000000000002p0L, 4.8504341302986419001739042064341625600656e-18L),
14557     TEST_f_f (tgamma, -0x29.ffffffffffffffffffffffffffep0L, 1.1548652691187242619461676681986633377063e-19L),
14558     TEST_f_f (tgamma, -0x2a.000000000000000000000000002p0L, -1.1548652691187242619461676681986099638869e-19L),
14559     TEST_f_f (tgamma, -0x31.ffffffffffffffffffffffffffep0L, 5.3350029459393017997786969431322287652396e-33L),
14560     TEST_f_f (tgamma, -0x32.000000000000000000000000002p0L, -5.3350029459393017997786969431319708591664e-33L),
14561     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffffcp0L, 8.6931242233150155021453586128730281632676e-127L),
14562     TEST_f_f (tgamma, -0x64.000000000000000000000000004p0L, -8.6931242233150155021453586128720401960966e-127L),
14563     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffff8p0L, 7.0999637896798458052083945552094635720486e-232L),
14564     TEST_f_f (tgamma, -0x96.000000000000000000000000008p0L, -7.0999637896798458052083945552077084073470e-232L),
14565     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffff8p0L, -1.1155769827282483165407420451477844041365e-300L),
14566     TEST_f_f (tgamma, -0xb5.000000000000000000000000008p0L, 1.1155769827282483165407420451474983236060e-300L),
14567     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffff8p0L, 6.1295438611442215194546266216911239298981e-303L),
14568     TEST_f_f (tgamma, -0xb6.000000000000000000000000008p0L, -6.1295438611442215194546266216895503983577e-303L),
14569     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffff8p0L, -3.3494775197509407210134571703230189921356e-305L),
14570     TEST_f_f (tgamma, -0xb7.000000000000000000000000008p0L, 3.3494775197509407210134571703221582364195e-305L),
14571     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffff8p0L, 1.8203682172559460440290528099581627396147e-307L),
14572     TEST_f_f (tgamma, -0xb8.000000000000000000000000008p0L, -1.8203682172559460440290528099576944498174e-307L),
14573     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffff8p0L, 1.5047872954254114273289393917555491216542e-316L),
14574     TEST_f_f (tgamma, -0xbc.000000000000000000000000008p0L, -1.5047872954254114273289393917551604237609e-316L),
14575     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffff8p0L, -7.9618375419333937953912137129923244334851e-319L),
14576     TEST_f_f (tgamma, -0xbd.000000000000000000000000008p0L, 7.9618375419333937953912137129902657538965e-319L),
14577     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffff8p0L, 4.1904408115438914712585335331538555086887e-321L),
14578     TEST_f_f (tgamma, -0xbe.000000000000000000000000008p0L, -4.1904408115438914712585335331527709057227e-321L),
14579     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffff8p0L, -2.1939480688711473671510646770439036908579e-323L),
14580     TEST_f_f (tgamma, -0xbf.000000000000000000000000008p0L, 2.1939480688711473671510646770433352695669e-323L),
14581     TEST_f_f (tgamma, -0xf9.ffffffffffffffffffffffffff8p0L, 1.2547671759429278005937024349858508569625e-461L),
14582     TEST_f_f (tgamma, -0xfa.000000000000000000000000008p0L, -1.2547671759429278005937024349855091492502e-461L),
14583     TEST_f_f (tgamma, -0x1f3.ffffffffffffffffffffffffffp0L, 1.6623061587520224800948170558276526986560e-1103L),
14584     TEST_f_f (tgamma, -0x1f4.00000000000000000000000001p0L, -1.6623061587520224800948170558266338608285e-1103L),
14585     TEST_f_f (tgamma, -0x2ed.fffffffffffffffffffffffffep0L, 3.9294757797334687313030998663853566763041e-1802L),
14586     TEST_f_f (tgamma, -0x2ee.00000000000000000000000002p0L, -3.9294757797334687313030998663802259177992e-1802L),
14587     TEST_f_f (tgamma, -0x3e7.fffffffffffffffffffffffffep0L, 2.5202599107841713834679953735597552855978e-2537L),
14588     TEST_f_f (tgamma, -0x3e8.00000000000000000000000002p0L, -2.5202599107841713834679953735563216504503e-2537L),
14589     TEST_f_f (tgamma, -0x4e1.fffffffffffffffffffffffffcp0L, 3.0766052944457032773369415396747635242705e-3300L),
14590     TEST_f_f (tgamma, -0x4e2.00000000000000000000000004p0L, -3.0766052944457032773369415396661096445778e-3300L),
14591     TEST_f_f (tgamma, -0x5db.fffffffffffffffffffffffffcp0L, 1.0537416297875703295453200836588944487917e-4084L),
14592     TEST_f_f (tgamma, -0x5dc.00000000000000000000000004p0L, -1.0537416297875703295453200836558547326520e-4084L),
14593     TEST_f_f (tgamma, -0x6d5.fffffffffffffffffffffffffcp0L, 2.4165069481061837867659591369998698607387e-4887L),
14594     TEST_f_f (tgamma, -0x6d6.00000000000000000000000004p0L, -2.4165069481061837867659591369927521090377e-4887L),
14595     TEST_f_f (tgamma, -0x6e2.fffffffffffffffffffffffffcp0L, -1.5891611922804672355414813803008070609431e-4929L),
14596     TEST_f_f (tgamma, -0x6e3.00000000000000000000000004p0L, 1.5891611922804672355414813802961215945667e-4929L),
14597     TEST_f_f (tgamma, -0x6e3.fffffffffffffffffffffffffcp0L, 9.0088502963745308137272187091882496519917e-4933L, UNDERFLOW_EXCEPTION),
14598     TEST_f_f (tgamma, -0x6e4.00000000000000000000000004p0L, -9.0088502963745308137272187091616860368392e-4933L, UNDERFLOW_EXCEPTION),
14599     TEST_f_f (tgamma, -0x6e4.fffffffffffffffffffffffffcp0L, -5.1041644738665896961627301468488672286746e-4936L, UNDERFLOW_EXCEPTION),
14600     TEST_f_f (tgamma, -0x6e5.00000000000000000000000004p0L, 5.1041644738665896961627301468338158811446e-4936L, UNDERFLOW_EXCEPTION),
14601     TEST_f_f (tgamma, -0x6e5.fffffffffffffffffffffffffcp0L, 2.8902403589278537350864836618623260468143e-4939L, UNDERFLOW_EXCEPTION),
14602     TEST_f_f (tgamma, -0x6e6.00000000000000000000000004p0L, -2.8902403589278537350864836618538025544424e-4939L, UNDERFLOW_EXCEPTION),
14603     TEST_f_f (tgamma, -0x6eb.fffffffffffffffffffffffffcp0L, 9.4152481960798287090819640211017219042636e-4959L, UNDERFLOW_EXCEPTION),
14604     TEST_f_f (tgamma, -0x6ec.00000000000000000000000004p0L, -9.4152481960798287090819640210739431797168e-4959L, UNDERFLOW_EXCEPTION),
14605     TEST_f_f (tgamma, -0x6ec.fffffffffffffffffffffffffcp0L, -5.3103486723518492437010513373388172315540e-4962L, UNDERFLOW_EXCEPTION),
14606     TEST_f_f (tgamma, -0x6ed.00000000000000000000000004p0L, 5.3103486723518492437010513373231484108489e-4962L, UNDERFLOW_EXCEPTION),
14607     TEST_f_f (tgamma, -0x6ed.fffffffffffffffffffffffffcp0L, 2.9934321715624854812294539669328172615019e-4965L, UNDERFLOW_EXCEPTION),
14608     TEST_f_f (tgamma, -0x6ee.00000000000000000000000004p0L, -2.9934321715624854812294539669239841152754e-4965L, UNDERFLOW_EXCEPTION),
14609     TEST_f_f (tgamma, -0x6ee.fffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION),
14610     TEST_f_f (tgamma, -0x6ef.00000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION),
14611 # endif
14612 #endif
14613     TEST_f_f (tgamma, -0x1.0a32a2p+5L, 1.8125267978155035272941154746083439329912e-37L),
14614 #ifndef TEST_FLOAT
14615     TEST_f_f (tgamma, -0x1.5800000080001p+7L, -3.1439271448823567326093363350637118195240e-304L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14616 #endif
14617     TEST_f_f (tgamma, 18.5L, 1.4986120533153361177371791123515513270334e+15L),
14618     TEST_f_f (tgamma, 19.5L, 2.7724322986333718178137813578503699550119e+16L),
14619     TEST_f_f (tgamma, 23.5L, 5.3613035875444147334274983856108155717836e+21L),
14620     TEST_f_f (tgamma, 29.5L, 1.6348125198274266444378807806868221866931e+30L),
14621     TEST_f_f (tgamma, 30.5L, 4.8226969334909086010917483030261254507447e+31L),
14622     TEST_f_f (tgamma, 31.5L, 1.4709225647147271233329832324229682624771e+33L),
14623     TEST_f_f (tgamma, 32.5L, 4.6334060788513904384988971821323500268029e+34L),
14624     TEST_f_f (tgamma, 33.5L, 1.5058569756267018925121415841930137587110e+36L),
14625     TEST_f_f (tgamma, 34.5L, 5.0446208683494513399156743070465960916817e+37L),
14626     TEST_f_f (tgamma, 0x2.30a43cp+4L, 3.4027979115654976101247558405326779640190e+38L),
14627 #ifdef TEST_FLOAT
14628     TEST_f_f (tgamma, 0x2.30a44p+4L, plus_infty, OVERFLOW_EXCEPTION),
14629 #else
14630     TEST_f_f (tgamma, 0x2.30a44p+4L, 3.4028438913396451054667218138127983367181e+38L),
14631 #endif
14632 #ifndef TEST_FLOAT
14633     TEST_f_f (tgamma, 0xa.b9fd72b0fb238p+4L, 1.7976931348622298700886249281842651388250e+308L),
14634 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14635     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, plus_infty, OVERFLOW_EXCEPTION),
14636 # else
14637     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, 1.7976931348624926129589466917917870782484e+308L),
14638 # endif
14639 #endif
14640 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14641     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f4p+4L, 1.7976931348623158079372897140307719334857e+308L),
14642 # if LDBL_MAX_EXP <= 1024
14643     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, plus_infty, OVERFLOW_EXCEPTION),
14644 # else
14645     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, 1.7976931348623158079372897140599422519044e+308L),
14646 # endif
14647 #endif
14648 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14649     TEST_f_f (tgamma, 0x6.db8c603359a97108p+8L, 1.1897314953572317517071551278058233700012e+4932L),
14650     TEST_f_f (tgamma, 0x6.db8c603359a9711p+8L, plus_infty, OVERFLOW_EXCEPTION),
14651 # if LDBL_MANT_DIG >= 113
14652     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfdp+8L, 1.1897314953572317650857593266265995494998e+4932L),
14653     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfd4p+8L, plus_infty, OVERFLOW_EXCEPTION),
14654 # endif
14655 #endif
14656     END_DATA (tgamma)
14657   };
14658
14659 static void
14660 tgamma_test (void)
14661 {
14662   errno = 0;
14663   FUNC(tgamma) (1);
14664   if (errno == ENOSYS)
14665     /* Function not implemented.  */
14666     return;
14667
14668   START (tgamma);
14669   RUN_TEST_LOOP_f_f (tgamma, tgamma_test_data, );
14670   END (tgamma);
14671 }
14672
14673
14674 static const struct test_f_f_data trunc_test_data[] =
14675   {
14676     START_DATA (trunc),
14677     TEST_f_f (trunc, plus_infty, plus_infty),
14678     TEST_f_f (trunc, minus_infty, minus_infty),
14679     TEST_f_f (trunc, qnan_value, qnan_value),
14680
14681     TEST_f_f (trunc, 0, 0),
14682     TEST_f_f (trunc, minus_zero, minus_zero),
14683     TEST_f_f (trunc, 0.1, 0),
14684     TEST_f_f (trunc, 0.25, 0),
14685     TEST_f_f (trunc, 0.625, 0),
14686     TEST_f_f (trunc, -0.1, minus_zero),
14687     TEST_f_f (trunc, -0.25, minus_zero),
14688     TEST_f_f (trunc, -0.625, minus_zero),
14689     TEST_f_f (trunc, 1, 1),
14690     TEST_f_f (trunc, -1, -1),
14691     TEST_f_f (trunc, 1.625, 1),
14692     TEST_f_f (trunc, -1.625, -1),
14693
14694     TEST_f_f (trunc, 1048580.625L, 1048580L),
14695     TEST_f_f (trunc, -1048580.625L, -1048580L),
14696
14697     TEST_f_f (trunc, 8388610.125L, 8388610.0L),
14698     TEST_f_f (trunc, -8388610.125L, -8388610.0L),
14699
14700     TEST_f_f (trunc, 4294967296.625L, 4294967296.0L),
14701     TEST_f_f (trunc, -4294967296.625L, -4294967296.0L),
14702
14703 #ifdef TEST_LDOUBLE
14704     /* The result can only be represented in long double.  */
14705     TEST_f_f (trunc, 4503599627370495.5L, 4503599627370495.0L),
14706     TEST_f_f (trunc, 4503599627370496.25L, 4503599627370496.0L),
14707     TEST_f_f (trunc, 4503599627370496.5L, 4503599627370496.0L),
14708     TEST_f_f (trunc, 4503599627370496.75L, 4503599627370496.0L),
14709     TEST_f_f (trunc, 4503599627370497.5L, 4503599627370497.0L),
14710
14711 # if LDBL_MANT_DIG > 100
14712     TEST_f_f (trunc, 4503599627370494.5000000000001L, 4503599627370494.0L),
14713     TEST_f_f (trunc, 4503599627370495.5000000000001L, 4503599627370495.0L),
14714     TEST_f_f (trunc, 4503599627370496.5000000000001L, 4503599627370496.0L),
14715 # endif
14716
14717     TEST_f_f (trunc, -4503599627370495.5L, -4503599627370495.0L),
14718     TEST_f_f (trunc, -4503599627370496.25L, -4503599627370496.0L),
14719     TEST_f_f (trunc, -4503599627370496.5L, -4503599627370496.0L),
14720     TEST_f_f (trunc, -4503599627370496.75L, -4503599627370496.0L),
14721     TEST_f_f (trunc, -4503599627370497.5L, -4503599627370497.0L),
14722
14723 # if LDBL_MANT_DIG > 100
14724     TEST_f_f (trunc, -4503599627370494.5000000000001L, -4503599627370494.0L),
14725     TEST_f_f (trunc, -4503599627370495.5000000000001L, -4503599627370495.0L),
14726     TEST_f_f (trunc, -4503599627370496.5000000000001L, -4503599627370496.0L),
14727 # endif
14728
14729     TEST_f_f (trunc, 9007199254740991.5L, 9007199254740991.0L),
14730     TEST_f_f (trunc, 9007199254740992.25L, 9007199254740992.0L),
14731     TEST_f_f (trunc, 9007199254740992.5L, 9007199254740992.0L),
14732     TEST_f_f (trunc, 9007199254740992.75L, 9007199254740992.0L),
14733     TEST_f_f (trunc, 9007199254740993.5L, 9007199254740993.0L),
14734
14735 # if LDBL_MANT_DIG > 100
14736     TEST_f_f (trunc, 9007199254740991.0000000000001L, 9007199254740991.0L),
14737     TEST_f_f (trunc, 9007199254740992.0000000000001L, 9007199254740992.0L),
14738     TEST_f_f (trunc, 9007199254740993.0000000000001L, 9007199254740993.0L),
14739     TEST_f_f (trunc, 9007199254740991.5000000000001L, 9007199254740991.0L),
14740     TEST_f_f (trunc, 9007199254740992.5000000000001L, 9007199254740992.0L),
14741     TEST_f_f (trunc, 9007199254740993.5000000000001L, 9007199254740993.0L),
14742 # endif
14743
14744     TEST_f_f (trunc, -9007199254740991.5L, -9007199254740991.0L),
14745     TEST_f_f (trunc, -9007199254740992.25L, -9007199254740992.0L),
14746     TEST_f_f (trunc, -9007199254740992.5L, -9007199254740992.0L),
14747     TEST_f_f (trunc, -9007199254740992.75L, -9007199254740992.0L),
14748     TEST_f_f (trunc, -9007199254740993.5L, -9007199254740993.0L),
14749
14750 # if LDBL_MANT_DIG > 100
14751     TEST_f_f (trunc, -9007199254740991.0000000000001L, -9007199254740991.0L),
14752     TEST_f_f (trunc, -9007199254740992.0000000000001L, -9007199254740992.0L),
14753     TEST_f_f (trunc, -9007199254740993.0000000000001L, -9007199254740993.0L),
14754     TEST_f_f (trunc, -9007199254740991.5000000000001L, -9007199254740991.0L),
14755     TEST_f_f (trunc, -9007199254740992.5000000000001L, -9007199254740992.0L),
14756     TEST_f_f (trunc, -9007199254740993.5000000000001L, -9007199254740993.0L),
14757 # endif
14758
14759     TEST_f_f (trunc, 72057594037927935.5L, 72057594037927935.0L),
14760     TEST_f_f (trunc, 72057594037927936.25L, 72057594037927936.0L),
14761     TEST_f_f (trunc, 72057594037927936.5L, 72057594037927936.0L),
14762     TEST_f_f (trunc, 72057594037927936.75L, 72057594037927936.0L),
14763     TEST_f_f (trunc, 72057594037927937.5L, 72057594037927937.0L),
14764
14765     TEST_f_f (trunc, -72057594037927935.5L, -72057594037927935.0L),
14766     TEST_f_f (trunc, -72057594037927936.25L, -72057594037927936.0L),
14767     TEST_f_f (trunc, -72057594037927936.5L, -72057594037927936.0L),
14768     TEST_f_f (trunc, -72057594037927936.75L, -72057594037927936.0L),
14769     TEST_f_f (trunc, -72057594037927937.5L, -72057594037927937.0L),
14770
14771     TEST_f_f (trunc, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
14772     TEST_f_f (trunc, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
14773     TEST_f_f (trunc, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
14774     TEST_f_f (trunc, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
14775     TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
14776 #endif
14777     END_DATA (trunc)
14778   };
14779
14780 static void
14781 trunc_test (void)
14782 {
14783   START (trunc);
14784   RUN_TEST_LOOP_f_f (trunc, trunc_test_data, );
14785   END (trunc);
14786 }
14787
14788 static const struct test_f_f_data y0_test_data[] =
14789   {
14790     START_DATA (y0),
14791     /* y0 is the Bessel function of the second kind of order 0 */
14792     TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION),
14793     TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION),
14794     TEST_f_f (y0, 0.0, minus_infty),
14795     TEST_f_f (y0, qnan_value, qnan_value),
14796     TEST_f_f (y0, plus_infty, 0),
14797
14798     TEST_f_f (y0, 0.125L, -1.38968062514384052915582277745018693L),
14799     TEST_f_f (y0, 0.75L, -0.137172769385772397522814379396581855L),
14800     TEST_f_f (y0, 1.0, 0.0882569642156769579829267660235151628L),
14801     TEST_f_f (y0, 1.5, 0.382448923797758843955068554978089862L),
14802     TEST_f_f (y0, 2.0, 0.510375672649745119596606592727157873L),
14803     TEST_f_f (y0, 8.0, 0.223521489387566220527323400498620359L),
14804     TEST_f_f (y0, 10.0, 0.0556711672835993914244598774101900481L),
14805
14806     TEST_f_f (y0, 0x1.3ffp+74L, 1.818984347516051243459467456433028748678e-12L),
14807
14808 #ifndef TEST_FLOAT
14809     TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
14810     TEST_f_f (y0, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
14811 #endif
14812
14813 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14814     TEST_f_f (y0, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
14815     TEST_f_f (y0, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
14816 #endif
14817
14818     TEST_f_f (y0, 0x1p-10L, -4.4865150767109739412411806297168793661098L),
14819     TEST_f_f (y0, 0x1p-20L, -8.8992283012125827603076426611387876938160L),
14820     TEST_f_f (y0, 0x1p-30L, -1.3311940304267782826037118027401817264906e+1L),
14821     TEST_f_f (y0, 0x1p-40L, -1.7724652307320814696990854700366226762563e+1L),
14822     TEST_f_f (y0, 0x1p-50L, -2.2137364310373846564919987139743760738155e+1L),
14823     TEST_f_f (y0, 0x1p-60L, -2.6550076313426878432849115782108205929120e+1L),
14824     TEST_f_f (y0, 0x1p-70L, -3.0962788316479910300778244424468159753887e+1L),
14825     TEST_f_f (y0, 0x1p-80L, -3.5375500319532942168707373066828113573541e+1L),
14826     TEST_f_f (y0, 0x1p-90L, -3.9788212322585974036636501709188067393195e+1L),
14827     TEST_f_f (y0, 0x1p-100L, -4.420092432563900590456563035154802121284e+1L),
14828     TEST_f_f (y0, 0x1p-110L, -4.861363632869203777249475899390797503250e+1L),
14829     END_DATA (y0)
14830   };
14831
14832 static void
14833 y0_test (void)
14834 {
14835   FLOAT s, c;
14836   errno = 0;
14837   FUNC (sincos) (0, &s, &c);
14838   if (errno == ENOSYS)
14839     /* Required function not implemented.  */
14840     return;
14841   FUNC(y0) (1);
14842   if (errno == ENOSYS)
14843     /* Function not implemented.  */
14844     return;
14845
14846   START (y0);
14847   RUN_TEST_LOOP_f_f (y0, y0_test_data, );
14848   END (y0);
14849 }
14850
14851
14852 static const struct test_f_f_data y1_test_data[] =
14853   {
14854     START_DATA (y1),
14855     /* y1 is the Bessel function of the second kind of order 1 */
14856     TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION),
14857     TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION),
14858     TEST_f_f (y1, 0.0, minus_infty),
14859     TEST_f_f (y1, plus_infty, 0),
14860     TEST_f_f (y1, qnan_value, qnan_value),
14861
14862     TEST_f_f (y1, 0.125L, -5.19993611253477499595928744876579921L),
14863     TEST_f_f (y1, 0.75L, -1.03759455076928541973767132140642198L),
14864     TEST_f_f (y1, 1.0, -0.781212821300288716547150000047964821L),
14865     TEST_f_f (y1, 1.5, -0.412308626973911295952829820633445323L),
14866     TEST_f_f (y1, 2.0, -0.107032431540937546888370772277476637L),
14867     TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L),
14868     TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L),
14869
14870     TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L),
14871
14872 #ifndef TEST_FLOAT
14873     TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L),
14874     TEST_f_f (y1, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L),
14875 #endif
14876
14877 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14878     TEST_f_f (y1, 0x1p16382L, 1.2193782500509000574176799046642541129387e-2466L),
14879     TEST_f_f (y1, 0x1p16383L, -9.5859502826270374691362975419147645151233e-2467L),
14880 #endif
14881
14882     TEST_f_f (y1, 0x1p-10L, -6.5190099301063115047395187618929589514382e+02L),
14883     TEST_f_f (y1, 0x1p-20L, -6.6754421443450423911167962313100637952285e+05L),
14884     TEST_f_f (y1, 0x1p-30L, -6.8356527557643159612937462812258975438856e+08L),
14885     TEST_f_f (y1, 0x1p-40L, -6.9997084219026594793707805777425993547887e+11L),
14886     TEST_f_f (y1, 0x1p-50L, -7.1677014240283233068755952926181262431559e+14L),
14887     TEST_f_f (y1, 0x1p-60L, -7.3397262582050030662406095795388448059822e+17L),
14888     TEST_f_f (y1, 0x1p-70L, -7.5158796884019231398303842094477769620063e+20L),
14889     TEST_f_f (y1, 0x1p-80L, -7.6962608009235692951863134304745236090943e+23L),
14890     TEST_f_f (y1, 0x1p-90L, -7.8809710601457349582707849528059121757126e+26L),
14891     TEST_f_f (y1, 0x1p-100L, -8.0701143655892325972692837916732540679297e+29L),
14892     TEST_f_f (y1, 0x1p-110L, -8.2637971103633741796037466026734121655600e+32L),
14893     END_DATA (y1)
14894   };
14895
14896 static void
14897 y1_test (void)
14898 {
14899   FLOAT s, c;
14900   errno = 0;
14901   FUNC (sincos) (0, &s, &c);
14902   if (errno == ENOSYS)
14903     /* Required function not implemented.  */
14904     return;
14905   FUNC(y1) (1);
14906   if (errno == ENOSYS)
14907     /* Function not implemented.  */
14908     return;
14909
14910   START (y1);
14911   RUN_TEST_LOOP_f_f (y1, y1_test_data, );
14912   END (y1);
14913 }
14914
14915
14916 static const struct test_if_f_data yn_test_data[] =
14917   {
14918     START_DATA (yn),
14919     /* yn is the Bessel function of the second kind of order n */
14920     /* yn (0, x) == y0 (x)  */
14921     TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION),
14922     TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION),
14923     TEST_if_f (yn, 0, 0.0, minus_infty),
14924     TEST_if_f (yn, 0, qnan_value, qnan_value),
14925     TEST_if_f (yn, 0, plus_infty, 0),
14926
14927     TEST_if_f (yn, 0, 0.125L, -1.38968062514384052915582277745018693L),
14928     TEST_if_f (yn, 0, 0.75L, -0.137172769385772397522814379396581855L),
14929     TEST_if_f (yn, 0, 1.0, 0.0882569642156769579829267660235151628L),
14930     TEST_if_f (yn, 0, 1.5, 0.382448923797758843955068554978089862L),
14931     TEST_if_f (yn, 0, 2.0, 0.510375672649745119596606592727157873L),
14932     TEST_if_f (yn, 0, 8.0, 0.223521489387566220527323400498620359L),
14933     TEST_if_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L),
14934
14935     /* yn (1, x) == y1 (x)  */
14936     TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION),
14937     TEST_if_f (yn, 1, 0.0, minus_infty),
14938     TEST_if_f (yn, 1, plus_infty, 0),
14939     TEST_if_f (yn, 1, qnan_value, qnan_value),
14940
14941     TEST_if_f (yn, 1, 0.125L, -5.19993611253477499595928744876579921L),
14942     TEST_if_f (yn, 1, 0.75L, -1.03759455076928541973767132140642198L),
14943     TEST_if_f (yn, 1, 1.0, -0.781212821300288716547150000047964821L),
14944     TEST_if_f (yn, 1, 1.5, -0.412308626973911295952829820633445323L),
14945     TEST_if_f (yn, 1, 2.0, -0.107032431540937546888370772277476637L),
14946     TEST_if_f (yn, 1, 8.0, -0.158060461731247494255555266187483550L),
14947     TEST_if_f (yn, 1, 10.0, 0.249015424206953883923283474663222803L),
14948
14949     /* yn (3, x)  */
14950     TEST_if_f (yn, 3, plus_infty, 0),
14951     TEST_if_f (yn, 3, qnan_value, qnan_value),
14952
14953     TEST_if_f (yn, 3, 0.125L, -2612.69757350066712600220955744091741L),
14954     TEST_if_f (yn, 3, 0.75L, -12.9877176234475433186319774484809207L),
14955     TEST_if_f (yn, 3, 1.0, -5.82151760596472884776175706442981440L),
14956     TEST_if_f (yn, 3, 2.0, -1.12778377684042778608158395773179238L),
14957     TEST_if_f (yn, 3, 10.0, -0.251362657183837329779204747654240998L),
14958
14959     /* yn (10, x)  */
14960     TEST_if_f (yn, 10, plus_infty, 0),
14961     TEST_if_f (yn, 10, qnan_value, qnan_value),
14962
14963     TEST_if_f (yn, 10, 0.125L, -127057845771019398.252538486899753195L),
14964     TEST_if_f (yn, 10, 0.75L, -2133501638.90573424452445412893839236L),
14965     TEST_if_f (yn, 10, 1.0, -121618014.278689189288130426667971145L),
14966     TEST_if_f (yn, 10, 2.0, -129184.542208039282635913145923304214L),
14967     TEST_if_f (yn, 10, 10.0, -0.359814152183402722051986577343560609L),
14968
14969     /* Check whether yn returns correct value for LDBL_MIN, DBL_MIN,
14970        and FLT_MIN.  See Bug 14173.  */
14971     TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION),
14972
14973     TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14974     END_DATA (yn)
14975   };
14976
14977 static void
14978 yn_test (void)
14979 {
14980   FLOAT s, c;
14981   errno = 0;
14982   FUNC (sincos) (0, &s, &c);
14983   if (errno == ENOSYS)
14984     /* Required function not implemented.  */
14985     return;
14986   FUNC(yn) (1, 1);
14987   if (errno == ENOSYS)
14988     /* Function not implemented.  */
14989     return;
14990
14991   START (yn);
14992   RUN_TEST_LOOP_if_f (yn, yn_test_data, );
14993   END (yn);
14994 }
14995
14996
14997 static const struct test_f_f_data significand_test_data[] =
14998   {
14999     START_DATA (significand),
15000     /* significand returns the mantissa of the exponential representation.  */
15001     /* TODO: missing +/-Inf as well as qNaN tests.  */
15002     TEST_f_f (significand, 4.0, 1.0),
15003     TEST_f_f (significand, 6.0, 1.5),
15004     TEST_f_f (significand, 8.0, 1.0),
15005     END_DATA (significand)
15006   };
15007
15008 static void
15009 significand_test (void)
15010 {
15011   START (significand);
15012   RUN_TEST_LOOP_f_f (significand, significand_test_data, );
15013   END (significand);
15014 }
15015
15016
15017 static void
15018 initialize (void)
15019 {
15020   fpstack_test ("start *init*");
15021
15022   /* Clear all exceptions.  From now on we must not get random exceptions.  */
15023   feclearexcept (FE_ALL_EXCEPT);
15024   errno = 0;
15025
15026   /* Test to make sure we start correctly.  */
15027   fpstack_test ("end *init*");
15028 }
15029
15030 /* Definitions of arguments for argp functions.  */
15031 static const struct argp_option options[] =
15032 {
15033   { "verbose", 'v', "NUMBER", 0, "Level of verbosity (0..3)"},
15034   { "ulps-file", 'u', NULL, 0, "Output ulps to file ULPs"},
15035   { "no-max-error", 'f', NULL, 0,
15036     "Don't output maximal errors of functions"},
15037   { "no-points", 'p', NULL, 0,
15038     "Don't output results of functions invocations"},
15039   { "ignore-max-ulp", 'i', "yes/no", 0,
15040     "Ignore given maximal errors"},
15041   { "output-dir", 'o', "DIR", 0,
15042     "Directory where generated files will be placed"},
15043   { NULL, 0, NULL, 0, NULL }
15044 };
15045
15046 /* Short description of program.  */
15047 static const char doc[] = "Math test suite: " TEST_MSG ;
15048
15049 /* Prototype for option handler.  */
15050 static error_t parse_opt (int key, char *arg, struct argp_state *state);
15051
15052 /* Data structure to communicate with argp functions.  */
15053 static struct argp argp =
15054 {
15055   options, parse_opt, NULL, doc,
15056 };
15057
15058
15059 /* Handle program arguments.  */
15060 static error_t
15061 parse_opt (int key, char *arg, struct argp_state *state)
15062 {
15063   switch (key)
15064     {
15065     case 'f':
15066       output_max_error = 0;
15067       break;
15068     case 'i':
15069       if (strcmp (arg, "yes") == 0)
15070         ignore_max_ulp = 1;
15071       else if (strcmp (arg, "no") == 0)
15072         ignore_max_ulp = 0;
15073       break;
15074     case 'o':
15075       output_dir = (char *) malloc (strlen (arg) + 1);
15076       if (output_dir != NULL)
15077         strcpy (output_dir, arg);
15078       else
15079         return errno;
15080       break;
15081     case 'p':
15082       output_points = 0;
15083       break;
15084     case 'u':
15085       output_ulps = 1;
15086       break;
15087     case 'v':
15088       if (optarg)
15089         verbose = (unsigned int) strtoul (optarg, NULL, 0);
15090       else
15091         verbose = 3;
15092       break;
15093     default:
15094       return ARGP_ERR_UNKNOWN;
15095     }
15096   return 0;
15097 }
15098
15099 #if 0
15100 /* function to check our ulp calculation.  */
15101 void
15102 check_ulp (void)
15103 {
15104   int i;
15105
15106   FLOAT u, diff, ulp;
15107   /* This gives one ulp.  */
15108   u = FUNC(nextafter) (10, 20);
15109   check_equal (10.0, u, 1, &diff, &ulp);
15110   printf ("One ulp: % .4" PRINTF_NEXPR "\n", ulp);
15111
15112   /* This gives one more ulp.  */
15113   u = FUNC(nextafter) (u, 20);
15114   check_equal (10.0, u, 2, &diff, &ulp);
15115   printf ("two ulp: % .4" PRINTF_NEXPR "\n", ulp);
15116
15117   /* And now calculate 100 ulp.  */
15118   for (i = 2; i < 100; i++)
15119     u = FUNC(nextafter) (u, 20);
15120   check_equal (10.0, u, 100, &diff, &ulp);
15121   printf ("100 ulp: % .4" PRINTF_NEXPR "\n", ulp);
15122 }
15123 #endif
15124
15125 int
15126 main (int argc, char **argv)
15127 {
15128
15129   int remaining;
15130   char *ulps_file_path;
15131   size_t dir_len = 0;
15132
15133   verbose = 1;
15134   output_ulps = 0;
15135   output_max_error = 1;
15136   output_points = 1;
15137   output_dir = NULL;
15138   /* XXX set to 0 for releases.  */
15139   ignore_max_ulp = 0;
15140
15141   /* Parse and process arguments.  */
15142   argp_parse (&argp, argc, argv, 0, &remaining, NULL);
15143
15144   if (remaining != argc)
15145     {
15146       fprintf (stderr, "wrong number of arguments");
15147       argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
15148       exit (EXIT_FAILURE);
15149     }
15150
15151   if (output_ulps)
15152     {
15153       if (output_dir != NULL)
15154         dir_len = strlen (output_dir);
15155       ulps_file_path = (char *) malloc (dir_len + strlen (ulps_file_name) + 1);
15156       if (ulps_file_path == NULL)
15157         {
15158           perror ("can't allocate path for `ULPs' file: ");
15159           exit (1);
15160         }
15161       sprintf (ulps_file_path, "%s%s", output_dir == NULL ? "" : output_dir, ulps_file_name);
15162       ulps_file = fopen (ulps_file_path, "a");
15163       if (ulps_file == NULL)
15164         {
15165           perror ("can't open file `ULPs' for writing: ");
15166           exit (1);
15167         }
15168     }
15169
15170
15171   initialize ();
15172   printf (TEST_MSG);
15173
15174 #if 0
15175   check_ulp ();
15176 #endif
15177
15178   /* Keep the tests a wee bit ordered (according to ISO C99).  */
15179   /* Classification macros:  */
15180   finite_test ();
15181   fpclassify_test ();
15182   isfinite_test ();
15183   isinf_test ();
15184   isnan_test ();
15185   isnormal_test ();
15186   issignaling_test ();
15187   signbit_test ();
15188
15189   /* Trigonometric functions:  */
15190   acos_test ();
15191   acos_test_tonearest ();
15192   acos_test_towardzero ();
15193   acos_test_downward ();
15194   acos_test_upward ();
15195   asin_test ();
15196   asin_test_tonearest ();
15197   asin_test_towardzero ();
15198   asin_test_downward ();
15199   asin_test_upward ();
15200   atan_test ();
15201   atan2_test ();
15202   cos_test ();
15203   cos_test_tonearest ();
15204   cos_test_towardzero ();
15205   cos_test_downward ();
15206   cos_test_upward ();
15207   sin_test ();
15208   sin_test_tonearest ();
15209   sin_test_towardzero ();
15210   sin_test_downward ();
15211   sin_test_upward ();
15212   sincos_test ();
15213   tan_test ();
15214   tan_test_tonearest ();
15215   tan_test_towardzero ();
15216   tan_test_downward ();
15217   tan_test_upward ();
15218
15219   /* Hyperbolic functions:  */
15220   acosh_test ();
15221   asinh_test ();
15222   atanh_test ();
15223   cosh_test ();
15224   cosh_test_tonearest ();
15225   cosh_test_towardzero ();
15226   cosh_test_downward ();
15227   cosh_test_upward ();
15228   sinh_test ();
15229   sinh_test_tonearest ();
15230   sinh_test_towardzero ();
15231   sinh_test_downward ();
15232   sinh_test_upward ();
15233   tanh_test ();
15234
15235   /* Exponential and logarithmic functions:  */
15236   exp_test ();
15237   exp_test_tonearest ();
15238   exp_test_towardzero ();
15239   exp_test_downward ();
15240   exp_test_upward ();
15241   exp10_test ();
15242   exp2_test ();
15243   expm1_test ();
15244   frexp_test ();
15245   ldexp_test ();
15246   log_test ();
15247   log10_test ();
15248   log1p_test ();
15249   log2_test ();
15250   logb_test ();
15251   logb_test_downward ();
15252   modf_test ();
15253   ilogb_test ();
15254   scalb_test ();
15255   scalbn_test ();
15256   scalbln_test ();
15257   significand_test ();
15258
15259   /* Power and absolute value functions:  */
15260   cbrt_test ();
15261   fabs_test ();
15262   hypot_test ();
15263   pow_test ();
15264   pow_test_tonearest ();
15265   pow_test_towardzero ();
15266   pow_test_downward ();
15267   pow_test_upward ();
15268   sqrt_test ();
15269
15270   /* Error and gamma functions:  */
15271   erf_test ();
15272   erfc_test ();
15273   gamma_test ();
15274   lgamma_test ();
15275   tgamma_test ();
15276
15277   /* Nearest integer functions:  */
15278   ceil_test ();
15279   floor_test ();
15280   nearbyint_test ();
15281   rint_test ();
15282   rint_test_tonearest ();
15283   rint_test_towardzero ();
15284   rint_test_downward ();
15285   rint_test_upward ();
15286   lrint_test ();
15287   lrint_test_tonearest ();
15288   lrint_test_towardzero ();
15289   lrint_test_downward ();
15290   lrint_test_upward ();
15291   llrint_test ();
15292   llrint_test_tonearest ();
15293   llrint_test_towardzero ();
15294   llrint_test_downward ();
15295   llrint_test_upward ();
15296   round_test ();
15297   lround_test ();
15298   llround_test ();
15299   trunc_test ();
15300
15301   /* Remainder functions:  */
15302   fmod_test ();
15303   remainder_test ();
15304   remquo_test ();
15305
15306   /* Manipulation functions:  */
15307   copysign_test ();
15308   nextafter_test ();
15309   nexttoward_test ();
15310
15311   /* maximum, minimum and positive difference functions */
15312   fdim_test ();
15313   fmax_test ();
15314   fmin_test ();
15315
15316   /* Multiply and add:  */
15317   fma_test ();
15318   fma_test_towardzero ();
15319   fma_test_downward ();
15320   fma_test_upward ();
15321
15322   /* Comparison macros:  */
15323   isgreater_test ();
15324   isgreaterequal_test ();
15325   isless_test ();
15326   islessequal_test ();
15327   islessgreater_test ();
15328   isunordered_test ();
15329
15330   /* Complex functions:  */
15331   cabs_test ();
15332   cacos_test ();
15333   cacosh_test ();
15334   carg_test ();
15335   casin_test ();
15336   casinh_test ();
15337   catan_test ();
15338   catanh_test ();
15339   ccos_test ();
15340   ccosh_test ();
15341   cexp_test ();
15342   cimag_test ();
15343   clog10_test ();
15344   clog_test ();
15345   conj_test ();
15346   cpow_test ();
15347   cproj_test ();
15348   creal_test ();
15349   csin_test ();
15350   csinh_test ();
15351   csqrt_test ();
15352   ctan_test ();
15353   ctan_test_tonearest ();
15354   ctan_test_towardzero ();
15355   ctan_test_downward ();
15356   ctan_test_upward ();
15357   ctanh_test ();
15358   ctanh_test_tonearest ();
15359   ctanh_test_towardzero ();
15360   ctanh_test_downward ();
15361   ctanh_test_upward ();
15362
15363   /* Bessel functions:  */
15364   j0_test ();
15365   j1_test ();
15366   jn_test ();
15367   y0_test ();
15368   y1_test ();
15369   yn_test ();
15370
15371   if (output_ulps)
15372     fclose (ulps_file);
15373
15374   printf ("\nTest suite completed:\n");
15375   printf ("  %d test cases plus %d tests for exception flags and\n"
15376           "    %d tests for errno executed.\n",
15377           noTests, noExcTests, noErrnoTests);
15378   if (noErrors)
15379     {
15380       printf ("  %d errors occurred.\n", noErrors);
15381       return 1;
15382     }
15383   printf ("  All tests passed successfully.\n");
15384
15385   return 0;
15386 }
15387
15388 /*
15389  * Local Variables:
15390  * mode:c
15391  * End:
15392  */