c22c4e3554dd934c2d9360ef2b2dd51ddef5dc34
[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_fff_f_data
894 {
895   const char *test_name;
896   FLOAT arg1, arg2, arg3;
897   FLOAT expected;
898   FLOAT max_ulp;
899   int exceptions;
900 };
901 struct test_c_c_data
902 {
903   const char *test_name;
904   FLOAT argr, argc;
905   FLOAT expr, expc;
906   __complex__ FLOAT max_ulp;
907   int exceptions;
908 };
909
910 /* Set the rounding mode, or restore the saved value.  */
911 #define IF_ROUND_INIT_  /* Empty.  */
912 #define IF_ROUND_INIT_FE_DOWNWARD               \
913   int save_round_mode = fegetround ();          \
914   if (fesetround (FE_DOWNWARD) == 0)
915 #define IF_ROUND_INIT_FE_TONEAREST              \
916   int save_round_mode = fegetround ();          \
917   if (fesetround (FE_TONEAREST) == 0)
918 #define IF_ROUND_INIT_FE_TOWARDZERO             \
919   int save_round_mode = fegetround ();          \
920   if (fesetround (FE_TOWARDZERO) == 0)
921 #define IF_ROUND_INIT_FE_UPWARD                 \
922   int save_round_mode = fegetround ();          \
923   if (fesetround (FE_UPWARD) == 0)
924 #define ROUND_RESTORE_  /* Empty.  */
925 #define ROUND_RESTORE_FE_DOWNWARD               \
926   fesetround (save_round_mode)
927 #define ROUND_RESTORE_FE_TONEAREST              \
928   fesetround (save_round_mode)
929 #define ROUND_RESTORE_FE_TOWARDZERO             \
930   fesetround (save_round_mode)
931 #define ROUND_RESTORE_FE_UPWARD                 \
932   fesetround (save_round_mode)
933
934 /* Run an individual test, including any required setup and checking
935    of results, or loop over all tests in an array.  */
936 #define RUN_TEST_f_f(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
937                      MAX_ULP, EXCEPTIONS)                       \
938   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,     \
939                MAX_ULP, EXCEPTIONS)
940 #define RUN_TEST_LOOP_f_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
941   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
942     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
943       RUN_TEST_f_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,    \
944                     (ARRAY)[i].expected, (ARRAY)[i].max_ulp,            \
945                     (ARRAY)[i].exceptions);                             \
946   ROUND_RESTORE_ ## ROUNDING_MODE
947 #define RUN_TEST_2_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
948                      MAX_ULP, EXCEPTIONS)                               \
949   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2), EXPECTED,      \
950                MAX_ULP, EXCEPTIONS)
951 #define RUN_TEST_LOOP_2_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
952   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
953     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
954       RUN_TEST_2_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1,   \
955                     (ARRAY)[i].arg2, (ARRAY)[i].expected,               \
956                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
957   ROUND_RESTORE_ ## ROUNDING_MODE
958 #define RUN_TEST_ff_f RUN_TEST_2_f
959 #define RUN_TEST_LOOP_ff_f RUN_TEST_LOOP_2_f
960 #define RUN_TEST_fi_f RUN_TEST_2_f
961 #define RUN_TEST_fl_f RUN_TEST_2_f
962 #define RUN_TEST_if_f RUN_TEST_2_f
963 #define RUN_TEST_fff_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, ARG3,  \
964                        EXPECTED, MAX_ULP, EXCEPTIONS)           \
965   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2, ARG3),  \
966                EXPECTED, MAX_ULP, EXCEPTIONS)
967 #define RUN_TEST_LOOP_fff_f(FUNC_NAME, ARRAY, ROUNDING_MODE)            \
968   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
969     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
970       RUN_TEST_fff_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1, \
971                       (ARRAY)[i].arg2, (ARRAY)[i].arg3,                 \
972                       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,          \
973                       (ARRAY)[i].exceptions);                           \
974   ROUND_RESTORE_ ## ROUNDING_MODE
975 #define RUN_TEST_c_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
976                      MAX_ULP, EXCEPTIONS)                               \
977   check_float (TEST_NAME,                                               \
978                FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1, ARG2)),           \
979                EXPECTED, MAX_ULP, EXCEPTIONS)
980 #define RUN_TEST_f_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,              \
981                       MAX_ULP, EXCEPTIONS,                              \
982                       EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,    \
983                       EXTRA_EXPECTED, EXTRA_ULP)                        \
984   do                                                                    \
985     {                                                                   \
986       (EXTRA_VAR) = (EXTRA_INIT);                                       \
987       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,         \
988                    MAX_ULP, EXCEPTIONS);                                \
989       if (EXTRA_TEST)                                                   \
990         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
991                    EXTRA_ULP, 0);                                       \
992     }                                                                   \
993   while (0)
994 #define RUN_TEST_fF_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
995                        MAX_ULP, EXCEPTIONS,                             \
996                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
997                        EXTRA_EXPECTED, EXTRA_ULP)                       \
998   do                                                                    \
999     {                                                                   \
1000       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1001       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1002                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1003       if (EXTRA_TEST)                                                   \
1004         check_float (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,             \
1005                      EXTRA_ULP, 0);                                     \
1006     }                                                                   \
1007   while (0)
1008 #define RUN_TEST_fI_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
1009                        MAX_ULP, EXCEPTIONS,                             \
1010                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
1011                        EXTRA_EXPECTED, EXTRA_ULP)                       \
1012   do                                                                    \
1013     {                                                                   \
1014       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1015       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1016                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1017       if (EXTRA_TEST)                                                   \
1018         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1019                    EXTRA_ULP, 0);                                       \
1020     }                                                                   \
1021   while (0)
1022 #define RUN_TEST_ffI_f1(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,     \
1023                         MAX_ULP, EXCEPTIONS,                            \
1024                         EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,  \
1025                         EXTRA_EXPECTED, EXTRA_ULP)                      \
1026   do                                                                    \
1027     {                                                                   \
1028       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1029       check_float (TEST_NAME,                                           \
1030                    FUNC (FUNC_NAME) (ARG1, ARG2, &(EXTRA_VAR)),         \
1031                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1032       if (EXTRA_TEST)                                                   \
1033         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1034                    EXTRA_ULP, 0);                                       \
1035     }                                                                   \
1036   while (0)
1037 #define RUN_TEST_c_c(TEST_NAME, FUNC_NAME, ARGR, ARGC, EXPR, EXPC,      \
1038                      MAX_ULP, EXCEPTIONS)                               \
1039   check_complex (TEST_NAME,                                             \
1040                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARGR, ARGC)),         \
1041                  BUILD_COMPLEX (EXPR, EXPC),                            \
1042                  MAX_ULP, EXCEPTIONS)
1043 #define RUN_TEST_LOOP_c_c(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1044   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1045     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1046       RUN_TEST_c_c ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].argr,   \
1047                     (ARRAY)[i].argc, (ARRAY)[i].expr, (ARRAY)[i].expc,  \
1048                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1049   ROUND_RESTORE_ ## ROUNDING_MODE
1050 #define RUN_TEST_cc_c(TEST_NAME, FUNC_NAME, ARG1R, ARG1C, ARG2R, ARG2C, \
1051                       EXPR, EXPC, MAX_ULP, EXCEPTIONS)                  \
1052   check_complex (TEST_NAME,                                             \
1053                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1R, ARG1C),        \
1054                                    BUILD_COMPLEX (ARG2R, ARG2C)),       \
1055                  BUILD_COMPLEX (EXPR, EXPC),                            \
1056                  MAX_ULP, EXCEPTIONS)
1057 #define RUN_TEST_f_i(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1058                      MAX_ULP, EXCEPTIONS)                       \
1059   check_int (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,       \
1060              MAX_ULP, EXCEPTIONS)
1061 #define RUN_TEST_f_i_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1062                         MAX_ULP, EXCEPTIONS)                    \
1063   check_int (TEST_NAME, FUNC_NAME (ARG), EXPECTED,              \
1064              MAX_ULP, EXCEPTIONS)
1065 #define RUN_TEST_ff_i_tg(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,    \
1066                          MAX_ULP, EXCEPTIONS)                           \
1067   check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED,               \
1068              MAX_ULP, EXCEPTIONS)
1069 #define RUN_TEST_f_b(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1070                      MAX_ULP, EXCEPTIONS)                       \
1071   check_bool (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1072               MAX_ULP, EXCEPTIONS)
1073 #define RUN_TEST_f_b_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1074                         MAX_ULP, EXCEPTIONS)                    \
1075   check_bool (TEST_NAME, FUNC_NAME (ARG), EXPECTED,             \
1076               MAX_ULP, EXCEPTIONS)
1077 #define RUN_TEST_f_l(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1078                      MAX_ULP, EXCEPTIONS)                       \
1079   check_long (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1080               MAX_ULP, EXCEPTIONS)
1081 #define RUN_TEST_f_L(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1082                      MAX_ULP, EXCEPTIONS)                       \
1083   check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,  \
1084                   MAX_ULP, EXCEPTIONS)
1085 #define RUN_TEST_sincos(ARG, TEST_NAME_SIN, SIN_RES_VAR, EXPECTED_SIN,  \
1086                         MAX_ULP_SIN, TEST_NAME_COS, COS_RES_VAR,        \
1087                         EXPECTED_COS, MAX_ULP_COS, EXCEPTIONS)          \
1088   do                                                                    \
1089     {                                                                   \
1090       FUNC (sincos) (ARG, &(SIN_RES_VAR), &(COS_RES_VAR));              \
1091       check_float (TEST_NAME_SIN, SIN_RES_VAR,                          \
1092                    EXPECTED_SIN, MAX_ULP_SIN, EXCEPTIONS);              \
1093       check_float (TEST_NAME_COS, COS_RES_VAR,                          \
1094                    EXPECTED_COS, MAX_ULP_COS, 0);                       \
1095     }                                                                   \
1096   while (0)
1097
1098
1099
1100 /* This is to prevent messages from the SVID libm emulation.  */
1101 int
1102 matherr (struct exception *x __attribute__ ((unused)))
1103 {
1104   return 1;
1105 }
1106
1107
1108 /****************************************************************************
1109   Tests for single functions of libm.
1110   Please keep them alphabetically sorted!
1111 ****************************************************************************/
1112
1113 static const struct test_f_f_data acos_test_data[] =
1114   {
1115     START_DATA (acos),
1116     TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION),
1117     TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION),
1118     TEST_f_f (acos, qnan_value, qnan_value),
1119
1120     /* |x| > 1: */
1121     TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION),
1122     TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION),
1123     TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION),
1124     TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION),
1125
1126     TEST_f_f (acos, 0, M_PI_2l),
1127     TEST_f_f (acos, minus_zero, M_PI_2l),
1128     TEST_f_f (acos, 1, 0),
1129     TEST_f_f (acos, -1, M_PIl),
1130     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1131     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1132     TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L),
1133     TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L),
1134     TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L),
1135     TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L),
1136     TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L),
1137 #ifndef TEST_FLOAT
1138     TEST_f_f (acos, 0x0.ffffffff8p0L, 1.5258789062648029736620564947844627548516e-5L),
1139     TEST_f_f (acos, -0x0.ffffffff8p0L, 3.1415773948007305904329067627145550395696L),
1140     TEST_f_f (acos, 0x0.ffffffffffffp0L, 8.4293697021788088529885473244391795127130e-8L),
1141     TEST_f_f (acos, -0x0.ffffffffffffp0L, 3.1415925692960962166745548533940296398054L),
1142 #endif
1143 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1144     TEST_f_f (acos, 0x0.ffffffffffffffffp0L, 3.2927225399135962333718255320079907245059e-10L),
1145     TEST_f_f (acos, -0x0.ffffffffffffffffp0L, 3.1415926532605209844712837599423203309964L),
1146 #endif
1147     END_DATA (acos)
1148   };
1149
1150 static void
1151 acos_test (void)
1152 {
1153   errno = 0;
1154   FUNC(acos) (0);
1155   if (errno == ENOSYS)
1156     /* Function not implemented.  */
1157     return;
1158
1159   START (acos);
1160   RUN_TEST_LOOP_f_f (acos, acos_test_data, );
1161   END (acos);
1162 }
1163
1164
1165 static const struct test_f_f_data acos_tonearest_test_data[] =
1166   {
1167     START_DATA (acos_tonearest),
1168     TEST_f_f (acos, 0, M_PI_2l),
1169     TEST_f_f (acos, minus_zero, M_PI_2l),
1170     TEST_f_f (acos, 1, 0),
1171     TEST_f_f (acos, -1, M_PIl),
1172     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1173     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1174     END_DATA (acos_tonearest)
1175   };
1176
1177 static void
1178 acos_test_tonearest (void)
1179 {
1180   errno = 0;
1181   FUNC(acos) (0);
1182   if (errno == ENOSYS)
1183     /* Function not implemented.  */
1184     return;
1185
1186   START (acos_tonearest);
1187   RUN_TEST_LOOP_f_f (acos, acos_tonearest_test_data, FE_TONEAREST);
1188   END (acos_tonearest);
1189 }
1190
1191
1192 static const struct test_f_f_data acos_towardzero_test_data[] =
1193   {
1194     START_DATA (acos_towardzero),
1195     TEST_f_f (acos, 0, M_PI_2l),
1196     TEST_f_f (acos, minus_zero, M_PI_2l),
1197     TEST_f_f (acos, 1, 0),
1198     TEST_f_f (acos, -1, M_PIl),
1199     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1200     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1201     END_DATA (acos_towardzero)
1202   };
1203
1204 static void
1205 acos_test_towardzero (void)
1206 {
1207   errno = 0;
1208   FUNC(acos) (0);
1209   if (errno == ENOSYS)
1210     /* Function not implemented.  */
1211     return;
1212
1213   START (acos_towardzero);
1214   RUN_TEST_LOOP_f_f (acos, acos_towardzero_test_data, FE_TOWARDZERO);
1215   END (acos_towardzero);
1216 }
1217
1218
1219 static const struct test_f_f_data acos_downward_test_data[] =
1220   {
1221     START_DATA (acos_downward),
1222     TEST_f_f (acos, 0, M_PI_2l),
1223     TEST_f_f (acos, minus_zero, M_PI_2l),
1224     TEST_f_f (acos, 1, 0),
1225     TEST_f_f (acos, -1, M_PIl),
1226     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1227     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1228     END_DATA (acos_downward)
1229   };
1230
1231 static void
1232 acos_test_downward (void)
1233 {
1234   errno = 0;
1235   FUNC(acos) (0);
1236   if (errno == ENOSYS)
1237     /* Function not implemented.  */
1238     return;
1239
1240   START (acos_downward);
1241   RUN_TEST_LOOP_f_f (acos, acos_downward_test_data, FE_DOWNWARD);
1242   END (acos_downward);
1243 }
1244
1245
1246 static const struct test_f_f_data acos_upward_test_data[] =
1247   {
1248     START_DATA (acos_upward),
1249     TEST_f_f (acos, 0, M_PI_2l),
1250     TEST_f_f (acos, minus_zero, M_PI_2l),
1251     TEST_f_f (acos, 1, 0),
1252     TEST_f_f (acos, -1, M_PIl),
1253     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1254     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1255     END_DATA (acos_upward)
1256   };
1257
1258 static void
1259 acos_test_upward (void)
1260 {
1261   errno = 0;
1262   FUNC(acos) (0);
1263   if (errno == ENOSYS)
1264     /* Function not implemented.  */
1265     return;
1266
1267   START (acos_upward);
1268   RUN_TEST_LOOP_f_f (acos, acos_upward_test_data, FE_UPWARD);
1269   END (acos_upward);
1270 }
1271
1272 static const struct test_f_f_data acosh_test_data[] =
1273   {
1274     START_DATA (acosh),
1275     TEST_f_f (acosh, plus_infty, plus_infty),
1276     TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION),
1277     TEST_f_f (acosh, qnan_value, qnan_value),
1278
1279     /* x < 1:  */
1280     TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION),
1281     TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION),
1282
1283     TEST_f_f (acosh, 1, 0),
1284     TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L),
1285     END_DATA (acosh)
1286   };
1287
1288 static void
1289 acosh_test (void)
1290 {
1291   errno = 0;
1292   FUNC(acosh) (7);
1293   if (errno == ENOSYS)
1294     /* Function not implemented.  */
1295     return;
1296
1297   START (acosh);
1298   RUN_TEST_LOOP_f_f (acosh, acosh_test_data, );
1299   END (acosh);
1300 }
1301
1302 static const struct test_f_f_data asin_test_data[] =
1303   {
1304     START_DATA (asin),
1305     TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION),
1306     TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION),
1307     TEST_f_f (asin, qnan_value, qnan_value),
1308
1309     /* asin x == qNaN plus invalid exception for |x| > 1.  */
1310     TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION),
1311     TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION),
1312     TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION),
1313     TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION),
1314
1315     TEST_f_f (asin, 0, 0),
1316     TEST_f_f (asin, minus_zero, minus_zero),
1317     TEST_f_f (asin, 0.5, M_PI_6l),
1318     TEST_f_f (asin, -0.5, -M_PI_6l),
1319     TEST_f_f (asin, 1.0, M_PI_2l),
1320     TEST_f_f (asin, -1.0, -M_PI_2l),
1321     TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L),
1322     TEST_f_f (asin, 0x0.ffffffp0L, 1.5704510598101804156437184421571127056013L),
1323     TEST_f_f (asin, -0x0.ffffffp0L, -1.5704510598101804156437184421571127056013L),
1324 #ifndef TEST_FLOAT
1325     TEST_f_f (asin, 0x0.ffffffff8p0L, 1.5707810680058339712015850710748035974710L),
1326     TEST_f_f (asin, -0x0.ffffffff8p0L, -1.5707810680058339712015850710748035974710L),
1327     TEST_f_f (asin, 0x0.ffffffffffffp0L, 1.5707962425011995974432331617542781977068L),
1328     TEST_f_f (asin, -0x0.ffffffffffffp0L, -1.5707962425011995974432331617542781977068L),
1329 #endif
1330 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1331     TEST_f_f (asin, 0x0.ffffffffffffffffp0L, 1.5707963264656243652399620683025688888978L),
1332     TEST_f_f (asin, -0x0.ffffffffffffffffp0L, -1.5707963264656243652399620683025688888978L),
1333 #endif
1334     END_DATA (asin)
1335   };
1336
1337 static void
1338 asin_test (void)
1339 {
1340   errno = 0;
1341   FUNC(asin) (0);
1342   if (errno == ENOSYS)
1343     /* Function not implemented.  */
1344     return;
1345
1346   START (asin);
1347   RUN_TEST_LOOP_f_f (asin, asin_test_data, );
1348   END (asin);
1349 }
1350
1351
1352 static const struct test_f_f_data asin_tonearest_test_data[] =
1353   {
1354     START_DATA (asin_tonearest),
1355     TEST_f_f (asin, 0, 0),
1356     TEST_f_f (asin, minus_zero, minus_zero),
1357     TEST_f_f (asin, 0.5, M_PI_6l),
1358     TEST_f_f (asin, -0.5, -M_PI_6l),
1359     TEST_f_f (asin, 1.0, M_PI_2l),
1360     TEST_f_f (asin, -1.0, -M_PI_2l),
1361     END_DATA (asin_tonearest)
1362   };
1363
1364 static void
1365 asin_test_tonearest (void)
1366 {
1367   errno = 0;
1368   FUNC(asin) (0);
1369   if (errno == ENOSYS)
1370     /* Function not implemented.  */
1371     return;
1372
1373   START (asin_tonearest);
1374   RUN_TEST_LOOP_f_f (asin, asin_tonearest_test_data, FE_TONEAREST);
1375   END (asin_tonearest);
1376 }
1377
1378
1379 static const struct test_f_f_data asin_towardzero_test_data[] =
1380   {
1381     START_DATA (asin_towardzero),
1382     TEST_f_f (asin, 0, 0),
1383     TEST_f_f (asin, minus_zero, minus_zero),
1384     TEST_f_f (asin, 0.5, M_PI_6l),
1385     TEST_f_f (asin, -0.5, -M_PI_6l),
1386     TEST_f_f (asin, 1.0, M_PI_2l),
1387     TEST_f_f (asin, -1.0, -M_PI_2l),
1388     END_DATA (asin_towardzero)
1389   };
1390
1391 static void
1392 asin_test_towardzero (void)
1393 {
1394   errno = 0;
1395   FUNC(asin) (0);
1396   if (errno == ENOSYS)
1397     /* Function not implemented.  */
1398     return;
1399
1400   START (asin_towardzero);
1401   RUN_TEST_LOOP_f_f (asin, asin_towardzero_test_data, FE_TOWARDZERO);
1402   END (asin_towardzero);
1403 }
1404
1405
1406 static const struct test_f_f_data asin_downward_test_data[] =
1407   {
1408     START_DATA (asin_downward),
1409     TEST_f_f (asin, 0, 0),
1410     TEST_f_f (asin, minus_zero, minus_zero),
1411     TEST_f_f (asin, 0.5, M_PI_6l),
1412     TEST_f_f (asin, -0.5, -M_PI_6l),
1413     TEST_f_f (asin, 1.0, M_PI_2l),
1414     TEST_f_f (asin, -1.0, -M_PI_2l),
1415     END_DATA (asin_downward)
1416   };
1417
1418 static void
1419 asin_test_downward (void)
1420 {
1421   errno = 0;
1422   FUNC(asin) (0);
1423   if (errno == ENOSYS)
1424     /* Function not implemented.  */
1425     return;
1426
1427   START (asin_downward);
1428   RUN_TEST_LOOP_f_f (asin, asin_downward_test_data, FE_DOWNWARD);
1429   END (asin_downward);
1430 }
1431
1432
1433 static const struct test_f_f_data asin_upward_test_data[] =
1434   {
1435     START_DATA (asin_upward),
1436     TEST_f_f (asin, 0, 0),
1437     TEST_f_f (asin, minus_zero, minus_zero),
1438     TEST_f_f (asin, 0.5, M_PI_6l),
1439     TEST_f_f (asin, -0.5, -M_PI_6l),
1440     TEST_f_f (asin, 1.0, M_PI_2l),
1441     TEST_f_f (asin, -1.0, -M_PI_2l),
1442     END_DATA (asin_upward)
1443   };
1444
1445 static void
1446 asin_test_upward (void)
1447 {
1448   errno = 0;
1449   FUNC(asin) (0);
1450   if (errno == ENOSYS)
1451     /* Function not implemented.  */
1452     return;
1453
1454   START (asin_upward);
1455   RUN_TEST_LOOP_f_f (asin, asin_upward_test_data, FE_UPWARD);
1456   END (asin_upward);
1457 }
1458
1459 static const struct test_f_f_data asinh_test_data[] =
1460   {
1461     START_DATA (asinh),
1462     TEST_f_f (asinh, 0, 0),
1463     TEST_f_f (asinh, minus_zero, minus_zero),
1464 #ifndef TEST_INLINE
1465     TEST_f_f (asinh, plus_infty, plus_infty),
1466     TEST_f_f (asinh, minus_infty, minus_infty),
1467 #endif
1468     TEST_f_f (asinh, qnan_value, qnan_value),
1469     TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L),
1470     END_DATA (asinh)
1471   };
1472
1473 static void
1474 asinh_test (void)
1475 {
1476   errno = 0;
1477   FUNC(asinh) (0.7L);
1478   if (errno == ENOSYS)
1479     /* Function not implemented.  */
1480     return;
1481
1482   START (asinh);
1483   RUN_TEST_LOOP_f_f (asinh, asinh_test_data, );
1484   END (asinh);
1485 }
1486
1487 static const struct test_f_f_data atan_test_data[] =
1488   {
1489     START_DATA (atan),
1490     TEST_f_f (atan, 0, 0),
1491     TEST_f_f (atan, minus_zero, minus_zero),
1492
1493     TEST_f_f (atan, plus_infty, M_PI_2l),
1494     TEST_f_f (atan, minus_infty, -M_PI_2l),
1495     TEST_f_f (atan, qnan_value, qnan_value),
1496     TEST_f_f (atan, max_value, M_PI_2l),
1497     TEST_f_f (atan, -max_value, -M_PI_2l),
1498
1499     TEST_f_f (atan, 1, M_PI_4l),
1500     TEST_f_f (atan, -1, -M_PI_4l),
1501
1502     TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L),
1503
1504     TEST_f_f (atan, 0x1p-100L, 0x1p-100L),
1505 #ifndef TEST_FLOAT
1506     TEST_f_f (atan, 0x1p-600L, 0x1p-600L),
1507 #endif
1508 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1509     TEST_f_f (atan, 0x1p-10000L, 0x1p-10000L),
1510 #endif
1511     END_DATA (atan)
1512   };
1513
1514 static void
1515 atan_test (void)
1516 {
1517   errno = 0;
1518   FUNC(atan) (0);
1519   if (errno == ENOSYS)
1520     /* Function not implemented.  */
1521     return;
1522
1523   START (atan);
1524   RUN_TEST_LOOP_f_f (atan, atan_test_data, );
1525   END (atan);
1526 }
1527
1528
1529
1530 static const struct test_f_f_data atanh_test_data[] =
1531   {
1532     START_DATA (atanh),
1533     TEST_f_f (atanh, 0, 0),
1534     TEST_f_f (atanh, minus_zero, minus_zero),
1535
1536     TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1537     TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1538     TEST_f_f (atanh, qnan_value, qnan_value),
1539
1540     /* atanh (x) == qNaN plus invalid exception if |x| > 1.  */
1541     TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION),
1542     TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION),
1543     TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION),
1544     TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION),
1545
1546     TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L),
1547     END_DATA (atanh)
1548   };
1549
1550 static void
1551 atanh_test (void)
1552 {
1553   errno = 0;
1554   FUNC(atanh) (0.7L);
1555   if (errno == ENOSYS)
1556     /* Function not implemented.  */
1557     return;
1558
1559   START (atanh);
1560   RUN_TEST_LOOP_f_f (atanh, atanh_test_data, );
1561   END (atanh);
1562 }
1563
1564 static const struct test_ff_f_data atan2_test_data[] =
1565   {
1566     START_DATA (atan2),
1567     /* atan2 (0,x) == 0 for x > 0.  */
1568     TEST_ff_f (atan2, 0, 1, 0),
1569
1570     /* atan2 (-0,x) == -0 for x > 0.  */
1571     TEST_ff_f (atan2, minus_zero, 1, minus_zero),
1572
1573     TEST_ff_f (atan2, 0, 0, 0),
1574     TEST_ff_f (atan2, minus_zero, 0, minus_zero),
1575
1576     /* atan2 (+0,x) == +pi for x < 0.  */
1577     TEST_ff_f (atan2, 0, -1, M_PIl),
1578
1579     /* atan2 (-0,x) == -pi for x < 0.  */
1580     TEST_ff_f (atan2, minus_zero, -1, -M_PIl),
1581
1582     TEST_ff_f (atan2, 0, minus_zero, M_PIl),
1583     TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl),
1584
1585     /* atan2 (y,+0) == pi/2 for y > 0.  */
1586     TEST_ff_f (atan2, 1, 0, M_PI_2l),
1587
1588     /* atan2 (y,-0) == pi/2 for y > 0.  */
1589     TEST_ff_f (atan2, 1, minus_zero, M_PI_2l),
1590
1591     /* atan2 (y,+0) == -pi/2 for y < 0.  */
1592     TEST_ff_f (atan2, -1, 0, -M_PI_2l),
1593
1594     /* atan2 (y,-0) == -pi/2 for y < 0.  */
1595     TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l),
1596
1597     /* atan2 (y,inf) == +0 for finite y > 0.  */
1598     TEST_ff_f (atan2, 1, plus_infty, 0),
1599
1600     /* atan2 (y,inf) == -0 for finite y < 0.  */
1601     TEST_ff_f (atan2, -1, plus_infty, minus_zero),
1602
1603     /* atan2(+inf, x) == pi/2 for finite x.  */
1604     TEST_ff_f (atan2, plus_infty, -1, M_PI_2l),
1605
1606     /* atan2(-inf, x) == -pi/2 for finite x.  */
1607     TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l),
1608
1609     /* atan2 (y,-inf) == +pi for finite y > 0.  */
1610     TEST_ff_f (atan2, 1, minus_infty, M_PIl),
1611
1612     /* atan2 (y,-inf) == -pi for finite y < 0.  */
1613     TEST_ff_f (atan2, -1, minus_infty, -M_PIl),
1614
1615     TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l),
1616     TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l),
1617     TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l),
1618     TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l),
1619     TEST_ff_f (atan2, qnan_value, qnan_value, qnan_value),
1620
1621     TEST_ff_f (atan2, max_value, max_value, M_PI_4l),
1622
1623     TEST_ff_f (atan2, max_value, min_value, M_PI_2l),
1624     TEST_ff_f (atan2, -max_value, -min_value, -M_PI_2l),
1625
1626     TEST_ff_f (atan2, 0.75L, 1, 0.643501108793284386802809228717322638L),
1627     TEST_ff_f (atan2, -0.75L, 1.0L, -0.643501108793284386802809228717322638L),
1628     TEST_ff_f (atan2, 0.75L, -1.0L, 2.49809154479650885165983415456218025L),
1629     TEST_ff_f (atan2, -0.75L, -1.0L, -2.49809154479650885165983415456218025L),
1630     TEST_ff_f (atan2, 0.390625L, .00029L, 1.57005392693128974780151246612928941L),
1631     TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L),
1632
1633     TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L),
1634 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1635     TEST_ff_f (atan2, 0x1.00000000000001p0L, 0x1.00000000000001p0L, M_PI_4l),
1636 #endif
1637     END_DATA (atan2)
1638   };
1639
1640 static void
1641 atan2_test (void)
1642 {
1643   errno = 0;
1644   FUNC(atan2) (-0, 1);
1645   if (errno == ENOSYS)
1646     /* Function not implemented.  */
1647     return;
1648
1649   START (atan2);
1650   RUN_TEST_LOOP_ff_f (atan2, atan2_test_data, );
1651   END (atan2);
1652 }
1653
1654 static void
1655 cabs_test (void)
1656 {
1657   errno = 0;
1658   FUNC(cabs) (BUILD_COMPLEX (0.7L, 12.4L));
1659   if (errno == ENOSYS)
1660     /* Function not implemented.  */
1661     return;
1662
1663   START (cabs);
1664
1665   /* cabs (x + iy) is specified as hypot (x,y) */
1666
1667   /* cabs (+inf + i x) == +inf.  */
1668   TEST_c_f (cabs, plus_infty, 1.0, plus_infty);
1669   /* cabs (-inf + i x) == +inf.  */
1670   TEST_c_f (cabs, minus_infty, 1.0, plus_infty);
1671
1672   TEST_c_f (cabs, minus_infty, qnan_value, plus_infty);
1673   TEST_c_f (cabs, minus_infty, qnan_value, plus_infty);
1674
1675   TEST_c_f (cabs, qnan_value, qnan_value, qnan_value);
1676
1677   /* cabs (x,y) == cabs (y,x).  */
1678   TEST_c_f (cabs, 0.75L, 12.390625L, 12.4133028598606664302388810868156657L);
1679   /* cabs (x,y) == cabs (-x,y).  */
1680   TEST_c_f (cabs, -12.390625L, 0.75L, 12.4133028598606664302388810868156657L);
1681   /* cabs (x,y) == cabs (-y,x).  */
1682   TEST_c_f (cabs, -0.75L, 12.390625L, 12.4133028598606664302388810868156657L);
1683   /* cabs (x,y) == cabs (-x,-y).  */
1684   TEST_c_f (cabs, -12.390625L, -0.75L, 12.4133028598606664302388810868156657L);
1685   /* cabs (x,y) == cabs (-y,-x).  */
1686   TEST_c_f (cabs, -0.75L, -12.390625L, 12.4133028598606664302388810868156657L);
1687   /* cabs (x,0) == fabs (x).  */
1688   TEST_c_f (cabs, -0.75L, 0, 0.75L);
1689   TEST_c_f (cabs, 0.75L, 0, 0.75L);
1690   TEST_c_f (cabs, -1.0L, 0, 1.0L);
1691   TEST_c_f (cabs, 1.0L, 0, 1.0L);
1692   TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L);
1693   TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L);
1694
1695   TEST_c_f (cabs, 0.75L, 1.25L, 1.45773797371132511771853821938639577L);
1696
1697   END (cabs);
1698 }
1699
1700
1701 static const struct test_c_c_data cacos_test_data[] =
1702   {
1703     START_DATA (cacos),
1704     TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero),
1705     TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero),
1706     TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0),
1707     TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0),
1708
1709     TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty),
1710     TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty),
1711
1712     TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty),
1713     TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty),
1714
1715     TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty),
1716     TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty),
1717     TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty),
1718     TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty),
1719     TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty),
1720     TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty),
1721
1722     TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty),
1723     TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty),
1724     TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty),
1725     TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty),
1726
1727     TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty),
1728     TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty),
1729     TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty),
1730     TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty),
1731
1732     TEST_c_c (cacos, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1733     TEST_c_c (cacos, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1734
1735     TEST_c_c (cacos, 0, qnan_value, M_PI_2l, qnan_value),
1736     TEST_c_c (cacos, minus_zero, qnan_value, M_PI_2l, qnan_value),
1737
1738     TEST_c_c (cacos, qnan_value, plus_infty, qnan_value, minus_infty),
1739     TEST_c_c (cacos, qnan_value, minus_infty, qnan_value, plus_infty),
1740
1741     TEST_c_c (cacos, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1742     TEST_c_c (cacos, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1743
1744     TEST_c_c (cacos, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1745     TEST_c_c (cacos, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1746
1747     TEST_c_c (cacos, qnan_value, qnan_value, qnan_value, qnan_value),
1748
1749     TEST_c_c (cacos, plus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1750     TEST_c_c (cacos, minus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1751     TEST_c_c (cacos, plus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1752     TEST_c_c (cacos, minus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1753     TEST_c_c (cacos, plus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1754     TEST_c_c (cacos, minus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1755     TEST_c_c (cacos, plus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1756     TEST_c_c (cacos, minus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1757     TEST_c_c (cacos, plus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1758     TEST_c_c (cacos, minus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1759     TEST_c_c (cacos, plus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1760     TEST_c_c (cacos, minus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1761
1762     TEST_c_c (cacos, -1.5L, plus_zero, M_PIl, -0.9624236501192068949955178268487368462704L),
1763     TEST_c_c (cacos, -1.5L, minus_zero, M_PIl, 0.9624236501192068949955178268487368462704L),
1764     TEST_c_c (cacos, -1.0L, plus_zero, M_PIl, minus_zero),
1765     TEST_c_c (cacos, -1.0L, minus_zero, M_PIl, plus_zero),
1766     TEST_c_c (cacos, -0.5L, plus_zero, 2.094395102393195492308428922186335256131L, minus_zero),
1767     TEST_c_c (cacos, -0.5L, minus_zero, 2.094395102393195492308428922186335256131L, plus_zero),
1768     TEST_c_c (cacos, 0.5L, plus_zero, 1.047197551196597746154214461093167628066L, minus_zero),
1769     TEST_c_c (cacos, 0.5L, minus_zero, 1.047197551196597746154214461093167628066L, plus_zero),
1770     TEST_c_c (cacos, 1.0L, plus_zero, plus_zero, minus_zero),
1771     TEST_c_c (cacos, 1.0L, minus_zero, plus_zero, plus_zero),
1772     TEST_c_c (cacos, 1.5L, plus_zero, plus_zero, -0.9624236501192068949955178268487368462704L),
1773     TEST_c_c (cacos, 1.5L, minus_zero, plus_zero, 0.9624236501192068949955178268487368462704L),
1774
1775     TEST_c_c (cacos, 0x1p50L, 1.0L, 8.881784197001252323389053344727730248720e-16L, -3.535050620855721078027883819436720218708e1L),
1776     TEST_c_c (cacos, 0x1p50L, -1.0L, 8.881784197001252323389053344727730248720e-16L, 3.535050620855721078027883819436720218708e1L),
1777     TEST_c_c (cacos, -0x1p50L, 1.0L, 3.141592653589792350284223683154270545292L, -3.535050620855721078027883819436720218708e1L),
1778     TEST_c_c (cacos, -0x1p50L, -1.0L, 3.141592653589792350284223683154270545292L, 3.535050620855721078027883819436720218708e1L),
1779     TEST_c_c (cacos, 1.0L, 0x1p50L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436759661753e1L),
1780     TEST_c_c (cacos, -1.0L, 0x1p50L, 1.570796326794897507409741391764983781004L, -3.535050620855721078027883819436759661753e1L),
1781     TEST_c_c (cacos, 1.0L, -0x1p50L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436759661753e1L),
1782     TEST_c_c (cacos, -1.0L, -0x1p50L, 1.570796326794897507409741391764983781004L, 3.535050620855721078027883819436759661753e1L),
1783 #ifndef TEST_FLOAT
1784     TEST_c_c (cacos, 0x1p500L, 1.0L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
1785     TEST_c_c (cacos, 0x1p500L, -1.0L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
1786     TEST_c_c (cacos, -0x1p500L, 1.0L, 3.141592653589793238462643383279502884197L, -3.472667374605326000180332928505464606058e2L),
1787     TEST_c_c (cacos, -0x1p500L, -1.0L, 3.141592653589793238462643383279502884197L, 3.472667374605326000180332928505464606058e2L),
1788     TEST_c_c (cacos, 1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1789     TEST_c_c (cacos, -1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1790     TEST_c_c (cacos, 1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1791     TEST_c_c (cacos, -1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1792 #endif
1793 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1794     TEST_c_c (cacos, 0x1p5000L, 1.0L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
1795     TEST_c_c (cacos, 0x1p5000L, -1.0L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
1796     TEST_c_c (cacos, -0x1p5000L, 1.0L, 3.141592653589793238462643383279502884197L, -3.466429049980286492395577839412341016946e3L),
1797     TEST_c_c (cacos, -0x1p5000L, -1.0L, 3.141592653589793238462643383279502884197L, 3.466429049980286492395577839412341016946e3L),
1798     TEST_c_c (cacos, 1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1799     TEST_c_c (cacos, -1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1800     TEST_c_c (cacos, 1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1801     TEST_c_c (cacos, -1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1802 #endif
1803
1804     TEST_c_c (cacos, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, -8.973081118419833726837456344608533993585e1L),
1805 #ifndef TEST_FLOAT
1806     TEST_c_c (cacos, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, -7.107906849659093345062145442726115449315e2L),
1807 #endif
1808 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1809     TEST_c_c (cacos, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, -1.135753137836666928715489992987020363057e4L),
1810 #endif
1811
1812     TEST_c_c (cacos, 0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442097L, -1.194763217287109304111930828519090523536L),
1813     TEST_c_c (cacos, 0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442097L, 1.194763217287109304111930828519090523536L),
1814     TEST_c_c (cacos, -0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442100L, -1.194763217287109304111930828519090523536L),
1815     TEST_c_c (cacos, -0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442100L, 1.194763217287109304111930828519090523536L),
1816     TEST_c_c (cacos, 1.5L, 0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1817     TEST_c_c (cacos, -1.5L, 0x1.fp-129L, 3.141592653589793238462643383279502884195L, -9.624236501192068949955178268487368462704e-1L),
1818     TEST_c_c (cacos, 1.5L, -0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1819     TEST_c_c (cacos, -1.5L, -0x1.fp-129L, 3.141592653589793238462643383279502884195L, 9.624236501192068949955178268487368462704e-1L),
1820 #ifndef TEST_FLOAT
1821     TEST_c_c (cacos, 0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1822     TEST_c_c (cacos, 0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1823     TEST_c_c (cacos, -0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1824     TEST_c_c (cacos, -0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1825     TEST_c_c (cacos, 1.5L, 0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1826     TEST_c_c (cacos, -1.5L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
1827     TEST_c_c (cacos, 1.5L, -0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1828     TEST_c_c (cacos, -1.5L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
1829 #endif
1830 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1831     TEST_c_c (cacos, 0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1832     TEST_c_c (cacos, 0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1833     TEST_c_c (cacos, -0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1834     TEST_c_c (cacos, -0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1835     TEST_c_c (cacos, 1.5L, 0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
1836     TEST_c_c (cacos, -1.5L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
1837     TEST_c_c (cacos, 1.5L, -0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
1838     TEST_c_c (cacos, -1.5L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
1839 #endif
1840
1841     TEST_c_c (cacos, 0.5L, 1.0L, 1.221357263937683325603909865564381489366L, -9.261330313501824245501244453057873152694e-1L),
1842     TEST_c_c (cacos, 0.5L, -1.0L, 1.221357263937683325603909865564381489366L, 9.261330313501824245501244453057873152694e-1L),
1843     TEST_c_c (cacos, -0.5L, 1.0L, 1.920235389652109912858733517715121394831L, -9.261330313501824245501244453057873152694e-1L),
1844     TEST_c_c (cacos, -0.5L, -1.0L, 1.920235389652109912858733517715121394831L, 9.261330313501824245501244453057873152694e-1L),
1845     TEST_c_c (cacos, 1.0L, 0.5L, 6.748888455860063801646649673121744318756e-1L, -7.328576759736452608886724437653071523305e-1L),
1846     TEST_c_c (cacos, -1.0L, 0.5L, 2.466703808003786858297978415967328452322L, -7.328576759736452608886724437653071523305e-1L),
1847     TEST_c_c (cacos, 1.0L, -0.5L, 6.748888455860063801646649673121744318756e-1L, 7.328576759736452608886724437653071523305e-1L),
1848     TEST_c_c (cacos, -1.0L, -0.5L, 2.466703808003786858297978415967328452322L, 7.328576759736452608886724437653071523305e-1L),
1849     TEST_c_c (cacos, 0.25L, 1.0L, 1.394493894017929688812643125003661339452L, -8.924633639033482359562124741744951972772e-1L),
1850     TEST_c_c (cacos, 0.25L, -1.0L, 1.394493894017929688812643125003661339452L, 8.924633639033482359562124741744951972772e-1L),
1851     TEST_c_c (cacos, -0.25L, 1.0L, 1.747098759571863549650000258275841544745L, -8.924633639033482359562124741744951972772e-1L),
1852     TEST_c_c (cacos, -0.25L, -1.0L, 1.747098759571863549650000258275841544745L, 8.924633639033482359562124741744951972772e-1L),
1853     TEST_c_c (cacos, 1.0L, 0.25L, 4.890443302710802929202843732146540079124e-1L, -5.097911466811016354623559941115413499164e-1L),
1854     TEST_c_c (cacos, -1.0L, 0.25L, 2.652548323318712945542359010064848876285L, -5.097911466811016354623559941115413499164e-1L),
1855     TEST_c_c (cacos, 1.0L, -0.25L, 4.890443302710802929202843732146540079124e-1L, 5.097911466811016354623559941115413499164e-1L),
1856     TEST_c_c (cacos, -1.0L, -0.25L, 2.652548323318712945542359010064848876285L, 5.097911466811016354623559941115413499164e-1L),
1857     TEST_c_c (cacos, 0x1.fp-10L, 1.0L, 1.569458417435338878318763342108699202986L, -8.813742198809567991336704287826445879025e-1L),
1858     TEST_c_c (cacos, 0x1.fp-10L, -1.0L, 1.569458417435338878318763342108699202986L, 8.813742198809567991336704287826445879025e-1L),
1859     TEST_c_c (cacos, -0x1.fp-10L, 1.0L, 1.572134236154454360143880041170803681211L, -8.813742198809567991336704287826445879025e-1L),
1860     TEST_c_c (cacos, -0x1.fp-10L, -1.0L, 1.572134236154454360143880041170803681211L, 8.813742198809567991336704287826445879025e-1L),
1861     TEST_c_c (cacos, 1.0L, 0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, -4.350501469856803800217957402220976497152e-2L),
1862     TEST_c_c (cacos, -1.0L, 0x1.fp-10L, 3.098101355958774410750062883737683164607L, -4.350501469856803800217957402220976497152e-2L),
1863     TEST_c_c (cacos, 1.0L, -0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, 4.350501469856803800217957402220976497152e-2L),
1864     TEST_c_c (cacos, -1.0L, -0x1.fp-10L, 3.098101355958774410750062883737683164607L, 4.350501469856803800217957402220976497152e-2L),
1865     TEST_c_c (cacos, 0x1.fp-30L, 1.0L, 1.570796325518966635014803151387033957091L, -8.813735870195430258081932989769495326854e-1L),
1866     TEST_c_c (cacos, 0x1.fp-30L, -1.0L, 1.570796325518966635014803151387033957091L, 8.813735870195430258081932989769495326854e-1L),
1867     TEST_c_c (cacos, -0x1.fp-30L, 1.0L, 1.570796328070826603447840231892468927106L, -8.813735870195430258081932989769495326854e-1L),
1868     TEST_c_c (cacos, -0x1.fp-30L, -1.0L, 1.570796328070826603447840231892468927106L, 8.813735870195430258081932989769495326854e-1L),
1869     TEST_c_c (cacos, 1.0L, 0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, -4.247867098745151888768727039216644758847e-5L),
1870     TEST_c_c (cacos, -1.0L, 0x1.fp-30L, 3.141550174918818561961484385371624132331L, -4.247867098745151888768727039216644758847e-5L),
1871     TEST_c_c (cacos, 1.0L, -0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, 4.247867098745151888768727039216644758847e-5L),
1872     TEST_c_c (cacos, -1.0L, -0x1.fp-30L, 3.141550174918818561961484385371624132331L, 4.247867098745151888768727039216644758847e-5L),
1873     TEST_c_c (cacos, 0x1.fp-100L, 1.0L, 1.570796326794896619231321691638670687364L, -8.813735870195430252326093249797923090282e-1L),
1874     TEST_c_c (cacos, 0x1.fp-100L, -1.0L, 1.570796326794896619231321691638670687364L, 8.813735870195430252326093249797923090282e-1L),
1875     TEST_c_c (cacos, -0x1.fp-100L, 1.0L, 1.570796326794896619231321691640832196834L, -8.813735870195430252326093249797923090282e-1L),
1876     TEST_c_c (cacos, -0x1.fp-100L, -1.0L, 1.570796326794896619231321691640832196834L, 8.813735870195430252326093249797923090282e-1L),
1877     TEST_c_c (cacos, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, -1.236292038260260888664514866457202186027e-15L),
1878     TEST_c_c (cacos, -1.0L, 0x1.fp-100L, 3.141592653589792002170605123018614219682L, -1.236292038260260888664514866457202186027e-15L),
1879     TEST_c_c (cacos, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, 1.236292038260260888664514866457202186027e-15L),
1880     TEST_c_c (cacos, -1.0L, -0x1.fp-100L, 3.141592653589792002170605123018614219682L, 1.236292038260260888664514866457202186027e-15L),
1881     TEST_c_c (cacos, 0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442097L, -8.813735870195430252326093249797923090282e-1L),
1882     TEST_c_c (cacos, 0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442097L, 8.813735870195430252326093249797923090282e-1L),
1883     TEST_c_c (cacos, -0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442101L, -8.813735870195430252326093249797923090282e-1L),
1884     TEST_c_c (cacos, -0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442101L, 8.813735870195430252326093249797923090282e-1L),
1885     TEST_c_c (cacos, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, -5.335635276982233498398987585285818977933e-20L),
1886     TEST_c_c (cacos, -1.0L, 0x1.fp-129L, 3.141592653589793238409287030509680549213L, -5.335635276982233498398987585285818977933e-20L),
1887     TEST_c_c (cacos, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, 5.335635276982233498398987585285818977933e-20L),
1888     TEST_c_c (cacos, -1.0L, -0x1.fp-129L, 3.141592653589793238409287030509680549213L, 5.335635276982233498398987585285818977933e-20L),
1889 #ifndef TEST_FLOAT
1890     TEST_c_c (cacos, 0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1891     TEST_c_c (cacos, 0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1892     TEST_c_c (cacos, -0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1893     TEST_c_c (cacos, -0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1894     TEST_c_c (cacos, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
1895     TEST_c_c (cacos, -1.0L, 0x1.fp-1000L, 3.141592653589793238462643383279502884197L, -4.252291453851660175550490409247739011867e-151L),
1896     TEST_c_c (cacos, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
1897     TEST_c_c (cacos, -1.0L, -0x1.fp-1000L, 3.141592653589793238462643383279502884197L, 4.252291453851660175550490409247739011867e-151L),
1898     TEST_c_c (cacos, 0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1899     TEST_c_c (cacos, 0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1900     TEST_c_c (cacos, -0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1901     TEST_c_c (cacos, -0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1902     TEST_c_c (cacos, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
1903     TEST_c_c (cacos, -1.0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -7.340879205566679497036857179189356754017e-155L),
1904     TEST_c_c (cacos, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
1905     TEST_c_c (cacos, -1.0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 7.340879205566679497036857179189356754017e-155L),
1906 #endif
1907 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1908     TEST_c_c (cacos, 0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1909     TEST_c_c (cacos, 0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1910     TEST_c_c (cacos, -0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1911     TEST_c_c (cacos, -0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1912     TEST_c_c (cacos, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
1913     TEST_c_c (cacos, -1.0L, 0x1.fp-10000L, 3.141592653589793238462643383279502884197L, -9.854680208706673586644342922051388714633e-1506L),
1914     TEST_c_c (cacos, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
1915     TEST_c_c (cacos, -1.0L, -0x1.fp-10000L, 3.141592653589793238462643383279502884197L, 9.854680208706673586644342922051388714633e-1506L),
1916     TEST_c_c (cacos, 0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1917     TEST_c_c (cacos, 0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1918     TEST_c_c (cacos, -0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1919     TEST_c_c (cacos, -0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1920     TEST_c_c (cacos, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
1921     TEST_c_c (cacos, -1.0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.023632056840860275214893047597614177639e-2467L),
1922     TEST_c_c (cacos, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
1923     TEST_c_c (cacos, -1.0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.023632056840860275214893047597614177639e-2467L),
1924 #endif
1925
1926     TEST_c_c (cacos, 0x1p-23L, 0x1.000002p0L, 1.570796242501204621739026081991856762292L, -8.813736713132400470205730751186547909968e-1L),
1927     TEST_c_c (cacos, 0x1p-23L, -0x1.000002p0L, 1.570796242501204621739026081991856762292L, 8.813736713132400470205730751186547909968e-1L),
1928     TEST_c_c (cacos, -0x1p-23L, 0x1.000002p0L, 1.570796411088588616723617301287646121905L, -8.813736713132400470205730751186547909968e-1L),
1929     TEST_c_c (cacos, -0x1p-23L, -0x1.000002p0L, 1.570796411088588616723617301287646121905L, 8.813736713132400470205730751186547909968e-1L),
1930     TEST_c_c (cacos, 0x1.000002p0L, 0x1p-23L, 2.222118384408546368406374049167636760903e-4L, -5.364668491573609633134147164031476452679e-4L),
1931     TEST_c_c (cacos, -0x1.000002p0L, 0x1p-23L, 3.141370441751352383825802745874586120521L, -5.364668491573609633134147164031476452679e-4L),
1932     TEST_c_c (cacos, 0x1.000002p0L, -0x1p-23L, 2.222118384408546368406374049167636760903e-4L, 5.364668491573609633134147164031476452679e-4L),
1933     TEST_c_c (cacos, -0x1.000002p0L, -0x1p-23L, 3.141370441751352383825802745874586120521L, 5.364668491573609633134147164031476452679e-4L),
1934     TEST_c_c (cacos, 0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442097L, -8.813736713132375348727889167749389235161e-1L),
1935     TEST_c_c (cacos, 0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442097L, 8.813736713132375348727889167749389235161e-1L),
1936     TEST_c_c (cacos, -0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442101L, -8.813736713132375348727889167749389235161e-1L),
1937     TEST_c_c (cacos, -0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442101L, 8.813736713132375348727889167749389235161e-1L),
1938     TEST_c_c (cacos, 0x1.000002p0L, 0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, -4.882812451493617206486388134172712975070e-4L),
1939     TEST_c_c (cacos, -0x1.000002p0L, 0x1.fp-129L, 3.141592653589793238462643383279502878367L, -4.882812451493617206486388134172712975070e-4L),
1940     TEST_c_c (cacos, 0x1.000002p0L, -0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, 4.882812451493617206486388134172712975070e-4L),
1941     TEST_c_c (cacos, -0x1.000002p0L, -0x1.fp-129L, 3.141592653589793238462643383279502878367L, 4.882812451493617206486388134172712975070e-4L),
1942     TEST_c_c (cacos, 0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
1943     TEST_c_c (cacos, 0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
1944     TEST_c_c (cacos, -0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
1945     TEST_c_c (cacos, -0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
1946     TEST_c_c (cacos, 0x1.000002p0L, 0.0L, 0.0L, -4.882812451493617206486388134172712975070e-4L),
1947     TEST_c_c (cacos, -0x1.000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.882812451493617206486388134172712975070e-4L),
1948     TEST_c_c (cacos, 0x1.000002p0L, -0.0L, 0.0L, 4.882812451493617206486388134172712975070e-4L),
1949     TEST_c_c (cacos, -0x1.000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.882812451493617206486388134172712975070e-4L),
1950 #ifndef TEST_FLOAT
1951     TEST_c_c (cacos, 0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, -8.813735870195431822418551933572982483664e-1L),
1952     TEST_c_c (cacos, 0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, 8.813735870195431822418551933572982483664e-1L),
1953     TEST_c_c (cacos, -0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, -8.813735870195431822418551933572982483664e-1L),
1954     TEST_c_c (cacos, -0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, 8.813735870195431822418551933572982483664e-1L),
1955     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1p-52L, 9.590301705980041385828904092662391018164e-9L, -2.315303644582684770975188768022139415020e-8L),
1956     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1p-52L, 3.141592643999491532482601997450598791535L, -2.315303644582684770975188768022139415020e-8L),
1957     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1p-52L, 9.590301705980041385828904092662391018164e-9L, 2.315303644582684770975188768022139415020e-8L),
1958     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1p-52L, 3.141592643999491532482601997450598791535L, 2.315303644582684770975188768022139415020e-8L),
1959     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
1960     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
1961     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
1962     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
1963     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, -2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
1964     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
1965     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, 2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
1966     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
1967     TEST_c_c (cacos, 0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
1968     TEST_c_c (cacos, 0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
1969     TEST_c_c (cacos, -0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
1970     TEST_c_c (cacos, -0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
1971     TEST_c_c (cacos, 0x1.0000000000001p0L, 0.0L, 0.0L, -2.107342425544701550354780375182800088393e-8L),
1972     TEST_c_c (cacos, -0x1.0000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
1973     TEST_c_c (cacos, 0x1.0000000000001p0L, -0.0L, 0.0L, 2.107342425544701550354780375182800088393e-8L),
1974     TEST_c_c (cacos, -0x1.0000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
1975 #endif
1976 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1977     TEST_c_c (cacos, 0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, -8.813735870195430253092739958139610131001e-1L),
1978     TEST_c_c (cacos, 0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, 8.813735870195430253092739958139610131001e-1L),
1979     TEST_c_c (cacos, -0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, -8.813735870195430253092739958139610131001e-1L),
1980     TEST_c_c (cacos, -0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, 8.813735870195430253092739958139610131001e-1L),
1981     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1p-63L, 2.119177303101063432592523199680782317447e-10L, -5.116146586219826555037807251857670783420e-10L),
1982     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1p-63L, 3.141592653377875508152537040020250564229L, -5.116146586219826555037807251857670783420e-10L),
1983     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1p-63L, 2.119177303101063432592523199680782317447e-10L, 5.116146586219826555037807251857670783420e-10L),
1984     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1p-63L, 3.141592653377875508152537040020250564229L, 5.116146586219826555037807251857670783420e-10L),
1985 # if LDBL_MIN_EXP <= -16381
1986     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
1987     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
1988     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
1989     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
1990     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, -4.656612873077392578082927418388212703712e-10L),
1991     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
1992     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, 4.656612873077392578082927418388212703712e-10L),
1993     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
1994 # endif
1995     TEST_c_c (cacos, 0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
1996     TEST_c_c (cacos, 0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
1997     TEST_c_c (cacos, -0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
1998     TEST_c_c (cacos, -0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
1999     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0.0L, 0.0L, -4.656612873077392578082927418388212703712e-10L),
2000     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2001     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0.0L, 0.0L, 4.656612873077392578082927418388212703712e-10L),
2002     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2003 #endif
2004 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2005     TEST_c_c (cacos, 0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, -8.813735870195430252326093249798097405561e-1L),
2006     TEST_c_c (cacos, 0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, 8.813735870195430252326093249798097405561e-1L),
2007     TEST_c_c (cacos, -0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, -8.813735870195430252326093249798097405561e-1L),
2008     TEST_c_c (cacos, -0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, 8.813735870195430252326093249798097405561e-1L),
2009     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1p-106L, 5.394221422390606848017034778914096659726e-17L, -2.285028863093221674154232933662774454211e-16L),
2010     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1p-106L, 3.141592653589793184520429159373434404027L, -2.285028863093221674154232933662774454211e-16L),
2011     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1p-106L, 5.394221422390606848017034778914096659726e-17L, 2.285028863093221674154232933662774454211e-16L),
2012     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1p-106L, 3.141592653589793184520429159373434404027L, 2.285028863093221674154232933662774454211e-16L),
2013     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2014     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2015     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2016     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2017     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, -2.220446049250313080847263336181636063482e-16L),
2018     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2019     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, 2.220446049250313080847263336181636063482e-16L),
2020     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2021     TEST_c_c (cacos, 0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2022     TEST_c_c (cacos, 0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2023     TEST_c_c (cacos, -0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2024     TEST_c_c (cacos, -0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2025     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0.0L, 0.0L, -2.220446049250313080847263336181636063482e-16L),
2026     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2027     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0.0L, 0.0L, 2.220446049250313080847263336181636063482e-16L),
2028     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2029 #endif
2030 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2031     TEST_c_c (cacos, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, -8.813735870195430252326093249797924452120e-1L),
2032     TEST_c_c (cacos, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, 8.813735870195430252326093249797924452120e-1L),
2033     TEST_c_c (cacos, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, -8.813735870195430252326093249797924452120e-1L),
2034     TEST_c_c (cacos, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, 8.813735870195430252326093249797924452120e-1L),
2035     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 4.767863183742677481693563511435642755521e-18L, -2.019699255375255198156433710951064632386e-17L),
2036     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 3.141592653589793233694780199536825402504L, -2.019699255375255198156433710951064632386e-17L),
2037     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 4.767863183742677481693563511435642755521e-18L, 2.019699255375255198156433710951064632386e-17L),
2038     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 3.141592653589793233694780199536825402504L, 2.019699255375255198156433710951064632386e-17L),
2039     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2040     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2041     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2042     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2043     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, -1.962615573354718824241727964954454332780e-17L),
2044     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2045     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, 1.962615573354718824241727964954454332780e-17L),
2046     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2047     TEST_c_c (cacos, 0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2048     TEST_c_c (cacos, 0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2049     TEST_c_c (cacos, -0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2050     TEST_c_c (cacos, -0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2051     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0.0L, 0.0L, -1.962615573354718824241727964954454332780e-17L),
2052     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2053     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0.0L, 0.0L, 1.962615573354718824241727964954454332780e-17L),
2054     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2055 #endif
2056
2057     TEST_c_c (cacos, 0x1p-23L, 0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, -8.813735448726963984495965873956465777250e-1L),
2058     TEST_c_c (cacos, 0x1p-23L, -0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, 8.813735448726963984495965873956465777250e-1L),
2059     TEST_c_c (cacos, -0x1p-23L, 0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, -8.813735448726963984495965873956465777250e-1L),
2060     TEST_c_c (cacos, -0x1p-23L, -0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, 8.813735448726963984495965873956465777250e-1L),
2061     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1p-23L, 4.391863861910487109445187743978204002614e-4L, -2.714321200917194650737217746780928423385e-4L),
2062     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1p-23L, 3.141153467203602189751698864505105063797L, -2.714321200917194650737217746780928423385e-4L),
2063     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1p-23L, 4.391863861910487109445187743978204002614e-4L, 2.714321200917194650737217746780928423385e-4L),
2064     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1p-23L, 3.141153467203602189751698864505105063797L, 2.714321200917194650737217746780928423385e-4L),
2065     TEST_c_c (cacos, 0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, -8.813735448726938863015878255140556727969e-1L),
2066     TEST_c_c (cacos, 0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, 8.813735448726938863015878255140556727969e-1L),
2067     TEST_c_c (cacos, -0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, -8.813735448726938863015878255140556727969e-1L),
2068     TEST_c_c (cacos, -0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, 8.813735448726938863015878255140556727969e-1L),
2069     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, -8.245504387859737323891843603996428534945e-36L),
2070     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1.fp-129L, 3.141247386605077034875040133796864147700L, -8.245504387859737323891843603996428534945e-36L),
2071     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, 8.245504387859737323891843603996428534945e-36L),
2072     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1.fp-129L, 3.141247386605077034875040133796864147700L, 8.245504387859737323891843603996428534945e-36L),
2073     TEST_c_c (cacos, 0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2074     TEST_c_c (cacos, 0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2075     TEST_c_c (cacos, -0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2076     TEST_c_c (cacos, -0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2077     TEST_c_c (cacos, 0x0.ffffffp0L, 0.0L, 3.452669847162035876032494826387364972849e-4L, -0.0L),
2078     TEST_c_c (cacos, -0x0.ffffffp0L, 0.0L, 3.141247386605077034875040133796864147700L, -0.0L),
2079     TEST_c_c (cacos, 0x0.ffffffp0L, -0.0L, 3.452669847162035876032494826387364972849e-4L, 0.0L),
2080     TEST_c_c (cacos, -0x0.ffffffp0L, -0.0L, 3.141247386605077034875040133796864147700L, 0.0L),
2081     TEST_c_c (cacos, 0x1p-23L, 0.5L, 1.570796220170866625230343643673321150378L, -4.812118250596059896127318386463676808798e-1L),
2082     TEST_c_c (cacos, 0x1p-23L, -0.5L, 1.570796220170866625230343643673321150378L, 4.812118250596059896127318386463676808798e-1L),
2083     TEST_c_c (cacos, -0x1p-23L, 0.5L, 1.570796433418926613232299739606181733819L, -4.812118250596059896127318386463676808798e-1L),
2084     TEST_c_c (cacos, -0x1p-23L, -0.5L, 1.570796433418926613232299739606181733819L, 4.812118250596059896127318386463676808798e-1L),
2085     TEST_c_c (cacos, 0.5L, 0x1p-23L, 1.047197551196603215914744618665204532273L, -1.376510308240943236356088341381173571841e-7L),
2086     TEST_c_c (cacos, -0.5L, 0x1p-23L, 2.094395102393190022547898764614298351924L, -1.376510308240943236356088341381173571841e-7L),
2087     TEST_c_c (cacos, 0.5L, -0x1p-23L, 1.047197551196603215914744618665204532273L, 1.376510308240943236356088341381173571841e-7L),
2088     TEST_c_c (cacos, -0.5L, -0x1p-23L, 2.094395102393190022547898764614298351924L, 1.376510308240943236356088341381173571841e-7L),
2089     TEST_c_c (cacos, 0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442096L, -4.812118250596034474977589134243684231352e-1L),
2090     TEST_c_c (cacos, 0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442096L, 4.812118250596034474977589134243684231352e-1L),
2091     TEST_c_c (cacos, -0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442101L, -4.812118250596034474977589134243684231352e-1L),
2092     TEST_c_c (cacos, -0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442101L, 4.812118250596034474977589134243684231352e-1L),
2093     TEST_c_c (cacos, 0.5L, 0x1.fp-129L, 1.047197551196597746154214461093167628066L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2094     TEST_c_c (cacos, -0.5L, 0x1.fp-129L, 2.094395102393195492308428922186335256131L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2095     TEST_c_c (cacos, 0.5L, -0x1.fp-129L, 1.047197551196597746154214461093167628066L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2096     TEST_c_c (cacos, -0.5L, -0x1.fp-129L, 2.094395102393195492308428922186335256131L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2097     TEST_c_c (cacos, 0x1p-23L, 0x1p-23L, 1.570796207585607068450636380271254316214L, -1.192092895507818146886315028596704749235e-7L),
2098     TEST_c_c (cacos, 0x1p-23L, -0x1p-23L, 1.570796207585607068450636380271254316214L, 1.192092895507818146886315028596704749235e-7L),
2099     TEST_c_c (cacos, -0x1p-23L, 0x1p-23L, 1.570796446004186170012007003008248567984L, -1.192092895507818146886315028596704749235e-7L),
2100     TEST_c_c (cacos, -0x1p-23L, -0x1p-23L, 1.570796446004186170012007003008248567984L, 1.192092895507818146886315028596704749235e-7L),
2101     TEST_c_c (cacos, 0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442096L, -1.192092895507809676556842485683592032154e-7L),
2102     TEST_c_c (cacos, 0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442096L, 1.192092895507809676556842485683592032154e-7L),
2103     TEST_c_c (cacos, -0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442101L, -1.192092895507809676556842485683592032154e-7L),
2104     TEST_c_c (cacos, -0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442101L, 1.192092895507809676556842485683592032154e-7L),
2105     TEST_c_c (cacos, 0x1p-23L, 0x1.fp-129L, 1.570796207585607068449789347324000006847L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2106     TEST_c_c (cacos, -0x1p-23L, 0x1.fp-129L, 1.570796446004186170012854035955502877351L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2107     TEST_c_c (cacos, 0x1p-23L, -0x1.fp-129L, 1.570796207585607068449789347324000006847L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2108     TEST_c_c (cacos, -0x1p-23L, -0x1.fp-129L, 1.570796446004186170012854035955502877351L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2109     TEST_c_c (cacos, 0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2110     TEST_c_c (cacos, 0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2111     TEST_c_c (cacos, -0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2112     TEST_c_c (cacos, -0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2113     TEST_c_c (cacos, 0x1p-23L, 0.0L, 1.570796207585607068449789347324000006847L, -0.0L),
2114     TEST_c_c (cacos, -0x1p-23L, 0.0L, 1.570796446004186170012854035955502877351L, -0.0L),
2115     TEST_c_c (cacos, 0x1p-23L, -0.0L, 1.570796207585607068449789347324000006847L, 0.0L),
2116     TEST_c_c (cacos, -0x1p-23L, -0.0L, 1.570796446004186170012854035955502877351L, 0.0L),
2117     TEST_c_c (cacos, 0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2118     TEST_c_c (cacos, 0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2119     TEST_c_c (cacos, -0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442101L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2120     TEST_c_c (cacos, -0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442101L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2121 #ifndef TEST_FLOAT
2122     TEST_c_c (cacos, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, -8.813735870195429467279863907910458761820e-1L),
2123     TEST_c_c (cacos, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, 8.813735870195429467279863907910458761820e-1L),
2124     TEST_c_c (cacos, -0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, -8.813735870195429467279863907910458761820e-1L),
2125     TEST_c_c (cacos, -0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, 8.813735870195429467279863907910458761820e-1L),
2126     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.895456983915074112227925127005564372844e-8L, -1.171456840272878582596796205397918831268e-8L),
2127     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1p-52L, 3.141592634635223399311902261000251614142L, -1.171456840272878582596796205397918831268e-8L),
2128     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.895456983915074112227925127005564372844e-8L, 1.171456840272878582596796205397918831268e-8L),
2129     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1p-52L, 3.141592634635223399311902261000251614142L, 1.171456840272878582596796205397918831268e-8L),
2130     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2131     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2132     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2133     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2134     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2135     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.141592638688632044614986995416067458693L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2136     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2137     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.141592638688632044614986995416067458693L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2138     TEST_c_c (cacos, 0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2139     TEST_c_c (cacos, 0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2140     TEST_c_c (cacos, -0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2141     TEST_c_c (cacos, -0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2142     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0.0L, 1.490116119384765638786343542550461592240e-8L, -0.0L),
2143     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0.0L, 3.141592638688632044614986995416067458693L, -0.0L),
2144     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0.0L, 1.490116119384765638786343542550461592240e-8L, 0.0L),
2145     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0.0L, 3.141592638688632044614986995416067458693L, 0.0L),
2146 #endif
2147     TEST_c_c (cacos, 0x1p-52L, 0.5L, 1.570796326794896420628589431857911675917L, -4.812118250596034474977589134243772428682e-1L),
2148     TEST_c_c (cacos, 0x1p-52L, -0.5L, 1.570796326794896420628589431857911675917L, 4.812118250596034474977589134243772428682e-1L),
2149     TEST_c_c (cacos, -0x1p-52L, 0.5L, 1.570796326794896817834053951421591208280L, -4.812118250596034474977589134243772428682e-1L),
2150     TEST_c_c (cacos, -0x1p-52L, -0.5L, 1.570796326794896817834053951421591208280L, 4.812118250596034474977589134243772428682e-1L),
2151     TEST_c_c (cacos, 0.5L, 0x1p-52L, 1.047197551196597746154214461093186605110L, -2.563950248511418570403591756798643804971e-16L),
2152     TEST_c_c (cacos, -0.5L, 0x1p-52L, 2.094395102393195492308428922186316279087L, -2.563950248511418570403591756798643804971e-16L),
2153     TEST_c_c (cacos, 0.5L, -0x1p-52L, 1.047197551196597746154214461093186605110L, 2.563950248511418570403591756798643804971e-16L),
2154     TEST_c_c (cacos, -0.5L, -0x1p-52L, 2.094395102393195492308428922186316279087L, 2.563950248511418570403591756798643804971e-16L),
2155 #ifndef TEST_FLOAT
2156     TEST_c_c (cacos, 0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2157     TEST_c_c (cacos, 0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2158     TEST_c_c (cacos, -0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2159     TEST_c_c (cacos, -0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2160     TEST_c_c (cacos, 0.5L, 0x1.fp-1025L, 1.047197551196597746154214461093167628066L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2161     TEST_c_c (cacos, -0.5L, 0x1.fp-1025L, 2.094395102393195492308428922186335256131L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2162     TEST_c_c (cacos, 0.5L, -0x1.fp-1025L, 1.047197551196597746154214461093167628066L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2163     TEST_c_c (cacos, -0.5L, -0x1.fp-1025L, 2.094395102393195492308428922186335256131L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2164 #endif
2165     TEST_c_c (cacos, 0x1p-52L, 0x1p-52L, 1.570796326794896397186716766608443357372L, -2.220446049250313080847263336181677117148e-16L),
2166     TEST_c_c (cacos, 0x1p-52L, -0x1p-52L, 1.570796326794896397186716766608443357372L, 2.220446049250313080847263336181677117148e-16L),
2167     TEST_c_c (cacos, -0x1p-52L, 0x1p-52L, 1.570796326794896841275926616671059526825L, -2.220446049250313080847263336181677117148e-16L),
2168     TEST_c_c (cacos, -0x1p-52L, -0x1p-52L, 1.570796326794896841275926616671059526825L, 2.220446049250313080847263336181677117148e-16L),
2169 #ifndef TEST_FLOAT
2170     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2171     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2172     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2173     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2174     TEST_c_c (cacos, 0x1p-52L, 0x1.fp-1025L, 1.570796326794896397186716766608443357372L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2175     TEST_c_c (cacos, -0x1p-52L, 0x1.fp-1025L, 1.570796326794896841275926616671059526825L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2176     TEST_c_c (cacos, 0x1p-52L, -0x1.fp-1025L, 1.570796326794896397186716766608443357372L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2177     TEST_c_c (cacos, -0x1p-52L, -0x1.fp-1025L, 1.570796326794896841275926616671059526825L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2178 #endif
2179     TEST_c_c (cacos, 0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2180     TEST_c_c (cacos, 0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2181     TEST_c_c (cacos, -0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2182     TEST_c_c (cacos, -0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2183     TEST_c_c (cacos, 0x1p-52L, 0.0L, 1.570796326794896397186716766608443357372L, -0.0L),
2184     TEST_c_c (cacos, -0x1p-52L, 0.0L, 1.570796326794896841275926616671059526825L, -0.0L),
2185     TEST_c_c (cacos, 0x1p-52L, -0.0L, 1.570796326794896397186716766608443357372L, 0.0L),
2186     TEST_c_c (cacos, -0x1p-52L, -0.0L, 1.570796326794896841275926616671059526825L, 0.0L),
2187 #ifndef TEST_FLOAT
2188     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2189     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2190     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2191     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2192 #endif
2193 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2194     TEST_c_c (cacos, 0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, -8.813735870195430251942769895627079569937e-1L),
2195     TEST_c_c (cacos, 0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, 8.813735870195430251942769895627079569937e-1L),
2196     TEST_c_c (cacos, -0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, -8.813735870195430251942769895627079569937e-1L),
2197     TEST_c_c (cacos, -0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, 8.813735870195430251942769895627079569937e-1L),
2198     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1p-63L, 4.188407771167967636741951941902992986043e-10L, -2.588578361325995866221775673638805081337e-10L),
2199     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1p-63L, 3.141592653170952461345846619605307690007L, -2.588578361325995866221775673638805081337e-10L),
2200     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1p-63L, 4.188407771167967636741951941902992986043e-10L, 2.588578361325995866221775673638805081337e-10L),
2201     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1p-63L, 3.141592653170952461345846619605307690007L, 2.588578361325995866221775673638805081337e-10L),
2202 # if LDBL_MIN_EXP <= -16381
2203     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2204     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2205     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2206     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2207     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, -2.472906068161537187835415298076415423459e-4923L),
2208     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.141592653260520984471283759942320330996L, -2.472906068161537187835415298076415423459e-4923L),
2209     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, 2.472906068161537187835415298076415423459e-4923L),
2210     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.141592653260520984471283759942320330996L, 2.472906068161537187835415298076415423459e-4923L),
2211 # endif
2212     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2213     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2214     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2215     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2216     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0.0L, 3.292722539913596233371825532007990724506e-10L, -0.0L),
2217     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0.0L, 3.141592653260520984471283759942320330996L, -0.0L),
2218     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0.0L, 3.292722539913596233371825532007990724506e-10L, 0.0L),
2219     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0.0L, 3.141592653260520984471283759942320330996L, 0.0L),
2220 #endif
2221     TEST_c_c (cacos, 0x1p-63L, 0.5L, 1.570796326794896619134347701278529840650L, -4.812118250596034474977589134243684231373e-1L),
2222     TEST_c_c (cacos, 0x1p-63L, -0.5L, 1.570796326794896619134347701278529840650L, 4.812118250596034474977589134243684231373e-1L),
2223     TEST_c_c (cacos, -0x1p-63L, 0.5L, 1.570796326794896619328295682000973043547L, -4.812118250596034474977589134243684231373e-1L),
2224     TEST_c_c (cacos, -0x1p-63L, -0.5L, 1.570796326794896619328295682000973043547L, 4.812118250596034474977589134243684231373e-1L),
2225     TEST_c_c (cacos, 0.5L, 0x1p-63L, 1.047197551196597746154214461093167628070L, -1.251928832280966098829878787499365228659e-19L),
2226     TEST_c_c (cacos, -0.5L, 0x1p-63L, 2.094395102393195492308428922186335256127L, -1.251928832280966098829878787499365228659e-19L),
2227     TEST_c_c (cacos, 0.5L, -0x1p-63L, 1.047197551196597746154214461093167628070L, 1.251928832280966098829878787499365228659e-19L),
2228     TEST_c_c (cacos, -0.5L, -0x1p-63L, 2.094395102393195492308428922186335256127L, 1.251928832280966098829878787499365228659e-19L),
2229 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2230     TEST_c_c (cacos, 0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2231     TEST_c_c (cacos, 0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2232     TEST_c_c (cacos, -0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2233     TEST_c_c (cacos, -0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2234     TEST_c_c (cacos, 0.5L, 0x1.fp-16385L, 1.047197551196597746154214461093167628066L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2235     TEST_c_c (cacos, -0.5L, 0x1.fp-16385L, 2.094395102393195492308428922186335256131L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2236     TEST_c_c (cacos, 0.5L, -0x1.fp-16385L, 1.047197551196597746154214461093167628066L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2237     TEST_c_c (cacos, -0.5L, -0x1.fp-16385L, 2.094395102393195492308428922186335256131L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2238 #endif
2239     TEST_c_c (cacos, 0x1p-63L, 0x1p-63L, 1.570796326794896619122901474391200998698L, -1.084202172485504434007452800869941711430e-19L),
2240     TEST_c_c (cacos, 0x1p-63L, -0x1p-63L, 1.570796326794896619122901474391200998698L, 1.084202172485504434007452800869941711430e-19L),
2241     TEST_c_c (cacos, -0x1p-63L, 0x1p-63L, 1.570796326794896619339741908888301885499L, -1.084202172485504434007452800869941711430e-19L),
2242     TEST_c_c (cacos, -0x1p-63L, -0x1p-63L, 1.570796326794896619339741908888301885499L, 1.084202172485504434007452800869941711430e-19L),
2243 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2244     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2245     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2246     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2247     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2248     TEST_c_c (cacos, 0x1p-63L, 0x1.fp-16385L, 1.570796326794896619122901474391200998698L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2249     TEST_c_c (cacos, -0x1p-63L, 0x1.fp-16385L, 1.570796326794896619339741908888301885499L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2250     TEST_c_c (cacos, 0x1p-63L, -0x1.fp-16385L, 1.570796326794896619122901474391200998698L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2251     TEST_c_c (cacos, -0x1p-63L, -0x1.fp-16385L, 1.570796326794896619339741908888301885499L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2252 #endif
2253     TEST_c_c (cacos, 0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2254     TEST_c_c (cacos, 0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2255     TEST_c_c (cacos, -0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2256     TEST_c_c (cacos, -0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2257     TEST_c_c (cacos, 0x1p-63L, 0.0L, 1.570796326794896619122901474391200998698L, -0.0L),
2258     TEST_c_c (cacos, -0x1p-63L, 0.0L, 1.570796326794896619339741908888301885499L, -0.0L),
2259     TEST_c_c (cacos, 0x1p-63L, -0.0L, 1.570796326794896619122901474391200998698L, 0.0L),
2260     TEST_c_c (cacos, -0x1p-63L, -0.0L, 1.570796326794896619339741908888301885499L, 0.0L),
2261 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2262     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2263     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2264     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2265     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2266 #endif
2267 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2268     TEST_c_c (cacos, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, -8.813735870195430252326093249797835932642e-1L),
2269     TEST_c_c (cacos, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, 8.813735870195430252326093249797835932642e-1L),
2270     TEST_c_c (cacos, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, -8.813735870195430252326093249797835932642e-1L),
2271     TEST_c_c (cacos, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, 8.813735870195430252326093249797835932642e-1L),
2272     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.997188458999618357060632049675702684031e-16L, -1.234330349600789959989661887846005659983e-16L),
2273     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 3.141592653589793038743797483317667178134L, -1.234330349600789959989661887846005659983e-16L),
2274     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.997188458999618357060632049675702684031e-16L, 1.234330349600789959989661887846005659983e-16L),
2275     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 3.141592653589793038743797483317667178134L, 1.234330349600789959989661887846005659983e-16L),
2276     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2277     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2278     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2279     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2280     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2281     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.141592653589793081453397514901996944859L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2282     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2283     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.141592653589793081453397514901996944859L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2284     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2285     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2286     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2287     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2288     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570092458683775059393382371963565104164e-16L, -0.0L),
2289     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 3.141592653589793081453397514901996944859L, -0.0L),
2290     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570092458683775059393382371963565104164e-16L, 0.0L),
2291     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 3.141592653589793081453397514901996944859L, 0.0L),
2292 #endif
2293     TEST_c_c (cacos, 0x1p-105L, 0.5L, 1.570796326794896619231321691639729392766L, -4.812118250596034474977589134243684231352e-1L),
2294     TEST_c_c (cacos, 0x1p-105L, -0.5L, 1.570796326794896619231321691639729392766L, 4.812118250596034474977589134243684231352e-1L),
2295     TEST_c_c (cacos, -0x1p-105L, 0.5L, 1.570796326794896619231321691639773491431L, -4.812118250596034474977589134243684231352e-1L),
2296     TEST_c_c (cacos, -0x1p-105L, -0.5L, 1.570796326794896619231321691639773491431L, 4.812118250596034474977589134243684231352e-1L),
2297     TEST_c_c (cacos, 0.5L, 0x1p-105L, 1.047197551196597746154214461093167628066L, -2.846556599890768890940941645338546615370e-32L),
2298     TEST_c_c (cacos, -0.5L, 0x1p-105L, 2.094395102393195492308428922186335256131L, -2.846556599890768890940941645338546615370e-32L),
2299     TEST_c_c (cacos, 0.5L, -0x1p-105L, 1.047197551196597746154214461093167628066L, 2.846556599890768890940941645338546615370e-32L),
2300     TEST_c_c (cacos, -0.5L, -0x1p-105L, 2.094395102393195492308428922186335256131L, 2.846556599890768890940941645338546615370e-32L),
2301     TEST_c_c (cacos, 0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639726790195L, -2.465190328815661891911651766508706967729e-32L),
2302     TEST_c_c (cacos, 0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639726790195L, 2.465190328815661891911651766508706967729e-32L),
2303     TEST_c_c (cacos, -0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639776094002L, -2.465190328815661891911651766508706967729e-32L),
2304     TEST_c_c (cacos, -0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639776094002L, 2.465190328815661891911651766508706967729e-32L),
2305 #ifndef TEST_FLOAT
2306     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2307     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2308     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2309     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2310     TEST_c_c (cacos, 0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639726790195L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2311     TEST_c_c (cacos, -0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639776094002L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2312     TEST_c_c (cacos, 0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639726790195L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2313     TEST_c_c (cacos, -0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639776094002L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2314 #endif
2315     TEST_c_c (cacos, 0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2316     TEST_c_c (cacos, 0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2317     TEST_c_c (cacos, -0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2318     TEST_c_c (cacos, -0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2319     TEST_c_c (cacos, 0x1p-105L, 0.0L, 1.570796326794896619231321691639726790195L, -0.0L),
2320     TEST_c_c (cacos, -0x1p-105L, 0.0L, 1.570796326794896619231321691639776094002L, -0.0L),
2321     TEST_c_c (cacos, 0x1p-105L, -0.0L, 1.570796326794896619231321691639726790195L, 0.0L),
2322     TEST_c_c (cacos, -0x1p-105L, -0.0L, 1.570796326794896619231321691639776094002L, 0.0L),
2323 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2324     TEST_c_c (cacos, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, -8.813735870195430252326093249797922409363e-1L),
2325     TEST_c_c (cacos, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, 8.813735870195430252326093249797922409363e-1L),
2326     TEST_c_c (cacos, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, -8.813735870195430252326093249797922409363e-1L),
2327     TEST_c_c (cacos, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, 8.813735870195430252326093249797922409363e-1L),
2328     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.765281878332676474347460257221369818872e-17L, -1.091004200533850618345330909857103457781e-17L),
2329     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 3.141592653589793220809824599952738140723L, -1.091004200533850618345330909857103457781e-17L),
2330     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.765281878332676474347460257221369818872e-17L, 1.091004200533850618345330909857103457781e-17L),
2331     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 3.141592653589793220809824599952738140723L, 1.091004200533850618345330909857103457781e-17L),
2332     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2333     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2334     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2335     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2336     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, -5.867357004219059108790368268900490184505e-4916L),
2337     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 3.141592653589793224584855575465046128902L, -5.867357004219059108790368268900490184505e-4916L),
2338     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, 5.867357004219059108790368268900490184505e-4916L),
2339     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 3.141592653589793224584855575465046128902L, 5.867357004219059108790368268900490184505e-4916L),
2340     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2341     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2342     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2343     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2344     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.387778780781445675529539585113525401762e-17L, -0.0L),
2345     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 3.141592653589793224584855575465046128902L, -0.0L),
2346     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.387778780781445675529539585113525401762e-17L, 0.0L),
2347     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 3.141592653589793224584855575465046128902L, 0.0L),
2348 #endif
2349     TEST_c_c (cacos, 0x1p-112L, 0.5L, 1.570796326794896619231321691639751269838L, -4.812118250596034474977589134243684231352e-1L),
2350     TEST_c_c (cacos, 0x1p-112L, -0.5L, 1.570796326794896619231321691639751269838L, 4.812118250596034474977589134243684231352e-1L),
2351     TEST_c_c (cacos, -0x1p-112L, 0.5L, 1.570796326794896619231321691639751614359L, -4.812118250596034474977589134243684231352e-1L),
2352     TEST_c_c (cacos, -0x1p-112L, -0.5L, 1.570796326794896619231321691639751614359L, 4.812118250596034474977589134243684231352e-1L),
2353     TEST_c_c (cacos, 0.5L, 0x1p-112L, 1.047197551196597746154214461093167628066L, -2.223872343664663196047610660420739543258e-34L),
2354     TEST_c_c (cacos, -0.5L, 0x1p-112L, 2.094395102393195492308428922186335256131L, -2.223872343664663196047610660420739543258e-34L),
2355     TEST_c_c (cacos, 0.5L, -0x1p-112L, 1.047197551196597746154214461093167628066L, 2.223872343664663196047610660420739543258e-34L),
2356     TEST_c_c (cacos, -0.5L, -0x1p-112L, 2.094395102393195492308428922186335256131L, 2.223872343664663196047610660420739543258e-34L),
2357     TEST_c_c (cacos, 0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751249506L, -1.925929944387235853055977942584927318538e-34L),
2358     TEST_c_c (cacos, 0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751249506L, 1.925929944387235853055977942584927318538e-34L),
2359     TEST_c_c (cacos, -0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751634692L, -1.925929944387235853055977942584927318538e-34L),
2360     TEST_c_c (cacos, -0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751634692L, 1.925929944387235853055977942584927318538e-34L),
2361 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2362     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2363     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2364     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2365     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2366     TEST_c_c (cacos, 0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751249506L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2367     TEST_c_c (cacos, -0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751634692L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2368     TEST_c_c (cacos, 0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751249506L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2369     TEST_c_c (cacos, -0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751634692L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2370 #endif
2371     TEST_c_c (cacos, 0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2372     TEST_c_c (cacos, 0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2373     TEST_c_c (cacos, -0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2374     TEST_c_c (cacos, -0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2375     TEST_c_c (cacos, 0x1p-112L, 0.0L, 1.570796326794896619231321691639751249506L, -0.0L),
2376     TEST_c_c (cacos, -0x1p-112L, 0.0L, 1.570796326794896619231321691639751634692L, -0.0L),
2377     TEST_c_c (cacos, 0x1p-112L, -0.0L, 1.570796326794896619231321691639751249506L, 0.0L),
2378     TEST_c_c (cacos, -0x1p-112L, -0.0L, 1.570796326794896619231321691639751634692L, 0.0L),
2379
2380     TEST_c_c (cacos, 0.75L, 1.25L, 1.11752014915610270578240049553777969L, -1.13239363160530819522266333696834467L),
2381     TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L),
2382     END_DATA (cacos)
2383   };
2384
2385 static void
2386 cacos_test (void)
2387 {
2388   errno = 0;
2389   FUNC(cacos) (BUILD_COMPLEX (0.7L, 1.2L));
2390   if (errno == ENOSYS)
2391     /* Function not implemented.  */
2392     return;
2393
2394   START (cacos);
2395   RUN_TEST_LOOP_c_c (cacos, cacos_test_data, );
2396   END (cacos, complex);
2397 }
2398
2399 static const struct test_c_c_data cacosh_test_data[] =
2400   {
2401     START_DATA (cacosh),
2402     TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l),
2403     TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l),
2404     TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l),
2405     TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l),
2406     TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l),
2407     TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l),
2408
2409     TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l),
2410     TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
2411
2412     TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l),
2413     TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l),
2414     TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l),
2415     TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l),
2416     TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l),
2417     TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
2418
2419     TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl),
2420     TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl),
2421     TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl),
2422     TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl),
2423
2424     TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0),
2425     TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero),
2426     TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0),
2427     TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero),
2428
2429     TEST_c_c (cacosh, plus_infty, qnan_value, plus_infty, qnan_value),
2430     TEST_c_c (cacosh, minus_infty, qnan_value, plus_infty, qnan_value),
2431
2432     TEST_c_c (cacosh, 0, qnan_value, qnan_value, qnan_value),
2433     TEST_c_c (cacosh, minus_zero, qnan_value, qnan_value, qnan_value),
2434
2435     TEST_c_c (cacosh, qnan_value, plus_infty, plus_infty, qnan_value),
2436     TEST_c_c (cacosh, qnan_value, minus_infty, plus_infty, qnan_value),
2437
2438     TEST_c_c (cacosh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2439     TEST_c_c (cacosh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2440
2441     TEST_c_c (cacosh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2442     TEST_c_c (cacosh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2443
2444     TEST_c_c (cacosh, qnan_value, qnan_value, qnan_value, qnan_value),
2445
2446     TEST_c_c (cacosh, plus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2447     TEST_c_c (cacosh, minus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2448     TEST_c_c (cacosh, plus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2449     TEST_c_c (cacosh, minus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2450     TEST_c_c (cacosh, plus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2451     TEST_c_c (cacosh, minus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2452     TEST_c_c (cacosh, plus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2453     TEST_c_c (cacosh, minus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2454     TEST_c_c (cacosh, plus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2455     TEST_c_c (cacosh, minus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2456     TEST_c_c (cacosh, plus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2457     TEST_c_c (cacosh, minus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2458
2459     TEST_c_c (cacosh, -1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, M_PIl),
2460     TEST_c_c (cacosh, -1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, -M_PIl),
2461     TEST_c_c (cacosh, -1.0L, plus_zero, plus_zero, M_PIl),
2462     TEST_c_c (cacosh, -1.0L, minus_zero, plus_zero, -M_PIl),
2463     TEST_c_c (cacosh, -0.5L, plus_zero, plus_zero, 2.094395102393195492308428922186335256131L),
2464     TEST_c_c (cacosh, -0.5L, minus_zero, plus_zero, -2.094395102393195492308428922186335256131L),
2465     TEST_c_c (cacosh, 0.5L, plus_zero, plus_zero, 1.047197551196597746154214461093167628066L),
2466     TEST_c_c (cacosh, 0.5L, minus_zero, plus_zero, -1.047197551196597746154214461093167628066L),
2467     TEST_c_c (cacosh, 1.0L, plus_zero, plus_zero, plus_zero),
2468     TEST_c_c (cacosh, 1.0L, minus_zero, plus_zero, minus_zero),
2469     TEST_c_c (cacosh, 1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, plus_zero),
2470     TEST_c_c (cacosh, 1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, minus_zero),
2471
2472     TEST_c_c (cacosh, 0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 8.881784197001252323389053344727730248720e-16L),
2473     TEST_c_c (cacosh, 0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -8.881784197001252323389053344727730248720e-16L),
2474     TEST_c_c (cacosh, -0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 3.141592653589792350284223683154270545292L),
2475     TEST_c_c (cacosh, -0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -3.141592653589792350284223683154270545292L),
2476     TEST_c_c (cacosh, 1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794895731052901991514519103193L),
2477     TEST_c_c (cacosh, -1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794897507409741391764983781004L),
2478     TEST_c_c (cacosh, 1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794895731052901991514519103193L),
2479     TEST_c_c (cacosh, -1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794897507409741391764983781004L),
2480 #ifndef TEST_FLOAT
2481     TEST_c_c (cacosh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
2482     TEST_c_c (cacosh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
2483     TEST_c_c (cacosh, -0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.141592653589793238462643383279502884197L),
2484     TEST_c_c (cacosh, -0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.141592653589793238462643383279502884197L),
2485     TEST_c_c (cacosh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2486     TEST_c_c (cacosh, -1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2487     TEST_c_c (cacosh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2488     TEST_c_c (cacosh, -1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2489 #endif
2490 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2491     TEST_c_c (cacosh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
2492     TEST_c_c (cacosh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
2493     TEST_c_c (cacosh, -0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 3.141592653589793238462643383279502884197L),
2494     TEST_c_c (cacosh, -0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -3.141592653589793238462643383279502884197L),
2495     TEST_c_c (cacosh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2496     TEST_c_c (cacosh, -1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2497     TEST_c_c (cacosh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2498     TEST_c_c (cacosh, -1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2499 #endif
2500     TEST_c_c (cacosh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
2501 #ifndef TEST_FLOAT
2502     TEST_c_c (cacosh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
2503 #endif
2504 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2505     TEST_c_c (cacosh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
2506 #endif
2507     TEST_c_c (cacosh, 0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442097L),
2508     TEST_c_c (cacosh, 0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442097L),
2509     TEST_c_c (cacosh, -0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442100L),
2510     TEST_c_c (cacosh, -0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442100L),
2511     TEST_c_c (cacosh, 1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2512     TEST_c_c (cacosh, -1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884195L),
2513     TEST_c_c (cacosh, 1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2514     TEST_c_c (cacosh, -1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884195L),
2515 #ifndef TEST_FLOAT
2516     TEST_c_c (cacosh, 0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2517     TEST_c_c (cacosh, 0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2518     TEST_c_c (cacosh, -0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2519     TEST_c_c (cacosh, -0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2520     TEST_c_c (cacosh, 1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2521     TEST_c_c (cacosh, -1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2522     TEST_c_c (cacosh, 1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2523     TEST_c_c (cacosh, -1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2524 #endif
2525 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2526     TEST_c_c (cacosh, 0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2527     TEST_c_c (cacosh, 0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2528     TEST_c_c (cacosh, -0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2529     TEST_c_c (cacosh, -0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2530     TEST_c_c (cacosh, 1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2531     TEST_c_c (cacosh, -1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2532     TEST_c_c (cacosh, 1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2533     TEST_c_c (cacosh, -1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2534 #endif
2535     TEST_c_c (cacosh, 0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.221357263937683325603909865564381489366L),
2536     TEST_c_c (cacosh, 0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.221357263937683325603909865564381489366L),
2537     TEST_c_c (cacosh, -0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.920235389652109912858733517715121394831L),
2538     TEST_c_c (cacosh, -0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.920235389652109912858733517715121394831L),
2539     TEST_c_c (cacosh, 1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 6.748888455860063801646649673121744318756e-1L),
2540     TEST_c_c (cacosh, -1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 2.466703808003786858297978415967328452322L),
2541     TEST_c_c (cacosh, 1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -6.748888455860063801646649673121744318756e-1L),
2542     TEST_c_c (cacosh, -1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -2.466703808003786858297978415967328452322L),
2543     TEST_c_c (cacosh, 0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.394493894017929688812643125003661339452L),
2544     TEST_c_c (cacosh, 0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.394493894017929688812643125003661339452L),
2545     TEST_c_c (cacosh, -0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.747098759571863549650000258275841544745L),
2546     TEST_c_c (cacosh, -0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.747098759571863549650000258275841544745L),
2547     TEST_c_c (cacosh, 1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 4.890443302710802929202843732146540079124e-1L),
2548     TEST_c_c (cacosh, -1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 2.652548323318712945542359010064848876285L),
2549     TEST_c_c (cacosh, 1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -4.890443302710802929202843732146540079124e-1L),
2550     TEST_c_c (cacosh, -1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -2.652548323318712945542359010064848876285L),
2551     TEST_c_c (cacosh, 0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.569458417435338878318763342108699202986L),
2552     TEST_c_c (cacosh, 0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.569458417435338878318763342108699202986L),
2553     TEST_c_c (cacosh, -0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.572134236154454360143880041170803681211L),
2554     TEST_c_c (cacosh, -0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.572134236154454360143880041170803681211L),
2555     TEST_c_c (cacosh, 1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 4.349129763101882771258049954181971959031e-2L),
2556     TEST_c_c (cacosh, -1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 3.098101355958774410750062883737683164607L),
2557     TEST_c_c (cacosh, 1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -4.349129763101882771258049954181971959031e-2L),
2558     TEST_c_c (cacosh, -1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -3.098101355958774410750062883737683164607L),
2559     TEST_c_c (cacosh, 0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796325518966635014803151387033957091L),
2560     TEST_c_c (cacosh, 0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796325518966635014803151387033957091L),
2561     TEST_c_c (cacosh, -0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796328070826603447840231892468927106L),
2562     TEST_c_c (cacosh, -0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796328070826603447840231892468927106L),
2563     TEST_c_c (cacosh, 1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 4.247867097467650115899790787875186617316e-5L),
2564     TEST_c_c (cacosh, -1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 3.141550174918818561961484385371624132331L),
2565     TEST_c_c (cacosh, 1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -4.247867097467650115899790787875186617316e-5L),
2566     TEST_c_c (cacosh, -1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -3.141550174918818561961484385371624132331L),
2567     TEST_c_c (cacosh, 0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691638670687364L),
2568     TEST_c_c (cacosh, 0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691638670687364L),
2569     TEST_c_c (cacosh, -0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691640832196834L),
2570     TEST_c_c (cacosh, -0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691640832196834L),
2571     TEST_c_c (cacosh, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 1.236292038260260888664514866456887257525e-15L),
2572     TEST_c_c (cacosh, -1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 3.141592653589792002170605123018614219682L),
2573     TEST_c_c (cacosh, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -1.236292038260260888664514866456887257525e-15L),
2574     TEST_c_c (cacosh, -1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -3.141592653589792002170605123018614219682L),
2575     TEST_c_c (cacosh, 0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442097L),
2576     TEST_c_c (cacosh, 0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442097L),
2577     TEST_c_c (cacosh, -0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442101L),
2578     TEST_c_c (cacosh, -0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442101L),
2579     TEST_c_c (cacosh, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 5.335635276982233498398987585285818977930e-20L),
2580     TEST_c_c (cacosh, -1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 3.141592653589793238409287030509680549213L),
2581     TEST_c_c (cacosh, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -5.335635276982233498398987585285818977930e-20L),
2582     TEST_c_c (cacosh, -1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -3.141592653589793238409287030509680549213L),
2583 #ifndef TEST_FLOAT
2584     TEST_c_c (cacosh, 0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2585     TEST_c_c (cacosh, 0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2586     TEST_c_c (cacosh, -0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2587     TEST_c_c (cacosh, -0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2588     TEST_c_c (cacosh, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
2589     TEST_c_c (cacosh, -1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 3.141592653589793238462643383279502884197L),
2590     TEST_c_c (cacosh, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
2591     TEST_c_c (cacosh, -1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -3.141592653589793238462643383279502884197L),
2592     TEST_c_c (cacosh, 0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2593     TEST_c_c (cacosh, 0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2594     TEST_c_c (cacosh, -0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2595     TEST_c_c (cacosh, -0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2596     TEST_c_c (cacosh, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
2597     TEST_c_c (cacosh, -1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 3.141592653589793238462643383279502884197L),
2598     TEST_c_c (cacosh, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
2599     TEST_c_c (cacosh, -1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -3.141592653589793238462643383279502884197L),
2600 #endif
2601 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2602     TEST_c_c (cacosh, 0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2603     TEST_c_c (cacosh, 0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2604     TEST_c_c (cacosh, -0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2605     TEST_c_c (cacosh, -0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2606     TEST_c_c (cacosh, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
2607     TEST_c_c (cacosh, -1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 3.141592653589793238462643383279502884197L),
2608     TEST_c_c (cacosh, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
2609     TEST_c_c (cacosh, -1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -3.141592653589793238462643383279502884197L),
2610     TEST_c_c (cacosh, 0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2611     TEST_c_c (cacosh, 0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2612     TEST_c_c (cacosh, -0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2613     TEST_c_c (cacosh, -0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2614     TEST_c_c (cacosh, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
2615     TEST_c_c (cacosh, -1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 3.141592653589793238462643383279502884197L),
2616     TEST_c_c (cacosh, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
2617     TEST_c_c (cacosh, -1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -3.141592653589793238462643383279502884197L),
2618 #endif
2619     TEST_c_c (cacosh, 0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796242501204621739026081991856762292L),
2620     TEST_c_c (cacosh, 0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796242501204621739026081991856762292L),
2621     TEST_c_c (cacosh, -0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796411088588616723617301287646121905L),
2622     TEST_c_c (cacosh, -0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796411088588616723617301287646121905L),
2623     TEST_c_c (cacosh, 0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 2.222118384408546368406374049167636760903e-4L),
2624     TEST_c_c (cacosh, -0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 3.141370441751352383825802745874586120521L),
2625     TEST_c_c (cacosh, 0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -2.222118384408546368406374049167636760903e-4L),
2626     TEST_c_c (cacosh, -0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -3.141370441751352383825802745874586120521L),
2627     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442097L),
2628     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442097L),
2629     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442101L),
2630     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442101L),
2631     TEST_c_c (cacosh, 0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 5.830451806317544230969669308596361881467e-36L),
2632     TEST_c_c (cacosh, -0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502878367L),
2633     TEST_c_c (cacosh, 0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -5.830451806317544230969669308596361881467e-36L),
2634     TEST_c_c (cacosh, -0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502878367L),
2635     TEST_c_c (cacosh, 0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2636     TEST_c_c (cacosh, 0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2637     TEST_c_c (cacosh, -0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2638     TEST_c_c (cacosh, -0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2639     TEST_c_c (cacosh, 0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 0.0L),
2640     TEST_c_c (cacosh, -0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502884197L),
2641     TEST_c_c (cacosh, 0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -0.0L),
2642     TEST_c_c (cacosh, -0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502884197L),
2643 #ifndef TEST_FLOAT
2644     TEST_c_c (cacosh, 0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896462222075823262262934288L),
2645     TEST_c_c (cacosh, 0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896462222075823262262934288L),
2646     TEST_c_c (cacosh, -0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896776240567560017239949909L),
2647     TEST_c_c (cacosh, -0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896776240567560017239949909L),
2648     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 9.590301705980041385828904092662391018164e-9L),
2649     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 3.141592643999491532482601997450598791535L),
2650     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -9.590301705980041385828904092662391018164e-9L),
2651     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -3.141592643999491532482601997450598791535L),
2652     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2653     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2654     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2655     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2656     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2657     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2658     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2659     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2660     TEST_c_c (cacosh, 0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2661     TEST_c_c (cacosh, 0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2662     TEST_c_c (cacosh, -0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2663     TEST_c_c (cacosh, -0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2664     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 0.0L),
2665     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2666     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -0.0L),
2667     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2668 #endif
2669 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2670     TEST_c_c (cacosh, 0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619154657020805582738031L),
2671     TEST_c_c (cacosh, 0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619154657020805582738031L),
2672     TEST_c_c (cacosh, -0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619307986362473920146166L),
2673     TEST_c_c (cacosh, -0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619307986362473920146166L),
2674     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 2.119177303101063432592523199680782317447e-10L),
2675     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 3.141592653377875508152537040020250564229L),
2676     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -2.119177303101063432592523199680782317447e-10L),
2677     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -3.141592653377875508152537040020250564229L),
2678 # if LDBL_MIN_EXP <= -16381
2679     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2680     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2681     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2682     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2683     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 1.748608650034385653922359120438227480943e-4923L),
2684     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2685     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -1.748608650034385653922359120438227480943e-4923L),
2686     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2687 # endif
2688     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2689     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2690     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2691     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2692     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 0.0L),
2693     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2694     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -0.0L),
2695     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2696 #endif
2697 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2698     TEST_c_c (cacosh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639742726335L),
2699     TEST_c_c (cacosh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639742726335L),
2700     TEST_c_c (cacosh, -0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639760157863L),
2701     TEST_c_c (cacosh, -0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639760157863L),
2702     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 5.394221422390606848017034778914096659726e-17L),
2703     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 3.141592653589793184520429159373434404027L),
2704     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -5.394221422390606848017034778914096659726e-17L),
2705     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -3.141592653589793184520429159373434404027L),
2706     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2707     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2708     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2709     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2710     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2711     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2712     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2713     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2714     TEST_c_c (cacosh, 0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2715     TEST_c_c (cacosh, 0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2716     TEST_c_c (cacosh, -0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2717     TEST_c_c (cacosh, -0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2718     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 0.0L),
2719     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2720     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -0.0L),
2721     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2722 #endif
2723 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2724     TEST_c_c (cacosh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751374007L),
2725     TEST_c_c (cacosh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751374007L),
2726     TEST_c_c (cacosh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751510190L),
2727     TEST_c_c (cacosh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751510190L),
2728     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 4.767863183742677481693563511435642755521e-18L),
2729     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 3.141592653589793233694780199536825402504L),
2730     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -4.767863183742677481693563511435642755521e-18L),
2731     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -3.141592653589793233694780199536825402504L),
2732     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2733     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2734     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2735     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2736     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 4.148847925325683229178506116378864361396e-4916L),
2737     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2738     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -4.148847925325683229178506116378864361396e-4916L),
2739     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2740     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2741     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2742     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2743     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2744     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 0.0L),
2745     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2746     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -0.0L),
2747     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2748 #endif
2749     TEST_c_c (cacosh, 0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796242501197085295336701632142060969L),
2750     TEST_c_c (cacosh, 0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796242501197085295336701632142060969L),
2751     TEST_c_c (cacosh, -0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796411088596153167306681647360823228L),
2752     TEST_c_c (cacosh, -0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796411088596153167306681647360823228L),
2753     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 4.391863861910487109445187743978204002614e-4L),
2754     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 3.141153467203602189751698864505105063797L),
2755     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -4.391863861910487109445187743978204002614e-4L),
2756     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -3.141153467203602189751698864505105063797L),
2757     TEST_c_c (cacosh, 0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442097L),
2758     TEST_c_c (cacosh, 0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442097L),
2759     TEST_c_c (cacosh, -0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442101L),
2760     TEST_c_c (cacosh, -0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442101L),
2761     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.452669847162035876032494826387364972849e-4L),
2762     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.141247386605077034875040133796864147700L),
2763     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.452669847162035876032494826387364972849e-4L),
2764     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.141247386605077034875040133796864147700L),
2765     TEST_c_c (cacosh, 0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2766     TEST_c_c (cacosh, 0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2767     TEST_c_c (cacosh, -0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2768     TEST_c_c (cacosh, -0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2769     TEST_c_c (cacosh, 0x0.ffffffp0L, 0.0L, 0.0L, 3.452669847162035876032494826387364972849e-4L),
2770     TEST_c_c (cacosh, -0x0.ffffffp0L, 0.0L, 0.0L, 3.141247386605077034875040133796864147700L),
2771     TEST_c_c (cacosh, 0x0.ffffffp0L, -0.0L, 0.0L, -3.452669847162035876032494826387364972849e-4L),
2772     TEST_c_c (cacosh, -0x0.ffffffp0L, -0.0L, 0.0L, -3.141247386605077034875040133796864147700L),
2773     TEST_c_c (cacosh, 0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796220170866625230343643673321150378L),
2774     TEST_c_c (cacosh, 0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796220170866625230343643673321150378L),
2775     TEST_c_c (cacosh, -0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796433418926613232299739606181733819L),
2776     TEST_c_c (cacosh, -0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796433418926613232299739606181733819L),
2777     TEST_c_c (cacosh, 0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 1.047197551196603215914744618665204532273L),
2778     TEST_c_c (cacosh, -0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 2.094395102393190022547898764614298351924L),
2779     TEST_c_c (cacosh, 0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -1.047197551196603215914744618665204532273L),
2780     TEST_c_c (cacosh, -0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -2.094395102393190022547898764614298351924L),
2781     TEST_c_c (cacosh, 0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442096L),
2782     TEST_c_c (cacosh, 0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442096L),
2783     TEST_c_c (cacosh, -0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442101L),
2784     TEST_c_c (cacosh, -0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442101L),
2785     TEST_c_c (cacosh, 0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2786     TEST_c_c (cacosh, -0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2787     TEST_c_c (cacosh, 0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2788     TEST_c_c (cacosh, -0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2789     TEST_c_c (cacosh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796207585607068450636380271254316214L),
2790     TEST_c_c (cacosh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796207585607068450636380271254316214L),
2791     TEST_c_c (cacosh, -0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796446004186170012007003008248567984L),
2792     TEST_c_c (cacosh, -0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796446004186170012007003008248567984L),
2793     TEST_c_c (cacosh, 0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442096L),
2794     TEST_c_c (cacosh, 0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442096L),
2795     TEST_c_c (cacosh, -0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442101L),
2796     TEST_c_c (cacosh, -0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442101L),
2797     TEST_c_c (cacosh, 0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2798     TEST_c_c (cacosh, -0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2799     TEST_c_c (cacosh, 0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2800     TEST_c_c (cacosh, -0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2801     TEST_c_c (cacosh, 0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2802     TEST_c_c (cacosh, 0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2803     TEST_c_c (cacosh, -0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2804     TEST_c_c (cacosh, -0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2805     TEST_c_c (cacosh, 0x1p-23L, 0.0L, 0.0L, 1.570796207585607068449789347324000006847L),
2806     TEST_c_c (cacosh, -0x1p-23L, 0.0L, 0.0L, 1.570796446004186170012854035955502877351L),
2807     TEST_c_c (cacosh, 0x1p-23L, -0.0L, 0.0L, -1.570796207585607068449789347324000006847L),
2808     TEST_c_c (cacosh, -0x1p-23L, -0.0L, 0.0L, -1.570796446004186170012854035955502877351L),
2809     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2810     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2811     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2812     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2813 #ifndef TEST_FLOAT
2814     TEST_c_c (cacosh, 0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896462222075823262236786996L),
2815     TEST_c_c (cacosh, 0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896462222075823262236786996L),
2816     TEST_c_c (cacosh, -0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896776240567560017266097201L),
2817     TEST_c_c (cacosh, -0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896776240567560017266097201L),
2818     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 1.895456983915074112227925127005564372844e-8L),
2819     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 3.141592634635223399311902261000251614142L),
2820     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -1.895456983915074112227925127005564372844e-8L),
2821     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -3.141592634635223399311902261000251614142L),
2822     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2823     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2824     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2825     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2826     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2827     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2828     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2829     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2830     TEST_c_c (cacosh, 0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2831     TEST_c_c (cacosh, 0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2832     TEST_c_c (cacosh, -0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2833     TEST_c_c (cacosh, -0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2834     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0.0L, 0.0L, 1.490116119384765638786343542550461592240e-8L),
2835     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0.0L, 0.0L, 3.141592638688632044614986995416067458693L),
2836     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0.0L, 0.0L, -1.490116119384765638786343542550461592240e-8L),
2837     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0.0L, 0.0L, -3.141592638688632044614986995416067458693L),
2838 #endif
2839     TEST_c_c (cacosh, 0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896420628589431857911675917L),
2840     TEST_c_c (cacosh, 0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896420628589431857911675917L),
2841     TEST_c_c (cacosh, -0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896817834053951421591208280L),
2842     TEST_c_c (cacosh, -0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896817834053951421591208280L),
2843     TEST_c_c (cacosh, 0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 1.047197551196597746154214461093186605110L),
2844     TEST_c_c (cacosh, -0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 2.094395102393195492308428922186316279087L),
2845     TEST_c_c (cacosh, 0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -1.047197551196597746154214461093186605110L),
2846     TEST_c_c (cacosh, -0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -2.094395102393195492308428922186316279087L),
2847 #ifndef TEST_FLOAT
2848     TEST_c_c (cacosh, 0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2849     TEST_c_c (cacosh, 0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2850     TEST_c_c (cacosh, -0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2851     TEST_c_c (cacosh, -0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2852     TEST_c_c (cacosh, 0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
2853     TEST_c_c (cacosh, -0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
2854     TEST_c_c (cacosh, 0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
2855     TEST_c_c (cacosh, -0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
2856 #endif
2857     TEST_c_c (cacosh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896397186716766608443357372L),
2858     TEST_c_c (cacosh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896397186716766608443357372L),
2859     TEST_c_c (cacosh, -0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896841275926616671059526825L),
2860     TEST_c_c (cacosh, -0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896841275926616671059526825L),
2861 #ifndef TEST_FLOAT
2862     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2863     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2864     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2865     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2866     TEST_c_c (cacosh, 0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
2867     TEST_c_c (cacosh, -0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
2868     TEST_c_c (cacosh, 0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
2869     TEST_c_c (cacosh, -0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
2870 #endif
2871     TEST_c_c (cacosh, 0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2872     TEST_c_c (cacosh, 0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2873     TEST_c_c (cacosh, -0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2874     TEST_c_c (cacosh, -0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2875     TEST_c_c (cacosh, 0x1p-52L, 0.0L, 0.0L, 1.570796326794896397186716766608443357372L),
2876     TEST_c_c (cacosh, -0x1p-52L, 0.0L, 0.0L, 1.570796326794896841275926616671059526825L),
2877     TEST_c_c (cacosh, 0x1p-52L, -0.0L, 0.0L, -1.570796326794896397186716766608443357372L),
2878     TEST_c_c (cacosh, -0x1p-52L, -0.0L, 0.0L, -1.570796326794896841275926616671059526825L),
2879 #ifndef TEST_FLOAT
2880     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2881     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2882     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2883     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2884 #endif
2885 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2886     TEST_c_c (cacosh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619154657020805582738025L),
2887     TEST_c_c (cacosh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619154657020805582738025L),
2888     TEST_c_c (cacosh, -0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619307986362473920146173L),
2889     TEST_c_c (cacosh, -0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619307986362473920146173L),
2890     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 4.188407771167967636741951941902992986043e-10L),
2891     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 3.141592653170952461345846619605307690007L),
2892     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -4.188407771167967636741951941902992986043e-10L),
2893     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -3.141592653170952461345846619605307690007L),
2894 # if LDBL_MIN_EXP <= -16381
2895     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2896     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2897     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2898     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2899     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.292722539913596233371825532007990724506e-10L),
2900     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.141592653260520984471283759942320330996L),
2901     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.292722539913596233371825532007990724506e-10L),
2902     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.141592653260520984471283759942320330996L),
2903 # endif
2904     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2905     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2906     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2907     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2908     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.292722539913596233371825532007990724506e-10L),
2909     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.141592653260520984471283759942320330996L),
2910     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.292722539913596233371825532007990724506e-10L),
2911     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.141592653260520984471283759942320330996L),
2912 #endif
2913     TEST_c_c (cacosh, 0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619134347701278529840650L),
2914     TEST_c_c (cacosh, 0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619134347701278529840650L),
2915     TEST_c_c (cacosh, -0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619328295682000973043547L),
2916     TEST_c_c (cacosh, -0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619328295682000973043547L),
2917     TEST_c_c (cacosh, 0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 1.047197551196597746154214461093167628070L),
2918     TEST_c_c (cacosh, -0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 2.094395102393195492308428922186335256127L),
2919     TEST_c_c (cacosh, 0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -1.047197551196597746154214461093167628070L),
2920     TEST_c_c (cacosh, -0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -2.094395102393195492308428922186335256127L),
2921 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2922     TEST_c_c (cacosh, 0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2923     TEST_c_c (cacosh, 0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2924     TEST_c_c (cacosh, -0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2925     TEST_c_c (cacosh, -0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2926     TEST_c_c (cacosh, 0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
2927     TEST_c_c (cacosh, -0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
2928     TEST_c_c (cacosh, 0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
2929     TEST_c_c (cacosh, -0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
2930 #endif
2931     TEST_c_c (cacosh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619122901474391200998698L),
2932     TEST_c_c (cacosh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619122901474391200998698L),
2933     TEST_c_c (cacosh, -0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619339741908888301885499L),
2934     TEST_c_c (cacosh, -0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619339741908888301885499L),
2935 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2936     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2937     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2938     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2939     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2940     TEST_c_c (cacosh, 0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
2941     TEST_c_c (cacosh, -0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
2942     TEST_c_c (cacosh, 0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
2943     TEST_c_c (cacosh, -0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
2944 #endif
2945     TEST_c_c (cacosh, 0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2946     TEST_c_c (cacosh, 0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2947     TEST_c_c (cacosh, -0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2948     TEST_c_c (cacosh, -0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2949     TEST_c_c (cacosh, 0x1p-63L, 0.0L, 0.0L, 1.570796326794896619122901474391200998698L),
2950     TEST_c_c (cacosh, -0x1p-63L, 0.0L, 0.0L, 1.570796326794896619339741908888301885499L),
2951     TEST_c_c (cacosh, 0x1p-63L, -0.0L, 0.0L, -1.570796326794896619122901474391200998698L),
2952     TEST_c_c (cacosh, -0x1p-63L, -0.0L, 0.0L, -1.570796326794896619339741908888301885499L),
2953 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2954     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2955     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2956     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2957     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2958 #endif
2959 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2960     TEST_c_c (cacosh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639734010571L),
2961     TEST_c_c (cacosh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639734010571L),
2962     TEST_c_c (cacosh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639768873627L),
2963     TEST_c_c (cacosh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639768873627L),
2964     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 1.997188458999618357060632049675702684031e-16L),
2965     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 3.141592653589793038743797483317667178134L),
2966     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -1.997188458999618357060632049675702684031e-16L),
2967     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -3.141592653589793038743797483317667178134L),
2968     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
2969     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
2970     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
2971     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
2972     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2973     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2974     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2975     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2976     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
2977     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
2978     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
2979     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
2980     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 1.570092458683775059393382371963565104164e-16L),
2981     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 3.141592653589793081453397514901996944859L),
2982     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -1.570092458683775059393382371963565104164e-16L),
2983     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -3.141592653589793081453397514901996944859L),
2984 #endif
2985     TEST_c_c (cacosh, 0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639729392766L),
2986     TEST_c_c (cacosh, 0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639729392766L),
2987     TEST_c_c (cacosh, -0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639773491431L),
2988     TEST_c_c (cacosh, -0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639773491431L),
2989     TEST_c_c (cacosh, 0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 1.047197551196597746154214461093167628066L),
2990     TEST_c_c (cacosh, -0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 2.094395102393195492308428922186335256131L),
2991     TEST_c_c (cacosh, 0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -1.047197551196597746154214461093167628066L),
2992     TEST_c_c (cacosh, -0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -2.094395102393195492308428922186335256131L),
2993     TEST_c_c (cacosh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639726790195L),
2994     TEST_c_c (cacosh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639726790195L),
2995     TEST_c_c (cacosh, -0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639776094002L),
2996     TEST_c_c (cacosh, -0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639776094002L),
2997 #ifndef TEST_FLOAT
2998     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
2999     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3000     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3001     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3002     TEST_c_c (cacosh, 0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3003     TEST_c_c (cacosh, -0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3004     TEST_c_c (cacosh, 0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3005     TEST_c_c (cacosh, -0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3006 #endif
3007     TEST_c_c (cacosh, 0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3008     TEST_c_c (cacosh, 0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3009     TEST_c_c (cacosh, -0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3010     TEST_c_c (cacosh, -0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3011     TEST_c_c (cacosh, 0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639726790195L),
3012     TEST_c_c (cacosh, -0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639776094002L),
3013     TEST_c_c (cacosh, 0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639726790195L),
3014     TEST_c_c (cacosh, -0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639776094002L),
3015 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3016     TEST_c_c (cacosh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751305915L),
3017     TEST_c_c (cacosh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751305915L),
3018     TEST_c_c (cacosh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751578282L),
3019     TEST_c_c (cacosh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751578282L),
3020     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 1.765281878332676474347460257221369818872e-17L),
3021     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 3.141592653589793220809824599952738140723L),
3022     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -1.765281878332676474347460257221369818872e-17L),
3023     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -3.141592653589793220809824599952738140723L),
3024     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3025     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3026     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3027     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3028     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 1.387778780781445675529539585113525401762e-17L),
3029     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 3.141592653589793224584855575465046128902L),
3030     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -1.387778780781445675529539585113525401762e-17L),
3031     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -3.141592653589793224584855575465046128902L),
3032     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3033     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3034     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3035     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3036     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 1.387778780781445675529539585113525401762e-17L),
3037     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 3.141592653589793224584855575465046128902L),
3038     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -1.387778780781445675529539585113525401762e-17L),
3039     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -3.141592653589793224584855575465046128902L),
3040 #endif
3041     TEST_c_c (cacosh, 0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751269838L),
3042     TEST_c_c (cacosh, 0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751269838L),
3043     TEST_c_c (cacosh, -0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751614359L),
3044     TEST_c_c (cacosh, -0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751614359L),
3045     TEST_c_c (cacosh, 0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 1.047197551196597746154214461093167628066L),
3046     TEST_c_c (cacosh, -0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 2.094395102393195492308428922186335256131L),
3047     TEST_c_c (cacosh, 0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -1.047197551196597746154214461093167628066L),
3048     TEST_c_c (cacosh, -0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -2.094395102393195492308428922186335256131L),
3049     TEST_c_c (cacosh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751249506L),
3050     TEST_c_c (cacosh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751249506L),
3051     TEST_c_c (cacosh, -0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751634692L),
3052     TEST_c_c (cacosh, -0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751634692L),
3053 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3054     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3055     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3056     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3057     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3058     TEST_c_c (cacosh, 0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3059     TEST_c_c (cacosh, -0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3060     TEST_c_c (cacosh, 0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3061     TEST_c_c (cacosh, -0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3062 #endif
3063     TEST_c_c (cacosh, 0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3064     TEST_c_c (cacosh, 0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3065     TEST_c_c (cacosh, -0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3066     TEST_c_c (cacosh, -0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3067     TEST_c_c (cacosh, 0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751249506L),
3068     TEST_c_c (cacosh, -0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751634692L),
3069     TEST_c_c (cacosh, 0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751249506L),
3070     TEST_c_c (cacosh, -0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751634692L),
3071
3072     TEST_c_c (cacosh, 0.75L, 1.25L, 1.13239363160530819522266333696834467L, 1.11752014915610270578240049553777969L),
3073     TEST_c_c (cacosh, -2, -3, 1.9833870299165354323470769028940395L, -2.1414491111159960199416055713254211L),
3074     END_DATA (cacosh)
3075   };
3076
3077 static void
3078 cacosh_test (void)
3079 {
3080   errno = 0;
3081   FUNC(cacosh) (BUILD_COMPLEX (0.7L, 1.2L));
3082   if (errno == ENOSYS)
3083     /* Function not implemented.  */
3084     return;
3085
3086   START (cacosh);
3087   RUN_TEST_LOOP_c_c (cacosh, cacosh_test_data, );
3088   END (cacosh, complex);
3089 }
3090
3091
3092 static void
3093 carg_test (void)
3094 {
3095   START (carg);
3096
3097   /* carg (x + iy) is specified as atan2 (y, x) */
3098
3099   /* carg (x + i 0) == 0 for x > 0.  */
3100   TEST_c_f (carg, 2.0, 0, 0);
3101   /* carg (x - i 0) == -0 for x > 0.  */
3102   TEST_c_f (carg, 2.0, minus_zero, minus_zero);
3103
3104   TEST_c_f (carg, 0, 0, 0);
3105   TEST_c_f (carg, 0, minus_zero, minus_zero);
3106
3107   /* carg (x + i 0) == +pi for x < 0.  */
3108   TEST_c_f (carg, -2.0, 0, M_PIl);
3109
3110   /* carg (x - i 0) == -pi for x < 0.  */
3111   TEST_c_f (carg, -2.0, minus_zero, -M_PIl);
3112
3113   TEST_c_f (carg, minus_zero, 0, M_PIl);
3114   TEST_c_f (carg, minus_zero, minus_zero, -M_PIl);
3115
3116   /* carg (+0 + i y) == pi/2 for y > 0.  */
3117   TEST_c_f (carg, 0, 2.0, M_PI_2l);
3118
3119   /* carg (-0 + i y) == pi/2 for y > 0.  */
3120   TEST_c_f (carg, minus_zero, 2.0, M_PI_2l);
3121
3122   /* carg (+0 + i y) == -pi/2 for y < 0.  */
3123   TEST_c_f (carg, 0, -2.0, -M_PI_2l);
3124
3125   /* carg (-0 + i y) == -pi/2 for y < 0.  */
3126   TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l);
3127
3128   /* carg (inf + i y) == +0 for finite y > 0.  */
3129   TEST_c_f (carg, plus_infty, 2.0, 0);
3130
3131   /* carg (inf + i y) == -0 for finite y < 0.  */
3132   TEST_c_f (carg, plus_infty, -2.0, minus_zero);
3133
3134   /* carg(x + i inf) == pi/2 for finite x.  */
3135   TEST_c_f (carg, 10.0, plus_infty, M_PI_2l);
3136
3137   /* carg(x - i inf) == -pi/2 for finite x.  */
3138   TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l);
3139
3140   /* carg (-inf + i y) == +pi for finite y > 0.  */
3141   TEST_c_f (carg, minus_infty, 10.0, M_PIl);
3142
3143   /* carg (-inf + i y) == -pi for finite y < 0.  */
3144   TEST_c_f (carg, minus_infty, -10.0, -M_PIl);
3145
3146   TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l);
3147
3148   TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l);
3149
3150   TEST_c_f (carg, minus_infty, plus_infty, M_PI_34l);
3151
3152   TEST_c_f (carg, minus_infty, minus_infty, -M_PI_34l);
3153
3154   TEST_c_f (carg, qnan_value, qnan_value, qnan_value);
3155
3156   END (carg);
3157 }
3158
3159 static const struct test_c_c_data casin_test_data[] =
3160   {
3161     START_DATA (casin),
3162     TEST_c_c (casin, 0, 0, 0.0, 0.0),
3163     TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0),
3164     TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero),
3165     TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero),
3166
3167     TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty),
3168     TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty),
3169     TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty),
3170     TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty),
3171
3172     TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty),
3173     TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty),
3174     TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty),
3175     TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty),
3176     TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty),
3177     TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty),
3178     TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty),
3179     TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty),
3180
3181     TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty),
3182     TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty),
3183     TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty),
3184     TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty),
3185
3186     TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty),
3187     TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty),
3188     TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty),
3189     TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty),
3190
3191     TEST_c_c (casin, qnan_value, plus_infty, qnan_value, plus_infty),
3192     TEST_c_c (casin, qnan_value, minus_infty, qnan_value, minus_infty),
3193
3194     TEST_c_c (casin, 0.0, qnan_value, 0.0, qnan_value),
3195     TEST_c_c (casin, minus_zero, qnan_value, minus_zero, qnan_value),
3196
3197     TEST_c_c (casin, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3198     TEST_c_c (casin, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3199
3200     TEST_c_c (casin, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3201     TEST_c_c (casin, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3202
3203     TEST_c_c (casin, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3204     TEST_c_c (casin, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3205
3206     TEST_c_c (casin, qnan_value, qnan_value, qnan_value, qnan_value),
3207
3208     TEST_c_c (casin, plus_zero, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L),
3209     TEST_c_c (casin, minus_zero, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L),
3210     TEST_c_c (casin, plus_zero, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L),
3211     TEST_c_c (casin, minus_zero, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L),
3212     TEST_c_c (casin, plus_zero, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L),
3213     TEST_c_c (casin, minus_zero, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L),
3214     TEST_c_c (casin, plus_zero, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L),
3215     TEST_c_c (casin, minus_zero, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L),
3216     TEST_c_c (casin, plus_zero, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L),
3217     TEST_c_c (casin, minus_zero, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L),
3218     TEST_c_c (casin, plus_zero, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L),
3219     TEST_c_c (casin, minus_zero, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L),
3220
3221     TEST_c_c (casin, -1.5L, plus_zero, -M_PI_2l, 0.9624236501192068949955178268487368462704L),
3222     TEST_c_c (casin, -1.5L, minus_zero, -M_PI_2l, -0.9624236501192068949955178268487368462704L),
3223     TEST_c_c (casin, -1.0L, plus_zero, -M_PI_2l, plus_zero),
3224     TEST_c_c (casin, -1.0L, minus_zero, -M_PI_2l, minus_zero),
3225     TEST_c_c (casin, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L, plus_zero),
3226     TEST_c_c (casin, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L, minus_zero),
3227     TEST_c_c (casin, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L, plus_zero),
3228     TEST_c_c (casin, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L, minus_zero),
3229     TEST_c_c (casin, 1.0L, plus_zero, M_PI_2l, plus_zero),
3230     TEST_c_c (casin, 1.0L, minus_zero, M_PI_2l, minus_zero),
3231     TEST_c_c (casin, 1.5L, plus_zero, M_PI_2l, 0.9624236501192068949955178268487368462704L),
3232     TEST_c_c (casin, 1.5L, minus_zero, M_PI_2l, -0.9624236501192068949955178268487368462704L),
3233
3234     TEST_c_c (casin, 0x1p50L, 1.0L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3235     TEST_c_c (casin, 0x1p50L, -1.0L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3236     TEST_c_c (casin, -0x1p50L, 1.0L, -1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3237     TEST_c_c (casin, -0x1p50L, -1.0L, -1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3238     TEST_c_c (casin, 1.0L, 0x1p50L, 8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3239     TEST_c_c (casin, -1.0L, 0x1p50L, -8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3240     TEST_c_c (casin, 1.0L, -0x1p50L, 8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3241     TEST_c_c (casin, -1.0L, -0x1p50L, -8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3242 #ifndef TEST_FLOAT
3243     TEST_c_c (casin, 0x1p500L, 1.0L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3244     TEST_c_c (casin, 0x1p500L, -1.0L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3245     TEST_c_c (casin, -0x1p500L, 1.0L, -1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3246     TEST_c_c (casin, -0x1p500L, -1.0L, -1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3247     TEST_c_c (casin, 1.0L, 0x1p500L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3248     TEST_c_c (casin, -1.0L, 0x1p500L, -3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3249     TEST_c_c (casin, 1.0L, -0x1p500L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3250     TEST_c_c (casin, -1.0L, -0x1p500L, -3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3251 #endif
3252 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3253     TEST_c_c (casin, 0x1p5000L, 1.0L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3254     TEST_c_c (casin, 0x1p5000L, -1.0L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3255     TEST_c_c (casin, -0x1p5000L, 1.0L, -1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3256     TEST_c_c (casin, -0x1p5000L, -1.0L, -1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3257     TEST_c_c (casin, 1.0L, 0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3258     TEST_c_c (casin, -1.0L, 0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3259     TEST_c_c (casin, 1.0L, -0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3260     TEST_c_c (casin, -1.0L, -0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3261 #endif
3262
3263     TEST_c_c (casin, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, 8.973081118419833726837456344608533993585e1L),
3264 #ifndef TEST_FLOAT
3265     TEST_c_c (casin, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, 7.107906849659093345062145442726115449315e2L),
3266 #endif
3267 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3268     TEST_c_c (casin, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, 1.135753137836666928715489992987020363057e4L),
3269 #endif
3270
3271     TEST_c_c (casin, 0x1.fp-129L, 1.5L, 1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3272     TEST_c_c (casin, 0x1.fp-129L, -1.5L, 1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3273     TEST_c_c (casin, -0x1.fp-129L, 1.5L, -1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3274     TEST_c_c (casin, -0x1.fp-129L, -1.5L, -1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3275     TEST_c_c (casin, 1.5L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3276     TEST_c_c (casin, -1.5L, 0x1.fp-129L, -1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3277     TEST_c_c (casin, 1.5L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3278     TEST_c_c (casin, -1.5L, -0x1.fp-129L, -1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3279 #ifndef TEST_FLOAT
3280     TEST_c_c (casin, 0x1.fp-1025L, 1.5L, 2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3281     TEST_c_c (casin, 0x1.fp-1025L, -1.5L, 2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3282     TEST_c_c (casin, -0x1.fp-1025L, 1.5L, -2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3283     TEST_c_c (casin, -0x1.fp-1025L, -1.5L, -2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3284     TEST_c_c (casin, 1.5L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3285     TEST_c_c (casin, -1.5L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3286     TEST_c_c (casin, 1.5L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3287     TEST_c_c (casin, -1.5L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3288 #endif
3289 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3290     TEST_c_c (casin, 0x1.fp-16385L, 1.5L, 4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3291     TEST_c_c (casin, 0x1.fp-16385L, -1.5L, 4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3292     TEST_c_c (casin, -0x1.fp-16385L, 1.5L, -4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3293     TEST_c_c (casin, -0x1.fp-16385L, -1.5L, -4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3294     TEST_c_c (casin, 1.5L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3295     TEST_c_c (casin, -1.5L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3296     TEST_c_c (casin, 1.5L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3297     TEST_c_c (casin, -1.5L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3298 #endif
3299
3300     TEST_c_c (casin, 0.5L, 1.0L, 3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3301     TEST_c_c (casin, 0.5L, -1.0L, 3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3302     TEST_c_c (casin, -0.5L, 1.0L, -3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3303     TEST_c_c (casin, -0.5L, -1.0L, -3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3304     TEST_c_c (casin, 1.0L, 0.5L, 8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3305     TEST_c_c (casin, -1.0L, 0.5L, -8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3306     TEST_c_c (casin, 1.0L, -0.5L, 8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3307     TEST_c_c (casin, -1.0L, -0.5L, -8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3308     TEST_c_c (casin, 0.25L, 1.0L, 1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3309     TEST_c_c (casin, 0.25L, -1.0L, 1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3310     TEST_c_c (casin, -0.25L, 1.0L, -1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3311     TEST_c_c (casin, -0.25L, -1.0L, -1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3312     TEST_c_c (casin, 1.0L, 0.25L, 1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3313     TEST_c_c (casin, -1.0L, 0.25L, -1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3314     TEST_c_c (casin, 1.0L, -0.25L, 1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3315     TEST_c_c (casin, -1.0L, -0.25L, -1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3316     TEST_c_c (casin, 0x1.fp-10L, 1.0L, 1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3317     TEST_c_c (casin, 0x1.fp-10L, -1.0L, 1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3318     TEST_c_c (casin, -0x1.fp-10L, 1.0L, -1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3319     TEST_c_c (casin, -0x1.fp-10L, -1.0L, -1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3320     TEST_c_c (casin, 1.0L, 0x1.fp-10L, 1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3321     TEST_c_c (casin, -1.0L, 0x1.fp-10L, -1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3322     TEST_c_c (casin, 1.0L, -0x1.fp-10L, 1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3323     TEST_c_c (casin, -1.0L, -0x1.fp-10L, -1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3324     TEST_c_c (casin, 0x1.fp-30L, 1.0L, 1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3325     TEST_c_c (casin, 0x1.fp-30L, -1.0L, 1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3326     TEST_c_c (casin, -0x1.fp-30L, 1.0L, -1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3327     TEST_c_c (casin, -0x1.fp-30L, -1.0L, -1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3328     TEST_c_c (casin, 1.0L, 0x1.fp-30L, 1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3329     TEST_c_c (casin, -1.0L, 0x1.fp-30L, -1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3330     TEST_c_c (casin, 1.0L, -0x1.fp-30L, 1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3331     TEST_c_c (casin, -1.0L, -0x1.fp-30L, -1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3332     TEST_c_c (casin, 0x1.fp-100L, 1.0L, 1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3333     TEST_c_c (casin, 0x1.fp-100L, -1.0L, 1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3334     TEST_c_c (casin, -0x1.fp-100L, 1.0L, -1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3335     TEST_c_c (casin, -0x1.fp-100L, -1.0L, -1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3336     TEST_c_c (casin, 1.0L, 0x1.fp-100L, 1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3337     TEST_c_c (casin, -1.0L, 0x1.fp-100L, -1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3338     TEST_c_c (casin, 1.0L, -0x1.fp-100L, 1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3339     TEST_c_c (casin, -1.0L, -0x1.fp-100L, -1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3340     TEST_c_c (casin, 0x1.fp-129L, 1.0L, 2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3341     TEST_c_c (casin, 0x1.fp-129L, -1.0L, 2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3342     TEST_c_c (casin, -0x1.fp-129L, 1.0L, -2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3343     TEST_c_c (casin, -0x1.fp-129L, -1.0L, -2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3344     TEST_c_c (casin, 1.0L, 0x1.fp-129L, 1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3345     TEST_c_c (casin, -1.0L, 0x1.fp-129L, -1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3346     TEST_c_c (casin, 1.0L, -0x1.fp-129L, 1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3347     TEST_c_c (casin, -1.0L, -0x1.fp-129L, -1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3348 #ifndef TEST_FLOAT
3349     TEST_c_c (casin, 0x1.fp-1000L, 1.0L, 1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3350     TEST_c_c (casin, 0x1.fp-1000L, -1.0L, 1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3351     TEST_c_c (casin, -0x1.fp-1000L, 1.0L, -1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3352     TEST_c_c (casin, -0x1.fp-1000L, -1.0L, -1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3353     TEST_c_c (casin, 1.0L, 0x1.fp-1000L, 1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3354     TEST_c_c (casin, -1.0L, 0x1.fp-1000L, -1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3355     TEST_c_c (casin, 1.0L, -0x1.fp-1000L, 1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3356     TEST_c_c (casin, -1.0L, -0x1.fp-1000L, -1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3357     TEST_c_c (casin, 0x1.fp-1025L, 1.0L, 3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3358     TEST_c_c (casin, 0x1.fp-1025L, -1.0L, 3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3359     TEST_c_c (casin, -0x1.fp-1025L, 1.0L, -3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3360     TEST_c_c (casin, -0x1.fp-1025L, -1.0L, -3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3361     TEST_c_c (casin, 1.0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3362     TEST_c_c (casin, -1.0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3363     TEST_c_c (casin, 1.0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3364     TEST_c_c (casin, -1.0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3365 #endif
3366 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3367     TEST_c_c (casin, 0x1.fp-10000L, 1.0L, 6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3368     TEST_c_c (casin, 0x1.fp-10000L, -1.0L, 6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3369     TEST_c_c (casin, -0x1.fp-10000L, 1.0L, -6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3370     TEST_c_c (casin, -0x1.fp-10000L, -1.0L, -6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3371     TEST_c_c (casin, 1.0L, 0x1.fp-10000L, 1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3372     TEST_c_c (casin, -1.0L, 0x1.fp-10000L, -1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3373     TEST_c_c (casin, 1.0L, -0x1.fp-10000L, 1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3374     TEST_c_c (casin, -1.0L, -0x1.fp-10000L, -1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3375     TEST_c_c (casin, 0x1.fp-16385L, 1.0L, 5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3376     TEST_c_c (casin, 0x1.fp-16385L, -1.0L, 5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3377     TEST_c_c (casin, -0x1.fp-16385L, 1.0L, -5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3378     TEST_c_c (casin, -0x1.fp-16385L, -1.0L, -5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3379     TEST_c_c (casin, 1.0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3380     TEST_c_c (casin, -1.0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3381     TEST_c_c (casin, 1.0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3382     TEST_c_c (casin, -1.0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3383 #endif
3384
3385     TEST_c_c (casin, 0x1p-23L, 0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3386     TEST_c_c (casin, 0x1p-23L, -0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3387     TEST_c_c (casin, -0x1p-23L, 0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3388     TEST_c_c (casin, -0x1p-23L, -0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3389     TEST_c_c (casin, 0x1.000002p0L, 0x1p-23L, 1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3390     TEST_c_c (casin, -0x1.000002p0L, 0x1p-23L, -1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3391     TEST_c_c (casin, 0x1.000002p0L, -0x1p-23L, 1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3392     TEST_c_c (casin, -0x1.000002p0L, -0x1p-23L, -1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3393     TEST_c_c (casin, 0x1.fp-129L, 0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3394     TEST_c_c (casin, 0x1.fp-129L, -0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3395     TEST_c_c (casin, -0x1.fp-129L, 0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3396     TEST_c_c (casin, -0x1.fp-129L, -0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3397     TEST_c_c (casin, 0x1.000002p0L, 0x1.fp-129L, 1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3398     TEST_c_c (casin, -0x1.000002p0L, 0x1.fp-129L, -1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3399     TEST_c_c (casin, 0x1.000002p0L, -0x1.fp-129L, 1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3400     TEST_c_c (casin, -0x1.000002p0L, -0x1.fp-129L, -1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3401     TEST_c_c (casin, 0.0L, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L),
3402     TEST_c_c (casin, 0.0L, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L),
3403     TEST_c_c (casin, -0.0L, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L),
3404     TEST_c_c (casin, -0.0L, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L),
3405     TEST_c_c (casin, 0x1.000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3406     TEST_c_c (casin, -0x1.000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3407     TEST_c_c (casin, 0x1.000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3408     TEST_c_c (casin, -0x1.000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3409 #ifndef TEST_FLOAT
3410     TEST_c_c (casin, 0x1p-52L, 0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3411     TEST_c_c (casin, 0x1p-52L, -0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3412     TEST_c_c (casin, -0x1p-52L, 0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3413     TEST_c_c (casin, -0x1p-52L, -0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3414     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1p-52L, 1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3415     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1p-52L, -1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3416     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1p-52L, 1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3417     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1p-52L, -1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3418     TEST_c_c (casin, 0x1.fp-1025L, 0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3419     TEST_c_c (casin, 0x1.fp-1025L, -0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3420     TEST_c_c (casin, -0x1.fp-1025L, 0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3421     TEST_c_c (casin, -0x1.fp-1025L, -0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3422     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3423     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3424     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3425     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3426     TEST_c_c (casin, 0.0L, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L),
3427     TEST_c_c (casin, 0.0L, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L),
3428     TEST_c_c (casin, -0.0L, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L),
3429     TEST_c_c (casin, -0.0L, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L),
3430     TEST_c_c (casin, 0x1.0000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3431     TEST_c_c (casin, -0x1.0000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3432     TEST_c_c (casin, 0x1.0000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3433     TEST_c_c (casin, -0x1.0000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3434 #endif
3435 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3436     TEST_c_c (casin, 0x1p-63L, 0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3437     TEST_c_c (casin, 0x1p-63L, -0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3438     TEST_c_c (casin, -0x1p-63L, 0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3439     TEST_c_c (casin, -0x1p-63L, -0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3440     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1p-63L, 1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3441     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1p-63L, -1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3442     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1p-63L, 1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3443     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1p-63L, -1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3444 # if LDBL_MIN_EXP <= -16381
3445     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3446     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3447     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3448     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3449     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3450     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3451     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3452     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3453 # endif
3454     TEST_c_c (casin, 0.0L, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L),
3455     TEST_c_c (casin, 0.0L, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L),
3456     TEST_c_c (casin, -0.0L, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L),
3457     TEST_c_c (casin, -0.0L, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L),
3458     TEST_c_c (casin, 0x1.0000000000000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3459     TEST_c_c (casin, -0x1.0000000000000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3460     TEST_c_c (casin, 0x1.0000000000000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3461     TEST_c_c (casin, -0x1.0000000000000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3462 #endif
3463 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3464     TEST_c_c (casin, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3465     TEST_c_c (casin, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3466     TEST_c_c (casin, -0x1p-106L, 0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3467     TEST_c_c (casin, -0x1p-106L, -0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3468     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1p-106L, 1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3469     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1p-106L, -1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3470     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1p-106L, 1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3471     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1p-106L, -1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3472     TEST_c_c (casin, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3473     TEST_c_c (casin, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3474     TEST_c_c (casin, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3475     TEST_c_c (casin, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3476     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3477     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3478     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3479     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3480     TEST_c_c (casin, 0.0L, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L),
3481     TEST_c_c (casin, 0.0L, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L),
3482     TEST_c_c (casin, -0.0L, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L),
3483     TEST_c_c (casin, -0.0L, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L),
3484     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3485     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3486     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3487     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3488 #endif
3489 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3490     TEST_c_c (casin, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3491     TEST_c_c (casin, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3492     TEST_c_c (casin, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3493     TEST_c_c (casin, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3494     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3495     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3496     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3497     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3498     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3499     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3500     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3501     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3502     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3503     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3504     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3505     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3506     TEST_c_c (casin, 0.0L, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L),
3507     TEST_c_c (casin, 0.0L, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L),
3508     TEST_c_c (casin, -0.0L, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L),
3509     TEST_c_c (casin, -0.0L, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L),
3510     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3511     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3512     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3513     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3514 #endif
3515
3516     TEST_c_c (casin, 0x1p-23L, 0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3517     TEST_c_c (casin, 0x1p-23L, -0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3518     TEST_c_c (casin, -0x1p-23L, 0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3519     TEST_c_c (casin, -0x1p-23L, -0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3520     TEST_c_c (casin, 0x0.ffffffp0L, 0x1p-23L, 1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3521     TEST_c_c (casin, -0x0.ffffffp0L, 0x1p-23L, -1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3522     TEST_c_c (casin, 0x0.ffffffp0L, -0x1p-23L, 1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3523     TEST_c_c (casin, -0x0.ffffffp0L, -0x1p-23L, -1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3524     TEST_c_c (casin, 0x1.fp-129L, 0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3525     TEST_c_c (casin, 0x1.fp-129L, -0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3526     TEST_c_c (casin, -0x1.fp-129L, 0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3527     TEST_c_c (casin, -0x1.fp-129L, -0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3528     TEST_c_c (casin, 0x0.ffffffp0L, 0x1.fp-129L, 1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3529     TEST_c_c (casin, -0x0.ffffffp0L, 0x1.fp-129L, -1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3530     TEST_c_c (casin, 0x0.ffffffp0L, -0x1.fp-129L, 1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3531     TEST_c_c (casin, -0x0.ffffffp0L, -0x1.fp-129L, -1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3532     TEST_c_c (casin, 0.0L, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L),
3533     TEST_c_c (casin, 0.0L, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L),
3534     TEST_c_c (casin, -0.0L, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L),
3535     TEST_c_c (casin, -0.0L, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L),
3536     TEST_c_c (casin, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L, 0.0L),
3537     TEST_c_c (casin, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L, 0.0L),
3538     TEST_c_c (casin, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L, -0.0L),
3539     TEST_c_c (casin, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L, -0.0L),
3540     TEST_c_c (casin, 0x1p-23L, 0.5L, 1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3541     TEST_c_c (casin, 0x1p-23L, -0.5L, 1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3542     TEST_c_c (casin, -0x1p-23L, 0.5L, -1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3543     TEST_c_c (casin, -0x1p-23L, -0.5L, -1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3544     TEST_c_c (casin, 0.5L, 0x1p-23L, 5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3545     TEST_c_c (casin, -0.5L, 0x1p-23L, -5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3546     TEST_c_c (casin, 0.5L, -0x1p-23L, 5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3547     TEST_c_c (casin, -0.5L, -0x1p-23L, -5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3548     TEST_c_c (casin, 0x1.fp-129L, 0.5L, 2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3549     TEST_c_c (casin, 0x1.fp-129L, -0.5L, 2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3550     TEST_c_c (casin, -0x1.fp-129L, 0.5L, -2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3551     TEST_c_c (casin, -0x1.fp-129L, -0.5L, -2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3552     TEST_c_c (casin, 0.5L, 0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3553     TEST_c_c (casin, -0.5L, 0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3554     TEST_c_c (casin, 0.5L, -0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3555     TEST_c_c (casin, -0.5L, -0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3556     TEST_c_c (casin, 0x1p-23L, 0x1p-23L, 1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3557     TEST_c_c (casin, 0x1p-23L, -0x1p-23L, 1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3558     TEST_c_c (casin, -0x1p-23L, 0x1p-23L, -1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3559     TEST_c_c (casin, -0x1p-23L, -0x1p-23L, -1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3560     /* Bug 15319: underflow exception may be missing.  */
3561     TEST_c_c (casin, 0x1.fp-129L, 0x1p-23L, 2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3562     TEST_c_c (casin, 0x1.fp-129L, -0x1p-23L, 2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3563     TEST_c_c (casin, -0x1.fp-129L, 0x1p-23L, -2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3564     TEST_c_c (casin, -0x1.fp-129L, -0x1p-23L, -2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3565     TEST_c_c (casin, 0x1p-23L, 0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3566     TEST_c_c (casin, -0x1p-23L, 0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3567     TEST_c_c (casin, 0x1p-23L, -0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3568     TEST_c_c (casin, -0x1p-23L, -0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3569     TEST_c_c (casin, 0.0L, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L),
3570     TEST_c_c (casin, 0.0L, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L),
3571     TEST_c_c (casin, -0.0L, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L),
3572     TEST_c_c (casin, -0.0L, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L),
3573     TEST_c_c (casin, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L, 0.0L),
3574     TEST_c_c (casin, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L, 0.0L),
3575     TEST_c_c (casin, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L, -0.0L),
3576     TEST_c_c (casin, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L, -0.0L),
3577     TEST_c_c (casin, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3578     TEST_c_c (casin, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3579     TEST_c_c (casin, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3580     TEST_c_c (casin, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3581 #ifndef TEST_FLOAT
3582     TEST_c_c (casin, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3583     TEST_c_c (casin, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3584     TEST_c_c (casin, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3585     TEST_c_c (casin, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3586     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3587     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1p-52L, -1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3588     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3589     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1p-52L, -1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3590     TEST_c_c (casin, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3591     TEST_c_c (casin, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3592     TEST_c_c (casin, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3593     TEST_c_c (casin, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3594     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3595     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3596     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3597     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3598     TEST_c_c (casin, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L),
3599     TEST_c_c (casin, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L),
3600     TEST_c_c (casin, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L),
3601     TEST_c_c (casin, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L),
3602     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L, 0.0L),
3603     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L, 0.0L),
3604     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L, -0.0L),
3605     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L, -0.0L),
3606 #endif
3607     TEST_c_c (casin, 0x1p-52L, 0.5L, 1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3608     TEST_c_c (casin, 0x1p-52L, -0.5L, 1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3609     TEST_c_c (casin, -0x1p-52L, 0.5L, -1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3610     TEST_c_c (casin, -0x1p-52L, -0.5L, -1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3611     TEST_c_c (casin, 0.5L, 0x1p-52L, 5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3612     TEST_c_c (casin, -0.5L, 0x1p-52L, -5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3613     TEST_c_c (casin, 0.5L, -0x1p-52L, 5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3614     TEST_c_c (casin, -0.5L, -0x1p-52L, -5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3615 #ifndef TEST_FLOAT
3616     TEST_c_c (casin, 0x1.fp-1025L, 0.5L, 4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3617     TEST_c_c (casin, 0x1.fp-1025L, -0.5L, 4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3618     TEST_c_c (casin, -0x1.fp-1025L, 0.5L, -4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3619     TEST_c_c (casin, -0x1.fp-1025L, -0.5L, -4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3620     TEST_c_c (casin, 0.5L, 0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3621     TEST_c_c (casin, -0.5L, 0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3622     TEST_c_c (casin, 0.5L, -0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3623     TEST_c_c (casin, -0.5L, -0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3624 #endif
3625     TEST_c_c (casin, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3626     TEST_c_c (casin, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3627     TEST_c_c (casin, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3628     TEST_c_c (casin, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3629 #ifndef TEST_FLOAT
3630     /* Bug 15319: underflow exception may be missing.  */
3631     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3632     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3633     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3634     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3635     TEST_c_c (casin, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3636     TEST_c_c (casin, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3637     TEST_c_c (casin, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3638     TEST_c_c (casin, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3639 #endif
3640     TEST_c_c (casin, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L),
3641     TEST_c_c (casin, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L),
3642     TEST_c_c (casin, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L),
3643     TEST_c_c (casin, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L),
3644     TEST_c_c (casin, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L, 0.0L),
3645     TEST_c_c (casin, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L, 0.0L),
3646     TEST_c_c (casin, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L, -0.0L),
3647     TEST_c_c (casin, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L, -0.0L),
3648 #ifndef TEST_FLOAT
3649     TEST_c_c (casin, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3650     TEST_c_c (casin, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3651     TEST_c_c (casin, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3652     TEST_c_c (casin, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3653 #endif
3654 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3655     TEST_c_c (casin, 0x1p-63L, 0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3656     TEST_c_c (casin, 0x1p-63L, -0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3657     TEST_c_c (casin, -0x1p-63L, 0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3658     TEST_c_c (casin, -0x1p-63L, -0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3659     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1p-63L, 1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3660     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1p-63L, -1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3661     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1p-63L, 1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3662     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1p-63L, -1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3663 # if LDBL_MIN_EXP <= -16381
3664     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3665     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3666     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3667     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3668     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3669     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3670     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3671     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3672 # endif
3673     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L),
3674     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L),
3675     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L),
3676     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L),
3677     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L, 0.0L),
3678     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L, 0.0L),
3679     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L, -0.0L),
3680     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L, -0.0L),
3681 #endif
3682     TEST_c_c (casin, 0x1p-63L, 0.5L, 9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3683     TEST_c_c (casin, 0x1p-63L, -0.5L, 9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3684     TEST_c_c (casin, -0x1p-63L, 0.5L, -9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3685     TEST_c_c (casin, -0x1p-63L, -0.5L, -9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3686     TEST_c_c (casin, 0.5L, 0x1p-63L, 5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3687     TEST_c_c (casin, -0.5L, 0x1p-63L, -5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3688     TEST_c_c (casin, 0.5L, -0x1p-63L, 5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3689     TEST_c_c (casin, -0.5L, -0x1p-63L, -5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3690 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3691     TEST_c_c (casin, 0x1.fp-16385L, 0.5L, 7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3692     TEST_c_c (casin, 0x1.fp-16385L, -0.5L, 7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3693     TEST_c_c (casin, -0x1.fp-16385L, 0.5L, -7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3694     TEST_c_c (casin, -0x1.fp-16385L, -0.5L, -7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3695     TEST_c_c (casin, 0.5L, 0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3696     TEST_c_c (casin, -0.5L, 0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3697     TEST_c_c (casin, 0.5L, -0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3698     TEST_c_c (casin, -0.5L, -0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3699 #endif
3700     TEST_c_c (casin, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3701     TEST_c_c (casin, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3702     TEST_c_c (casin, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3703     TEST_c_c (casin, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3704 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3705     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3706     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3707     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3708     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3709     TEST_c_c (casin, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3710     TEST_c_c (casin, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3711     TEST_c_c (casin, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3712     TEST_c_c (casin, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3713 #endif
3714     TEST_c_c (casin, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L),
3715     TEST_c_c (casin, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L),
3716     TEST_c_c (casin, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L),
3717     TEST_c_c (casin, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L),
3718     TEST_c_c (casin, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L, 0.0L),
3719     TEST_c_c (casin, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L, 0.0L),
3720     TEST_c_c (casin, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L, -0.0L),
3721     TEST_c_c (casin, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L, -0.0L),
3722 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3723     TEST_c_c (casin, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3724     TEST_c_c (casin, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3725     TEST_c_c (casin, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3726     TEST_c_c (casin, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3727 #endif
3728 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3729     TEST_c_c (casin, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3730     TEST_c_c (casin, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3731     TEST_c_c (casin, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3732     TEST_c_c (casin, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3733     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3734     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3735     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3736     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3737     TEST_c_c (casin, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3738     TEST_c_c (casin, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3739     TEST_c_c (casin, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3740     TEST_c_c (casin, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3741     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3742     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3743     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3744     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3745     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L),
3746     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L),
3747     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L),
3748     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L),
3749     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L, 0.0L),
3750     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L, 0.0L),
3751     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L, -0.0L),
3752     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L, -0.0L),
3753 #endif
3754     TEST_c_c (casin, 0x1p-105L, 0.5L, 2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3755     TEST_c_c (casin, 0x1p-105L, -0.5L, 2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3756     TEST_c_c (casin, -0x1p-105L, 0.5L, -2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3757     TEST_c_c (casin, -0x1p-105L, -0.5L, -2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3758     TEST_c_c (casin, 0.5L, 0x1p-105L, 5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3759     TEST_c_c (casin, -0.5L, 0x1p-105L, -5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3760     TEST_c_c (casin, 0.5L, -0x1p-105L, 5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3761     TEST_c_c (casin, -0.5L, -0x1p-105L, -5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3762     TEST_c_c (casin, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3763     TEST_c_c (casin, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3764     TEST_c_c (casin, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3765     TEST_c_c (casin, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3766 #ifndef TEST_FLOAT
3767     /* Bug 15319: underflow exception may be missing.  */
3768     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3769     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3770     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3771     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3772     TEST_c_c (casin, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3773     TEST_c_c (casin, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3774     TEST_c_c (casin, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3775     TEST_c_c (casin, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3776 #endif
3777     TEST_c_c (casin, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
3778     TEST_c_c (casin, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
3779     TEST_c_c (casin, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
3780     TEST_c_c (casin, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
3781     TEST_c_c (casin, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
3782     TEST_c_c (casin, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
3783     TEST_c_c (casin, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
3784     TEST_c_c (casin, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
3785 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3786     TEST_c_c (casin, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3787     TEST_c_c (casin, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3788     TEST_c_c (casin, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3789     TEST_c_c (casin, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3790     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3791     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3792     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3793     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3794     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3795     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3796     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3797     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3798     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3799     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3800     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3801     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3802     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L),
3803     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L),
3804     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L),
3805     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L),
3806     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L, 0.0L),
3807     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L, 0.0L),
3808     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L, -0.0L),
3809     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L, -0.0L),
3810 #endif
3811     TEST_c_c (casin, 0x1p-112L, 0.5L, 1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3812     TEST_c_c (casin, 0x1p-112L, -0.5L, 1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3813     TEST_c_c (casin, -0x1p-112L, 0.5L, -1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3814     TEST_c_c (casin, -0x1p-112L, -0.5L, -1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3815     TEST_c_c (casin, 0.5L, 0x1p-112L, 5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3816     TEST_c_c (casin, -0.5L, 0x1p-112L, -5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3817     TEST_c_c (casin, 0.5L, -0x1p-112L, 5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3818     TEST_c_c (casin, -0.5L, -0x1p-112L, -5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3819     TEST_c_c (casin, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3820     TEST_c_c (casin, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3821     TEST_c_c (casin, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3822     TEST_c_c (casin, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3823 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3824     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3825     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3826     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3827     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3828     TEST_c_c (casin, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3829     TEST_c_c (casin, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3830     TEST_c_c (casin, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3831     TEST_c_c (casin, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3832 #endif
3833     TEST_c_c (casin, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
3834     TEST_c_c (casin, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
3835     TEST_c_c (casin, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
3836     TEST_c_c (casin, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
3837     TEST_c_c (casin, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
3838     TEST_c_c (casin, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
3839     TEST_c_c (casin, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
3840     TEST_c_c (casin, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
3841
3842     TEST_c_c (casin, 0.75L, 1.25L, 0.453276177638793913448921196101971749L, 1.13239363160530819522266333696834467L),
3843     TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L),
3844     END_DATA (casin)
3845   };
3846
3847 static void
3848 casin_test (void)
3849 {
3850   errno = 0;
3851   FUNC(casin) (BUILD_COMPLEX (0.7L, 1.2L));
3852   if (errno == ENOSYS)
3853     /* Function not implemented.  */
3854     return;
3855
3856   START (casin);
3857   RUN_TEST_LOOP_c_c (casin, casin_test_data, );
3858   END (casin, complex);
3859 }
3860
3861
3862 static const struct test_c_c_data casinh_test_data[] =
3863   {
3864     START_DATA (casinh),
3865     TEST_c_c (casinh, 0, 0, 0.0, 0.0),
3866     TEST_c_c (casinh, minus_zero, 0, minus_zero, 0),
3867     TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero),
3868     TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero),
3869
3870     TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l),
3871     TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
3872     TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l),
3873     TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l),
3874
3875     TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l),
3876     TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l),
3877     TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l),
3878     TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l),
3879     TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l),
3880     TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l),
3881     TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l),
3882     TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
3883
3884     TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0),
3885     TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero),
3886     TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0),
3887     TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero),
3888
3889     TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0),
3890     TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero),
3891     TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0),
3892     TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero),
3893
3894     TEST_c_c (casinh, plus_infty, qnan_value, plus_infty, qnan_value),
3895     TEST_c_c (casinh, minus_infty, qnan_value, minus_infty, qnan_value),
3896
3897     TEST_c_c (casinh, qnan_value, 0, qnan_value, 0.0),
3898     TEST_c_c (casinh, qnan_value, minus_zero, qnan_value, minus_zero),
3899
3900     TEST_c_c (casinh, qnan_value, plus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
3901     TEST_c_c (casinh, qnan_value, minus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
3902
3903     TEST_c_c (casinh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3904     TEST_c_c (casinh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3905
3906     TEST_c_c (casinh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3907     TEST_c_c (casinh, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3908
3909     TEST_c_c (casinh, qnan_value, qnan_value, qnan_value, qnan_value),
3910
3911     TEST_c_c (casinh, plus_zero, -1.5L, 0.9624236501192068949955178268487368462704L, -M_PI_2l),
3912     TEST_c_c (casinh, minus_zero, -1.5L, -0.9624236501192068949955178268487368462704L, -M_PI_2l),
3913     TEST_c_c (casinh, plus_zero, -1.0L, plus_zero, -M_PI_2l),
3914     TEST_c_c (casinh, minus_zero, -1.0L, minus_zero, -M_PI_2l),
3915     TEST_c_c (casinh, plus_zero, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L),
3916     TEST_c_c (casinh, minus_zero, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L),
3917     TEST_c_c (casinh, plus_zero, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L),
3918     TEST_c_c (casinh, minus_zero, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L),
3919     TEST_c_c (casinh, plus_zero, 1.0L, plus_zero, M_PI_2l),
3920     TEST_c_c (casinh, minus_zero, 1.0L, minus_zero, M_PI_2l),
3921     TEST_c_c (casinh, plus_zero, 1.5L, 0.9624236501192068949955178268487368462704L, M_PI_2l),
3922     TEST_c_c (casinh, minus_zero, 1.5L, -0.9624236501192068949955178268487368462704L, M_PI_2l),
3923
3924     TEST_c_c (casinh, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L, plus_zero),
3925     TEST_c_c (casinh, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L, minus_zero),
3926     TEST_c_c (casinh, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L, plus_zero),
3927     TEST_c_c (casinh, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L, minus_zero),
3928     TEST_c_c (casinh, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L, plus_zero),
3929     TEST_c_c (casinh, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L, minus_zero),
3930     TEST_c_c (casinh, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L, plus_zero),
3931     TEST_c_c (casinh, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L, minus_zero),
3932     TEST_c_c (casinh, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L, plus_zero),
3933     TEST_c_c (casinh, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L, minus_zero),
3934     TEST_c_c (casinh, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L, plus_zero),
3935     TEST_c_c (casinh, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L, minus_zero),
3936
3937     TEST_c_c (casinh, 0x1p50L, 1.0L, 3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
3938     TEST_c_c (casinh, 0x1p50L, -1.0L, 3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
3939     TEST_c_c (casinh, -0x1p50L, 1.0L, -3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
3940     TEST_c_c (casinh, -0x1p50L, -1.0L, -3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
3941     TEST_c_c (casinh, 1.0L, 0x1p50L, 3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
3942     TEST_c_c (casinh, -1.0L, 0x1p50L, -3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
3943     TEST_c_c (casinh, 1.0L, -0x1p50L, 3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
3944     TEST_c_c (casinh, -1.0L, -0x1p50L, -3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
3945 #ifndef TEST_FLOAT
3946     TEST_c_c (casinh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
3947     TEST_c_c (casinh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
3948     TEST_c_c (casinh, -0x1p500L, 1.0L, -3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
3949     TEST_c_c (casinh, -0x1p500L, -1.0L, -3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
3950     TEST_c_c (casinh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
3951     TEST_c_c (casinh, -1.0L, 0x1p500L, -3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
3952     TEST_c_c (casinh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
3953     TEST_c_c (casinh, -1.0L, -0x1p500L, -3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
3954 #endif
3955 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3956     TEST_c_c (casinh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
3957     TEST_c_c (casinh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
3958     TEST_c_c (casinh, -0x1p5000L, 1.0L, -3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
3959     TEST_c_c (casinh, -0x1p5000L, -1.0L, -3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
3960     TEST_c_c (casinh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
3961     TEST_c_c (casinh, -1.0L, 0x1p5000L, -3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
3962     TEST_c_c (casinh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
3963     TEST_c_c (casinh, -1.0L, -0x1p5000L, -3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
3964 #endif
3965
3966     TEST_c_c (casinh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
3967 #ifndef TEST_FLOAT
3968     TEST_c_c (casinh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
3969 #endif
3970 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3971     TEST_c_c (casinh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
3972 #endif
3973
3974     TEST_c_c (casinh, 0x1.fp-129L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
3975     TEST_c_c (casinh, 0x1.fp-129L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
3976     TEST_c_c (casinh, -0x1.fp-129L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
3977     TEST_c_c (casinh, -0x1.fp-129L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
3978     TEST_c_c (casinh, 1.5L, 0x1.fp-129L, 1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3979     TEST_c_c (casinh, -1.5L, 0x1.fp-129L, -1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3980     TEST_c_c (casinh, 1.5L, -0x1.fp-129L, 1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3981     TEST_c_c (casinh, -1.5L, -0x1.fp-129L, -1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3982 #ifndef TEST_FLOAT
3983     TEST_c_c (casinh, 0x1.fp-1025L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
3984     TEST_c_c (casinh, 0x1.fp-1025L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
3985     TEST_c_c (casinh, -0x1.fp-1025L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
3986     TEST_c_c (casinh, -0x1.fp-1025L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
3987     TEST_c_c (casinh, 1.5L, 0x1.fp-1025L, 1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3988     TEST_c_c (casinh, -1.5L, 0x1.fp-1025L, -1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3989     TEST_c_c (casinh, 1.5L, -0x1.fp-1025L, 1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3990     TEST_c_c (casinh, -1.5L, -0x1.fp-1025L, -1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3991 #endif
3992 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3993     TEST_c_c (casinh, 0x1.fp-16385L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
3994     TEST_c_c (casinh, 0x1.fp-16385L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
3995     TEST_c_c (casinh, -0x1.fp-16385L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
3996     TEST_c_c (casinh, -0x1.fp-16385L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
3997     TEST_c_c (casinh, 1.5L, 0x1.fp-16385L, 1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
3998     TEST_c_c (casinh, -1.5L, 0x1.fp-16385L, -1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
3999     TEST_c_c (casinh, 1.5L, -0x1.fp-16385L, 1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4000     TEST_c_c (casinh, -1.5L, -0x1.fp-16385L, -1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4001 #endif
4002
4003     TEST_c_c (casinh, 0.5L, 1.0L, 7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4004     TEST_c_c (casinh, 0.5L, -1.0L, 7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4005     TEST_c_c (casinh, -0.5L, 1.0L, -7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4006     TEST_c_c (casinh, -0.5L, -1.0L, -7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4007     TEST_c_c (casinh, 1.0L, 0.5L, 9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4008     TEST_c_c (casinh, -1.0L, 0.5L, -9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4009     TEST_c_c (casinh, 1.0L, -0.5L, 9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4010     TEST_c_c (casinh, -1.0L, -0.5L, -9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4011     TEST_c_c (casinh, 0.25L, 1.0L, 5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4012     TEST_c_c (casinh, 0.25L, -1.0L, 5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4013     TEST_c_c (casinh, -0.25L, 1.0L, -5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4014     TEST_c_c (casinh, -0.25L, -1.0L, -5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4015     TEST_c_c (casinh, 1.0L, 0.25L, 8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4016     TEST_c_c (casinh, -1.0L, 0.25L, -8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4017     TEST_c_c (casinh, 1.0L, -0.25L, 8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4018     TEST_c_c (casinh, -1.0L, -0.25L, -8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4019     TEST_c_c (casinh, 0x1.fp-10L, 1.0L, 4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4020     TEST_c_c (casinh, 0x1.fp-10L, -1.0L, 4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4021     TEST_c_c (casinh, -0x1.fp-10L, 1.0L, -4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4022     TEST_c_c (casinh, -0x1.fp-10L, -1.0L, -4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4023     TEST_c_c (casinh, 1.0L, 0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4024     TEST_c_c (casinh, -1.0L, 0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4025     TEST_c_c (casinh, 1.0L, -0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4026     TEST_c_c (casinh, -1.0L, -0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4027     TEST_c_c (casinh, 0x1.fp-30L, 1.0L, 4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4028     TEST_c_c (casinh, 0x1.fp-30L, -1.0L, 4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4029     TEST_c_c (casinh, -0x1.fp-30L, 1.0L, -4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4030     TEST_c_c (casinh, -0x1.fp-30L, -1.0L, -4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4031     TEST_c_c (casinh, 1.0L, 0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4032     TEST_c_c (casinh, -1.0L, 0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4033     TEST_c_c (casinh, 1.0L, -0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4034     TEST_c_c (casinh, -1.0L, -0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4035     TEST_c_c (casinh, 0x1.fp-100L, 1.0L, 1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4036     TEST_c_c (casinh, 0x1.fp-100L, -1.0L, 1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4037     TEST_c_c (casinh, -0x1.fp-100L, 1.0L, -1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4038     TEST_c_c (casinh, -0x1.fp-100L, -1.0L, -1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4039     TEST_c_c (casinh, 1.0L, 0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4040     TEST_c_c (casinh, -1.0L, 0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4041     TEST_c_c (casinh, 1.0L, -0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4042     TEST_c_c (casinh, -1.0L, -0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4043     TEST_c_c (casinh, 0x1.fp-129L, 1.0L, 5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4044     TEST_c_c (casinh, 0x1.fp-129L, -1.0L, 5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4045     TEST_c_c (casinh, -0x1.fp-129L, 1.0L, -5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4046     TEST_c_c (casinh, -0x1.fp-129L, -1.0L, -5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4047     TEST_c_c (casinh, 1.0L, 0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4048     TEST_c_c (casinh, -1.0L, 0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4049     TEST_c_c (casinh, 1.0L, -0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4050     TEST_c_c (casinh, -1.0L, -0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4051 #ifndef TEST_FLOAT
4052     TEST_c_c (casinh, 0x1.fp-1000L, 1.0L, 4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4053     TEST_c_c (casinh, 0x1.fp-1000L, -1.0L, 4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4054     TEST_c_c (casinh, -0x1.fp-1000L, 1.0L, -4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4055     TEST_c_c (casinh, -0x1.fp-1000L, -1.0L, -4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4056     TEST_c_c (casinh, 1.0L, 0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4057     TEST_c_c (casinh, -1.0L, 0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4058     TEST_c_c (casinh, 1.0L, -0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4059     TEST_c_c (casinh, -1.0L, -0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4060     TEST_c_c (casinh, 0x1.fp-1025L, 1.0L, 7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4061     TEST_c_c (casinh, 0x1.fp-1025L, -1.0L, 7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4062     TEST_c_c (casinh, -0x1.fp-1025L, 1.0L, -7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4063     TEST_c_c (casinh, -0x1.fp-1025L, -1.0L, -7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4064     TEST_c_c (casinh, 1.0L, 0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4065     TEST_c_c (casinh, -1.0L, 0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4066     TEST_c_c (casinh, 1.0L, -0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4067     TEST_c_c (casinh, -1.0L, -0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4068 #endif
4069 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4070     TEST_c_c (casinh, 0x1.fp-10000L, 1.0L, 9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4071     TEST_c_c (casinh, 0x1.fp-10000L, -1.0L, 9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4072     TEST_c_c (casinh, -0x1.fp-10000L, 1.0L, -9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4073     TEST_c_c (casinh, -0x1.fp-10000L, -1.0L, -9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4074     TEST_c_c (casinh, 1.0L, 0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4075     TEST_c_c (casinh, -1.0L, 0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4076     TEST_c_c (casinh, 1.0L, -0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4077     TEST_c_c (casinh, -1.0L, -0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4078     TEST_c_c (casinh, 0x1.fp-16385L, 1.0L, 9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4079     TEST_c_c (casinh, 0x1.fp-16385L, -1.0L, 9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4080     TEST_c_c (casinh, -0x1.fp-16385L, 1.0L, -9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4081     TEST_c_c (casinh, -0x1.fp-16385L, -1.0L, -9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4082     TEST_c_c (casinh, 1.0L, 0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4083     TEST_c_c (casinh, -1.0L, 0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4084     TEST_c_c (casinh, 1.0L, -0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4085     TEST_c_c (casinh, -1.0L, -0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4086 #endif
4087
4088     TEST_c_c (casinh, 0x1p-23L, 0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4089     TEST_c_c (casinh, 0x1p-23L, -0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4090     TEST_c_c (casinh, -0x1p-23L, 0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4091     TEST_c_c (casinh, -0x1p-23L, -0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4092     TEST_c_c (casinh, 0x1.000002p0L, 0x1p-23L, 8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4093     TEST_c_c (casinh, -0x1.000002p0L, 0x1p-23L, -8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4094     TEST_c_c (casinh, 0x1.000002p0L, -0x1p-23L, 8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4095     TEST_c_c (casinh, -0x1.000002p0L, -0x1p-23L, -8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4096     TEST_c_c (casinh, 0x1.fp-129L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4097     TEST_c_c (casinh, 0x1.fp-129L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4098     TEST_c_c (casinh, -0x1.fp-129L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4099     TEST_c_c (casinh, -0x1.fp-129L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4100     TEST_c_c (casinh, 0x1.000002p0L, 0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4101     TEST_c_c (casinh, -0x1.000002p0L, 0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4102     TEST_c_c (casinh, 0x1.000002p0L, -0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4103     TEST_c_c (casinh, -0x1.000002p0L, -0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4104     TEST_c_c (casinh, 0.0L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4105     TEST_c_c (casinh, 0.0L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4106     TEST_c_c (casinh, -0.0L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4107     TEST_c_c (casinh, -0.0L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4108     TEST_c_c (casinh, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L, 0.0L),
4109     TEST_c_c (casinh, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L, 0.0L),
4110     TEST_c_c (casinh, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L, -0.0L),
4111     TEST_c_c (casinh, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L, -0.0L),
4112 #ifndef TEST_FLOAT
4113     TEST_c_c (casinh, 0x1p-52L, 0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4114     TEST_c_c (casinh, 0x1p-52L, -0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4115     TEST_c_c (casinh, -0x1p-52L, 0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4116     TEST_c_c (casinh, -0x1p-52L, -0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4117     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1p-52L, 8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4118     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1p-52L, -8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4119     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1p-52L, 8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4120     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1p-52L, -8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4121     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4122     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4123     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4124     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4125     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4126     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4127     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4128     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4129     TEST_c_c (casinh, 0.0L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4130     TEST_c_c (casinh, 0.0L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4131     TEST_c_c (casinh, -0.0L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4132     TEST_c_c (casinh, -0.0L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4133     TEST_c_c (casinh, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L, 0.0L),
4134     TEST_c_c (casinh, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L, 0.0L),
4135     TEST_c_c (casinh, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L, -0.0L),
4136     TEST_c_c (casinh, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L, -0.0L),
4137 #endif
4138 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4139     TEST_c_c (casinh, 0x1p-63L, 0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4140     TEST_c_c (casinh, 0x1p-63L, -0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4141     TEST_c_c (casinh, -0x1p-63L, 0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4142     TEST_c_c (casinh, -0x1p-63L, -0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4143     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1p-63L, 8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4144     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1p-63L, -8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4145     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1p-63L, 8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4146     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1p-63L, -8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4147 # if LDBL_MIN_EXP <= -16381
4148     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4149     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4150     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4151     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4152     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4153     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4154     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4155     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4156 # endif
4157     TEST_c_c (casinh, 0.0L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4158     TEST_c_c (casinh, 0.0L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4159     TEST_c_c (casinh, -0.0L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4160     TEST_c_c (casinh, -0.0L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4161     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L, 0.0L),
4162     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L, 0.0L),
4163     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L, -0.0L),
4164     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L, -0.0L),
4165 #endif
4166 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4167     TEST_c_c (casinh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4168     TEST_c_c (casinh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4169     TEST_c_c (casinh, -0x1p-106L, 0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4170     TEST_c_c (casinh, -0x1p-106L, -0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4171     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4172     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1p-106L, -8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4173     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4174     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1p-106L, -8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4175     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4176     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4177     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4178     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4179     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4180     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4181     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4182     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4183     TEST_c_c (casinh, 0.0L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4184     TEST_c_c (casinh, 0.0L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4185     TEST_c_c (casinh, -0.0L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4186     TEST_c_c (casinh, -0.0L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4187     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L, 0.0L),
4188     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L, 0.0L),
4189     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L, -0.0L),
4190     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L, -0.0L),
4191 #endif
4192 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4193     TEST_c_c (casinh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4194     TEST_c_c (casinh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4195     TEST_c_c (casinh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4196     TEST_c_c (casinh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4197     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4198     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4199     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4200     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4201     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4202     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4203     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4204     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4205     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4206     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4207     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4208     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4209     TEST_c_c (casinh, 0.0L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4210     TEST_c_c (casinh, 0.0L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4211     TEST_c_c (casinh, -0.0L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4212     TEST_c_c (casinh, -0.0L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4213     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L, 0.0L),
4214     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L, 0.0L),
4215     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L, -0.0L),
4216     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L, -0.0L),
4217 #endif
4218
4219     TEST_c_c (casinh, 0x1p-23L, 0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4220     TEST_c_c (casinh, 0x1p-23L, -0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4221     TEST_c_c (casinh, -0x1p-23L, 0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4222     TEST_c_c (casinh, -0x1p-23L, -0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4223     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1p-23L, 8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4224     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1p-23L, -8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4225     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1p-23L, 8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4226     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1p-23L, -8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4227     TEST_c_c (casinh, 0x1.fp-129L, 0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4228     TEST_c_c (casinh, 0x1.fp-129L, -0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4229     TEST_c_c (casinh, -0x1.fp-129L, 0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4230     TEST_c_c (casinh, -0x1.fp-129L, -0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4231     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4232     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4233     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4234     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4235     TEST_c_c (casinh, 0.0L, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L),
4236     TEST_c_c (casinh, 0.0L, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L),
4237     TEST_c_c (casinh, -0.0L, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L),
4238     TEST_c_c (casinh, -0.0L, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L),
4239     TEST_c_c (casinh, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L, 0.0L),
4240     TEST_c_c (casinh, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L, 0.0L),
4241     TEST_c_c (casinh, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L, -0.0L),
4242     TEST_c_c (casinh, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L, -0.0L),
4243     TEST_c_c (casinh, 0x1p-23L, 0.5L, 1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4244     TEST_c_c (casinh, 0x1p-23L, -0.5L, 1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4245     TEST_c_c (casinh, -0x1p-23L, 0.5L, -1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4246     TEST_c_c (casinh, -0x1p-23L, -0.5L, -1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4247     TEST_c_c (casinh, 0.5L, 0x1p-23L, 4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4248     TEST_c_c (casinh, -0.5L, 0x1p-23L, -4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4249     TEST_c_c (casinh, 0.5L, -0x1p-23L, 4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4250     TEST_c_c (casinh, -0.5L, -0x1p-23L, -4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4251     TEST_c_c (casinh, 0x1.fp-129L, 0.5L, 3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4252     TEST_c_c (casinh, 0x1.fp-129L, -0.5L, 3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4253     TEST_c_c (casinh, -0x1.fp-129L, 0.5L, -3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4254     TEST_c_c (casinh, -0x1.fp-129L, -0.5L, -3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4255     TEST_c_c (casinh, 0.5L, 0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4256     TEST_c_c (casinh, -0.5L, 0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4257     TEST_c_c (casinh, 0.5L, -0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4258     TEST_c_c (casinh, -0.5L, -0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4259     TEST_c_c (casinh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4260     TEST_c_c (casinh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4261     TEST_c_c (casinh, -0x1p-23L, 0x1p-23L, -1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4262     TEST_c_c (casinh, -0x1p-23L, -0x1p-23L, -1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4263     TEST_c_c (casinh, 0x1.fp-129L, 0x1p-23L, 2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4264     TEST_c_c (casinh, 0x1.fp-129L, -0x1p-23L, 2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4265     TEST_c_c (casinh, -0x1.fp-129L, 0x1p-23L, -2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4266     TEST_c_c (casinh, -0x1.fp-129L, -0x1p-23L, -2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4267     /* Bug 15319: underflow exception may be missing.  */
4268     TEST_c_c (casinh, 0x1p-23L, 0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4269     TEST_c_c (casinh, -0x1p-23L, 0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4270     TEST_c_c (casinh, 0x1p-23L, -0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4271     TEST_c_c (casinh, -0x1p-23L, -0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4272     TEST_c_c (casinh, 0.0L, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L),
4273     TEST_c_c (casinh, 0.0L, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L),
4274     TEST_c_c (casinh, -0.0L, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L),
4275     TEST_c_c (casinh, -0.0L, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L),
4276     TEST_c_c (casinh, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L, 0.0L),
4277     TEST_c_c (casinh, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L, 0.0L),
4278     TEST_c_c (casinh, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L, -0.0L),
4279     TEST_c_c (casinh, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L, -0.0L),
4280     TEST_c_c (casinh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4281     TEST_c_c (casinh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4282     TEST_c_c (casinh, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4283     TEST_c_c (casinh, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4284 #ifndef TEST_FLOAT
4285     TEST_c_c (casinh, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4286     TEST_c_c (casinh, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4287     TEST_c_c (casinh, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4288     TEST_c_c (casinh, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4289     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1p-52L, 8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4290     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1p-52L, -8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4291     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1p-52L, 8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4292     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1p-52L, -8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4293     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4294     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4295     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4296     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4297     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4298     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4299     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4300     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4301     TEST_c_c (casinh, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L),
4302     TEST_c_c (casinh, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L),
4303     TEST_c_c (casinh, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L),
4304     TEST_c_c (casinh, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L),
4305     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L, 0.0L),
4306     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L, 0.0L),
4307     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L, -0.0L),
4308     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L, -0.0L),
4309 #endif
4310     TEST_c_c (casinh, 0x1p-52L, 0.5L, 2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4311     TEST_c_c (casinh, 0x1p-52L, -0.5L, 2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4312     TEST_c_c (casinh, -0x1p-52L, 0.5L, -2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4313     TEST_c_c (casinh, -0x1p-52L, -0.5L, -2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4314     TEST_c_c (casinh, 0.5L, 0x1p-52L, 4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4315     TEST_c_c (casinh, -0.5L, 0x1p-52L, -4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4316     TEST_c_c (casinh, 0.5L, -0x1p-52L, 4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4317     TEST_c_c (casinh, -0.5L, -0x1p-52L, -4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4318 #ifndef TEST_FLOAT
4319     TEST_c_c (casinh, 0x1.fp-1025L, 0.5L, 6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4320     TEST_c_c (casinh, 0x1.fp-1025L, -0.5L, 6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4321     TEST_c_c (casinh, -0x1.fp-1025L, 0.5L, -6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4322     TEST_c_c (casinh, -0x1.fp-1025L, -0.5L, -6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4323     TEST_c_c (casinh, 0.5L, 0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4324     TEST_c_c (casinh, -0.5L, 0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4325     TEST_c_c (casinh, 0.5L, -0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4326     TEST_c_c (casinh, -0.5L, -0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4327 #endif
4328     TEST_c_c (casinh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4329     TEST_c_c (casinh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4330     TEST_c_c (casinh, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4331     TEST_c_c (casinh, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4332 #ifndef TEST_FLOAT
4333     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4334     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4335     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4336     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4337     /* Bug 15319: underflow exception may be missing.  */
4338     TEST_c_c (casinh, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4339     TEST_c_c (casinh, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4340     TEST_c_c (casinh, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4341     TEST_c_c (casinh, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4342 #endif
4343     TEST_c_c (casinh, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L),
4344     TEST_c_c (casinh, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L),
4345     TEST_c_c (casinh, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L),
4346     TEST_c_c (casinh, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L),
4347     TEST_c_c (casinh, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L, 0.0L),
4348     TEST_c_c (casinh, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L, 0.0L),
4349     TEST_c_c (casinh, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L, -0.0L),
4350     TEST_c_c (casinh, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L, -0.0L),
4351 #ifndef TEST_FLOAT
4352     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4353     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4354     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4355     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4356 #endif
4357 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4358     TEST_c_c (casinh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4359     TEST_c_c (casinh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4360     TEST_c_c (casinh, -0x1p-63L, 0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4361     TEST_c_c (casinh, -0x1p-63L, -0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4362     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4363     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1p-63L, -8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4364     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4365     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1p-63L, -8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4366 # if LDBL_MIN_EXP <= -16381
4367     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4368     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4369     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4370     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4371     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4372     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4373     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4374     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4375 # endif
4376     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L),
4377     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L),
4378     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L),
4379     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L),
4380     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L, 0.0L),
4381     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L, 0.0L),
4382     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L, -0.0L),
4383     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L, -0.0L),
4384 #endif
4385     TEST_c_c (casinh, 0x1p-63L, 0.5L, 1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4386     TEST_c_c (casinh, 0x1p-63L, -0.5L, 1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4387     TEST_c_c (casinh, -0x1p-63L, 0.5L, -1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4388     TEST_c_c (casinh, -0x1p-63L, -0.5L, -1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4389     TEST_c_c (casinh, 0.5L, 0x1p-63L, 4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4390     TEST_c_c (casinh, -0.5L, 0x1p-63L, -4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4391     TEST_c_c (casinh, 0.5L, -0x1p-63L, 4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4392     TEST_c_c (casinh, -0.5L, -0x1p-63L, -4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4393 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4394     TEST_c_c (casinh, 0x1.fp-16385L, 0.5L, 9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4395     TEST_c_c (casinh, 0x1.fp-16385L, -0.5L, 9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4396     TEST_c_c (casinh, -0x1.fp-16385L, 0.5L, -9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4397     TEST_c_c (casinh, -0x1.fp-16385L, -0.5L, -9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4398     TEST_c_c (casinh, 0.5L, 0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4399     TEST_c_c (casinh, -0.5L, 0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4400     TEST_c_c (casinh, 0.5L, -0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4401     TEST_c_c (casinh, -0.5L, -0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4402 #endif
4403     TEST_c_c (casinh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4404     TEST_c_c (casinh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4405     TEST_c_c (casinh, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4406     TEST_c_c (casinh, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4407 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4408     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4409     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4410     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4411     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4412     TEST_c_c (casinh, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4413     TEST_c_c (casinh, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4414     TEST_c_c (casinh, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4415     TEST_c_c (casinh, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4416 #endif
4417     TEST_c_c (casinh, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L),
4418     TEST_c_c (casinh, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L),
4419     TEST_c_c (casinh, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L),
4420     TEST_c_c (casinh, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L),
4421     TEST_c_c (casinh, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L, 0.0L),
4422     TEST_c_c (casinh, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L, 0.0L),
4423     TEST_c_c (casinh, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L, -0.0L),
4424     TEST_c_c (casinh, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L, -0.0L),
4425 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4426     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4427     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4428     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4429     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4430 #endif
4431 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4432     TEST_c_c (casinh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4433     TEST_c_c (casinh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4434     TEST_c_c (casinh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4435     TEST_c_c (casinh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4436     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4437     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4438     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4439     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4440     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4441     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4442     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4443     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4444     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4445     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4446     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4447     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4448     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L),
4449     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L),
4450     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L),
4451     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L),
4452     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L, 0.0L),
4453     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L, 0.0L),
4454     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L, -0.0L),
4455     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L, -0.0L),
4456 #endif
4457     TEST_c_c (casinh, 0x1p-105L, 0.5L, 2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4458     TEST_c_c (casinh, 0x1p-105L, -0.5L, 2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4459     TEST_c_c (casinh, -0x1p-105L, 0.5L, -2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4460     TEST_c_c (casinh, -0x1p-105L, -0.5L, -2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4461     TEST_c_c (casinh, 0.5L, 0x1p-105L, 4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4462     TEST_c_c (casinh, -0.5L, 0x1p-105L, -4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4463     TEST_c_c (casinh, 0.5L, -0x1p-105L, 4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4464     TEST_c_c (casinh, -0.5L, -0x1p-105L, -4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4465     TEST_c_c (casinh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4466     TEST_c_c (casinh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4467     TEST_c_c (casinh, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4468     TEST_c_c (casinh, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4469 #ifndef TEST_FLOAT
4470     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4471     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4472     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4473     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4474     /* Bug 15319: underflow exception may be missing.  */
4475     TEST_c_c (casinh, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4476     TEST_c_c (casinh, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4477     TEST_c_c (casinh, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4478     TEST_c_c (casinh, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4479 #endif
4480     TEST_c_c (casinh, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
4481     TEST_c_c (casinh, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
4482     TEST_c_c (casinh, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
4483     TEST_c_c (casinh, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
4484     TEST_c_c (casinh, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
4485     TEST_c_c (casinh, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
4486     TEST_c_c (casinh, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
4487     TEST_c_c (casinh, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
4488 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4489     TEST_c_c (casinh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4490     TEST_c_c (casinh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4491     TEST_c_c (casinh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4492     TEST_c_c (casinh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4493     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4494     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4495     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4496     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4497     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4498     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4499     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4500     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4501     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4502     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4503     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4504     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4505     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L),
4506     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L),
4507     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L),
4508     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L),
4509     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L, 0.0L),
4510     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L, 0.0L),
4511     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L, -0.0L),
4512     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L, -0.0L),
4513 #endif
4514     TEST_c_c (casinh, 0x1p-112L, 0.5L, 2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4515     TEST_c_c (casinh, 0x1p-112L, -0.5L, 2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4516     TEST_c_c (casinh, -0x1p-112L, 0.5L, -2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4517     TEST_c_c (casinh, -0x1p-112L, -0.5L, -2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4518     TEST_c_c (casinh, 0.5L, 0x1p-112L, 4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4519     TEST_c_c (casinh, -0.5L, 0x1p-112L, -4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4520     TEST_c_c (casinh, 0.5L, -0x1p-112L, 4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4521     TEST_c_c (casinh, -0.5L, -0x1p-112L, -4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4522     TEST_c_c (casinh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4523     TEST_c_c (casinh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4524     TEST_c_c (casinh, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4525     TEST_c_c (casinh, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4526 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4527     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4528     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4529     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4530     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4531     TEST_c_c (casinh, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4532     TEST_c_c (casinh, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4533     TEST_c_c (casinh, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4534     TEST_c_c (casinh, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4535 #endif
4536     TEST_c_c (casinh, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
4537     TEST_c_c (casinh, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
4538     TEST_c_c (casinh, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
4539     TEST_c_c (casinh, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
4540     TEST_c_c (casinh, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
4541     TEST_c_c (casinh, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
4542     TEST_c_c (casinh, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
4543     TEST_c_c (casinh, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
4544
4545     TEST_c_c (casinh, 0.75L, 1.25L, 1.03171853444778027336364058631006594L, 0.911738290968487636358489564316731207L),
4546     TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L),
4547     END_DATA (casinh)
4548   };
4549
4550 static void
4551 casinh_test (void)
4552 {
4553   errno = 0;
4554   FUNC(casinh) (BUILD_COMPLEX (0.7L, 1.2L));
4555   if (errno == ENOSYS)
4556     /* Function not implemented.  */
4557     return;
4558
4559   START (casinh);
4560   RUN_TEST_LOOP_c_c (casinh, casinh_test_data, );
4561   END (casinh, complex);
4562 }
4563
4564
4565 static const struct test_c_c_data catan_test_data[] =
4566   {
4567     START_DATA (catan),
4568     TEST_c_c (catan, 0, 0, 0, 0),
4569     TEST_c_c (catan, minus_zero, 0, minus_zero, 0),
4570     TEST_c_c (catan, 0, minus_zero, 0, minus_zero),
4571     TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero),
4572
4573     TEST_c_c (catan, 1.0L, plus_zero, M_PI_4l, plus_zero),
4574     TEST_c_c (catan, 1.0L, minus_zero, M_PI_4l, minus_zero),
4575     TEST_c_c (catan, -1.0L, plus_zero, -M_PI_4l, plus_zero),
4576     TEST_c_c (catan, -1.0L, minus_zero, -M_PI_4l, minus_zero),
4577     TEST_c_c (catan, plus_zero, 1.0L, plus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4578     TEST_c_c (catan, minus_zero, 1.0L, minus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4579     TEST_c_c (catan, plus_zero, -1.0L, plus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4580     TEST_c_c (catan, minus_zero, -1.0L, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4581
4582     TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0),
4583     TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero),
4584     TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0),
4585     TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero),
4586
4587
4588     TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero),
4589     TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero),
4590     TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero),
4591     TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero),
4592     TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0),
4593     TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0),
4594     TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0),
4595     TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0),
4596
4597     TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero),
4598     TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero),
4599     TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero),
4600     TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero),
4601
4602     TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0),
4603     TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0),
4604     TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0),
4605     TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0),
4606
4607     TEST_c_c (catan, qnan_value, 0.0, qnan_value, 0),
4608     TEST_c_c (catan, qnan_value, minus_zero, qnan_value, minus_zero),
4609
4610     TEST_c_c (catan, qnan_value, plus_infty, qnan_value, 0),
4611     TEST_c_c (catan, qnan_value, minus_infty, qnan_value, minus_zero),
4612
4613     TEST_c_c (catan, 0.0, qnan_value, qnan_value, qnan_value),
4614     TEST_c_c (catan, minus_zero, qnan_value, qnan_value, qnan_value),
4615
4616     TEST_c_c (catan, plus_infty, qnan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4617     TEST_c_c (catan, minus_infty, qnan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4618
4619     TEST_c_c (catan, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4620     TEST_c_c (catan, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4621
4622     TEST_c_c (catan, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4623     TEST_c_c (catan, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4624
4625     TEST_c_c (catan, qnan_value, qnan_value, qnan_value, qnan_value),
4626
4627     TEST_c_c (catan, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L, 0.0L),
4628     TEST_c_c (catan, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L, -0.0L),
4629     TEST_c_c (catan, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L, 0.0L),
4630     TEST_c_c (catan, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L, -0.0L),
4631     TEST_c_c (catan, 0.0L, 0x1p50L, 1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4632     TEST_c_c (catan, -0.0L, 0x1p50L, -1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4633     TEST_c_c (catan, 0.0L, -0x1p50L, 1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4634     TEST_c_c (catan, -0.0L, -0x1p50L, -1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4635 #ifndef TEST_FLOAT
4636     TEST_c_c (catan, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4637     TEST_c_c (catan, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4638     TEST_c_c (catan, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4639     TEST_c_c (catan, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4640     TEST_c_c (catan, 0.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4641     TEST_c_c (catan, -0.0L, 0x1p500L, -1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4642     TEST_c_c (catan, 0.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4643     TEST_c_c (catan, -0.0L, -0x1p500L, -1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4644 #endif
4645 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4646     TEST_c_c (catan, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4647     TEST_c_c (catan, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4648     TEST_c_c (catan, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4649     TEST_c_c (catan, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4650     TEST_c_c (catan, 0.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4651     TEST_c_c (catan, -0.0L, 0x1p5000L, -1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4652     TEST_c_c (catan, 0.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4653     TEST_c_c (catan, -0.0L, -0x1p5000L, -1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4654 #endif
4655     TEST_c_c (catan, 0x1p63L, 0.5L, 1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4656     TEST_c_c (catan, 0x1p63L, -0.5L, 1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4657     TEST_c_c (catan, -0x1p63L, 0.5L, -1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4658     TEST_c_c (catan, -0x1p63L, -0.5L, -1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4659     TEST_c_c (catan, 0.5L, 0x1p63L, 1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4660     TEST_c_c (catan, -0.5L, 0x1p63L, -1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4661     TEST_c_c (catan, 0.5L, -0x1p63L, 1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4662     TEST_c_c (catan, -0.5L, -0x1p63L, -1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4663 #ifndef TEST_FLOAT
4664     TEST_c_c (catan, 0x1p511L, 0.5L, 1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4665     TEST_c_c (catan, 0x1p511L, -0.5L, 1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4666     TEST_c_c (catan, -0x1p511L, 0.5L, -1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4667     TEST_c_c (catan, -0x1p511L, -0.5L, -1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4668     TEST_c_c (catan, 0.5L, 0x1p511L, 1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4669     TEST_c_c (catan, -0.5L, 0x1p511L, -1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4670     TEST_c_c (catan, 0.5L, -0x1p511L, 1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4671     TEST_c_c (catan, -0.5L, -0x1p511L, -1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4672 #endif
4673 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4674     TEST_c_c (catan, 0x1p8191L, 0.5L, 1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4675     TEST_c_c (catan, 0x1p8191L, -0.5L, 1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4676     TEST_c_c (catan, -0x1p8191L, 0.5L, -1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4677     TEST_c_c (catan, -0x1p8191L, -0.5L, -1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4678     TEST_c_c (catan, 0.5L, 0x1p8191L, 1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4679     TEST_c_c (catan, -0.5L, 0x1p8191L, -1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4680     TEST_c_c (catan, 0.5L, -0x1p8191L, 1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4681     TEST_c_c (catan, -0.5L, -0x1p8191L, -1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4682 #endif
4683     TEST_c_c (catan, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L, 0.0L),
4684     TEST_c_c (catan, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L, -0.0L),
4685     TEST_c_c (catan, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L, 0.0L),
4686     TEST_c_c (catan, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L, -0.0L),
4687     TEST_c_c (catan, 0.0L, 0x1p100L, 1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4688     TEST_c_c (catan, -0.0L, 0x1p100L, -1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4689     TEST_c_c (catan, 0.0L, -0x1p100L, 1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4690     TEST_c_c (catan, -0.0L, -0x1p100L, -1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4691     TEST_c_c (catan, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L, 0.0L),
4692     TEST_c_c (catan, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L, -0.0L),
4693     TEST_c_c (catan, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L, 0.0L),
4694     TEST_c_c (catan, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L, -0.0L),
4695     TEST_c_c (catan, 0.0L, 0x1.fp127L, 1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4696     TEST_c_c (catan, -0.0L, 0x1.fp127L, -1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4697     TEST_c_c (catan, 0.0L, -0x1.fp127L, 1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4698     TEST_c_c (catan, -0.0L, -0x1.fp127L, -1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4699     TEST_c_c (catan, 0x1.fp127L, 0x1.fp127L, 1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4700     TEST_c_c (catan, 0x1.fp127L, -0x1.fp127L, 1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4701     TEST_c_c (catan, -0x1.fp127L, 0x1.fp127L, -1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4702     TEST_c_c (catan, -0x1.fp127L, -0x1.fp127L, -1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4703 #ifndef TEST_FLOAT
4704     TEST_c_c (catan, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4705     TEST_c_c (catan, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4706     TEST_c_c (catan, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4707     TEST_c_c (catan, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4708     TEST_c_c (catan, 0.0L, 0x1p900L, 1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4709     TEST_c_c (catan, -0.0L, 0x1p900L, -1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4710     TEST_c_c (catan, 0.0L, -0x1p900L, 1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4711     TEST_c_c (catan, -0.0L, -0x1p900L, -1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4712     TEST_c_c (catan, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4713     TEST_c_c (catan, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4714     TEST_c_c (catan, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4715     TEST_c_c (catan, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4716     TEST_c_c (catan, 0.0L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4717     TEST_c_c (catan, -0.0L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4718     TEST_c_c (catan, 0.0L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4719     TEST_c_c (catan, -0.0L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4720     TEST_c_c (catan, 0x1.fp1023L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4721     TEST_c_c (catan, 0x1.fp1023L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4722     TEST_c_c (catan, -0x1.fp1023L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4723     TEST_c_c (catan, -0x1.fp1023L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4724 #endif
4725 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4726     TEST_c_c (catan, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4727     TEST_c_c (catan, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4728     TEST_c_c (catan, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4729     TEST_c_c (catan, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4730     TEST_c_c (catan, 0.0L, 0x1p10000L, 1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4731     TEST_c_c (catan, -0.0L, 0x1p10000L, -1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4732     TEST_c_c (catan, 0.0L, -0x1p10000L, 1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4733     TEST_c_c (catan, -0.0L, -0x1p10000L, -1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4734     TEST_c_c (catan, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4735     TEST_c_c (catan, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4736     TEST_c_c (catan, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4737     TEST_c_c (catan, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4738     TEST_c_c (catan, 0.0L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4739     TEST_c_c (catan, -0.0L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4740     TEST_c_c (catan, 0.0L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4741     TEST_c_c (catan, -0.0L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4742     TEST_c_c (catan, 0x1.fp16383L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4743     TEST_c_c (catan, 0x1.fp16383L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4744     TEST_c_c (catan, -0x1.fp16383L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4745     TEST_c_c (catan, -0x1.fp16383L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4746 #endif
4747     TEST_c_c (catan, 0x1p-13L, 1.0L, 7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4748     TEST_c_c (catan, 0x1p-13L, -1.0L, 7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4749     TEST_c_c (catan, -0x1p-13L, 1.0L, -7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4750     TEST_c_c (catan, -0x1p-13L, -1.0L, -7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4751     TEST_c_c (catan, 1.0L, 0x1p-13L, 7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4752     TEST_c_c (catan, -1.0L, 0x1p-13L, -7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4753     TEST_c_c (catan, 1.0L, -0x1p-13L, 7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4754     TEST_c_c (catan, -1.0L, -0x1p-13L, -7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4755     TEST_c_c (catan, 0x1p-27L, 1.0L, 7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4756     TEST_c_c (catan, 0x1p-27L, -1.0L, 7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4757     TEST_c_c (catan, -0x1p-27L, 1.0L, -7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4758     TEST_c_c (catan, -0x1p-27L, -1.0L, -7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4759     TEST_c_c (catan, 1.0L, 0x1p-27L, 7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4760     TEST_c_c (catan, -1.0L, 0x1p-27L, -7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4761     TEST_c_c (catan, 1.0L, -0x1p-27L, 7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4762     TEST_c_c (catan, -1.0L, -0x1p-27L, -7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4763     TEST_c_c (catan, 0x1p-33L, 1.0L, 7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4764     TEST_c_c (catan, 0x1p-33L, -1.0L, 7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4765     TEST_c_c (catan, -0x1p-33L, 1.0L, -7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4766     TEST_c_c (catan, -0x1p-33L, -1.0L, -7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4767     TEST_c_c (catan, 1.0L, 0x1p-33L, 7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4768     TEST_c_c (catan, -1.0L, 0x1p-33L, -7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4769     TEST_c_c (catan, 1.0L, -0x1p-33L, 7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4770     TEST_c_c (catan, -1.0L, -0x1p-33L, -7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4771     TEST_c_c (catan, 0x1p-54L, 1.0L, 7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4772     TEST_c_c (catan, 0x1p-54L, -1.0L, 7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4773     TEST_c_c (catan, -0x1p-54L, 1.0L, -7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4774     TEST_c_c (catan, -0x1p-54L, -1.0L, -7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4775     TEST_c_c (catan, 1.0L, 0x1p-54L, 7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4776     TEST_c_c (catan, -1.0L, 0x1p-54L, -7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4777     TEST_c_c (catan, 1.0L, -0x1p-54L, 7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4778     TEST_c_c (catan, -1.0L, -0x1p-54L, -7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4779     TEST_c_c (catan, 0x1p-57L, 1.0L, 7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4780     TEST_c_c (catan, 0x1p-57L, -1.0L, 7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4781     TEST_c_c (catan, -0x1p-57L, 1.0L, -7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4782     TEST_c_c (catan, -0x1p-57L, -1.0L, -7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4783     TEST_c_c (catan, 1.0L, 0x1p-57L, 7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4784     TEST_c_c (catan, -1.0L, 0x1p-57L, -7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4785     TEST_c_c (catan, 1.0L, -0x1p-57L, 7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4786     TEST_c_c (catan, -1.0L, -0x1p-57L, -7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4787     TEST_c_c (catan, 0x1p-13L, 0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4788     TEST_c_c (catan, 0x1p-13L, -0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4789     TEST_c_c (catan, -0x1p-13L, 0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4790     TEST_c_c (catan, -0x1p-13L, -0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4791     TEST_c_c (catan, 0x1.000002p0L, 0x1p-13L, 7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4792     TEST_c_c (catan, -0x1.000002p0L, 0x1p-13L, -7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4793     TEST_c_c (catan, 0x1.000002p0L, -0x1p-13L, 7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4794     TEST_c_c (catan, -0x1.000002p0L, -0x1p-13L, -7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4795     TEST_c_c (catan, 0x1p-13L, 0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4796     TEST_c_c (catan, 0x1p-13L, -0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4797     TEST_c_c (catan, -0x1p-13L, 0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4798     TEST_c_c (catan, -0x1p-13L, -0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4799     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-13L, 7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4800     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-13L, -7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4801     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-13L, 7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4802     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-13L, -7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4803 #ifndef TEST_FLOAT
4804     TEST_c_c (catan, 0x1p-27L, 0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4805     TEST_c_c (catan, 0x1p-27L, -0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4806     TEST_c_c (catan, -0x1p-27L, 0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4807     TEST_c_c (catan, -0x1p-27L, -0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4808     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-27L, 7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4809     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-27L, -7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4810     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-27L, 7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4811     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-27L, -7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4812     TEST_c_c (catan, 0x1p-27L, 0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4813     TEST_c_c (catan, 0x1p-27L, -0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4814     TEST_c_c (catan, -0x1p-27L, 0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4815     TEST_c_c (catan, -0x1p-27L, -0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4816     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-27L, 7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4817     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-27L, -7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4818     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-27L, 7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4819     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-27L, -7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4820 #endif
4821 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4822     TEST_c_c (catan, 0x1p-33L, 0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
4823     TEST_c_c (catan, 0x1p-33L, -0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
4824     TEST_c_c (catan, -0x1p-33L, 0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
4825     TEST_c_c (catan, -0x1p-33L, -0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
4826     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-33L, 7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
4827     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-33L, -7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
4828     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-33L, 7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
4829     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-33L, -7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
4830     TEST_c_c (catan, 0x1p-33L, 0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
4831     TEST_c_c (catan, 0x1p-33L, -0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
4832     TEST_c_c (catan, -0x1p-33L, 0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
4833     TEST_c_c (catan, -0x1p-33L, -0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
4834     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-33L, 7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
4835     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-33L, -7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
4836     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-33L, 7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
4837     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-33L, -7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
4838 #endif
4839 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4840     TEST_c_c (catan, 0x1p-54L, 0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
4841     TEST_c_c (catan, 0x1p-54L, -0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
4842     TEST_c_c (catan, -0x1p-54L, 0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
4843     TEST_c_c (catan, -0x1p-54L, -0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
4844     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-54L, 7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
4845     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-54L, -7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
4846     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-54L, 7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
4847     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-54L, -7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
4848     TEST_c_c (catan, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
4849     TEST_c_c (catan, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
4850     TEST_c_c (catan, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
4851     TEST_c_c (catan, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
4852     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
4853     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
4854     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
4855     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
4856 #endif
4857 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4858     TEST_c_c (catan, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
4859     TEST_c_c (catan, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
4860     TEST_c_c (catan, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
4861     TEST_c_c (catan, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
4862     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
4863     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
4864     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
4865     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
4866     TEST_c_c (catan, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
4867     TEST_c_c (catan, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
4868     TEST_c_c (catan, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
4869     TEST_c_c (catan, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
4870     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
4871     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
4872     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
4873     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
4874 #endif
4875     TEST_c_c (catan, 1.0L, 0x1p-64L, 7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
4876     TEST_c_c (catan, 1.0L, -0x1p-64L, 7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
4877     TEST_c_c (catan, -1.0L, 0x1p-64L, -7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
4878     TEST_c_c (catan, -1.0L, -0x1p-64L, -7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
4879     TEST_c_c (catan, 0x1p-64L, 1.0L, 7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
4880     TEST_c_c (catan, -0x1p-64L, 1.0L, -7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
4881     TEST_c_c (catan, 0x1p-64L, -1.0L, 7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
4882     TEST_c_c (catan, -0x1p-64L, -1.0L, -7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
4883     TEST_c_c (catan, 1.0L, 0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
4884     TEST_c_c (catan, 1.0L, -0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
4885     TEST_c_c (catan, -1.0L, 0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
4886     TEST_c_c (catan, -1.0L, -0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
4887     TEST_c_c (catan, 0x1.3p-73L, 1.0L, 7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
4888     TEST_c_c (catan, -0x1.3p-73L, 1.0L, -7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
4889     TEST_c_c (catan, 0x1.3p-73L, -1.0L, 7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
4890     TEST_c_c (catan, -0x1.3p-73L, -1.0L, -7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
4891     TEST_c_c (catan, 1.0L, 0x1p-124L, 7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
4892     TEST_c_c (catan, 1.0L, -0x1p-124L, 7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
4893     TEST_c_c (catan, -1.0L, 0x1p-124L, -7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
4894     TEST_c_c (catan, -1.0L, -0x1p-124L, -7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
4895     TEST_c_c (catan, 0x1p-124L, 1.0L, 7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
4896     TEST_c_c (catan, -0x1p-124L, 1.0L, -7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
4897     TEST_c_c (catan, 0x1p-124L, -1.0L, 7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
4898     TEST_c_c (catan, -0x1p-124L, -1.0L, -7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
4899     TEST_c_c (catan, 0x1.000002p0L, 0x1p-126L, 7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4900     TEST_c_c (catan, 0x1.000002p0L, -0x1p-126L, 7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4901     TEST_c_c (catan, -0x1.000002p0L, 0x1p-126L, -7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4902     TEST_c_c (catan, -0x1.000002p0L, -0x1p-126L, -7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4903     TEST_c_c (catan, 0x1p-126L, 0x1.000002p0L, 1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
4904     TEST_c_c (catan, -0x1p-126L, 0x1.000002p0L, -1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
4905     TEST_c_c (catan, 0x1p-126L, -0x1.000002p0L, 1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
4906     TEST_c_c (catan, -0x1p-126L, -0x1.000002p0L, -1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
4907     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-126L, 7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4908     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-126L, 7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4909     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-126L, -7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4910     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-126L, -7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4911     TEST_c_c (catan, 0x1p-126L, 0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
4912     TEST_c_c (catan, -0x1p-126L, 0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
4913     TEST_c_c (catan, 0x1p-126L, -0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
4914     TEST_c_c (catan, -0x1p-126L, -0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
4915 #ifndef TEST_FLOAT
4916     TEST_c_c (catan, 1.0L, 0x1p-512L, 7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
4917     TEST_c_c (catan, 1.0L, -0x1p-512L, 7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
4918     TEST_c_c (catan, -1.0L, 0x1p-512L, -7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
4919     TEST_c_c (catan, -1.0L, -0x1p-512L, -7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
4920     TEST_c_c (catan, 0x1p-512L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
4921     TEST_c_c (catan, -0x1p-512L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
4922     TEST_c_c (catan, 0x1p-512L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
4923     TEST_c_c (catan, -0x1p-512L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
4924     TEST_c_c (catan, 1.0L, 0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
4925     TEST_c_c (catan, 1.0L, -0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
4926     TEST_c_c (catan, -1.0L, 0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
4927     TEST_c_c (catan, -1.0L, -0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
4928     TEST_c_c (catan, 0x1.3p-536L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
4929     TEST_c_c (catan, -0x1.3p-536L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
4930     TEST_c_c (catan, 0x1.3p-536L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
4931     TEST_c_c (catan, -0x1.3p-536L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
4932     TEST_c_c (catan, 1.0L, 0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4933     TEST_c_c (catan, 1.0L, -0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4934     TEST_c_c (catan, -1.0L, 0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4935     TEST_c_c (catan, -1.0L, -0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4936     TEST_c_c (catan, 0x1p-1020L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
4937     TEST_c_c (catan, -0x1p-1020L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
4938     TEST_c_c (catan, 0x1p-1020L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
4939     TEST_c_c (catan, -0x1p-1020L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
4940     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4941     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4942     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4943     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4944     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
4945     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
4946     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
4947     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
4948     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4949     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4950     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4951     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4952     TEST_c_c (catan, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4953     TEST_c_c (catan, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4954     TEST_c_c (catan, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4955     TEST_c_c (catan, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4956 #endif
4957 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4958     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4959     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4960     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4961     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4962     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
4963     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
4964     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
4965     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
4966     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4967     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4968     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4969     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4970     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
4971     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
4972     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
4973     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
4974 #endif
4975 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4976     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4977     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4978     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4979     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4980     TEST_c_c (catan, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
4981     TEST_c_c (catan, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
4982     TEST_c_c (catan, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
4983     TEST_c_c (catan, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
4984     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4985     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4986     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4987     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4988     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
4989     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
4990     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
4991     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
4992 #endif
4993 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4994     TEST_c_c (catan, 1.0L, 0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
4995     TEST_c_c (catan, 1.0L, -0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
4996     TEST_c_c (catan, -1.0L, 0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
4997     TEST_c_c (catan, -1.0L, -0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
4998     TEST_c_c (catan, 0x1p-8192L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
4999     TEST_c_c (catan, -0x1p-8192L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5000     TEST_c_c (catan, 0x1p-8192L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5001     TEST_c_c (catan, -0x1p-8192L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5002     TEST_c_c (catan, 1.0L, 0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5003     TEST_c_c (catan, 1.0L, -0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5004     TEST_c_c (catan, -1.0L, 0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5005     TEST_c_c (catan, -1.0L, -0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5006     TEST_c_c (catan, 0x1.3p-8221L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5007     TEST_c_c (catan, -0x1.3p-8221L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5008     TEST_c_c (catan, 0x1.3p-8221L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5009     TEST_c_c (catan, -0x1.3p-8221L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5010     TEST_c_c (catan, 1.0L, 0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5011     TEST_c_c (catan, 1.0L, -0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5012     TEST_c_c (catan, -1.0L, 0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5013     TEST_c_c (catan, -1.0L, -0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5014     TEST_c_c (catan, 0x1.3p-8246L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5015     TEST_c_c (catan, -0x1.3p-8246L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5016     TEST_c_c (catan, 0x1.3p-8246L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5017     TEST_c_c (catan, -0x1.3p-8246L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5018     TEST_c_c (catan, 1.0L, 0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5019     TEST_c_c (catan, 1.0L, -0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5020     TEST_c_c (catan, -1.0L, 0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5021     TEST_c_c (catan, -1.0L, -0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5022     TEST_c_c (catan, 0x1p-16380L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5023     TEST_c_c (catan, -0x1p-16380L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5024     TEST_c_c (catan, 0x1p-16380L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5025     TEST_c_c (catan, -0x1p-16380L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5026     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5027     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5028     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5029     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5030     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5031     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5032     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5033     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5034     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5035     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5036     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5037     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5038     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5039     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5040     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5041     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5042 # if LDBL_MANT_DIG >= 113
5043     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5044     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5045     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5046     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5047     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5048     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5049     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5050     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5051     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5052     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5053     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5054     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5055     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5056     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5057     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5058     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5059 # endif
5060 #endif
5061
5062     TEST_c_c (catan, 0.75L, 1.25L, 1.10714871779409050301706546017853704L, 0.549306144334054845697622618461262852L),
5063     TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L),
5064     END_DATA (catan)
5065   };
5066
5067 static void
5068 catan_test (void)
5069 {
5070   errno = 0;
5071   FUNC(catan) (BUILD_COMPLEX (0.7L, 1.2L));
5072   if (errno == ENOSYS)
5073     /* Function not implemented.  */
5074     return;
5075
5076   START (catan);
5077   RUN_TEST_LOOP_c_c (catan, catan_test_data, );
5078   END (catan, complex);
5079 }
5080
5081 static const struct test_c_c_data catanh_test_data[] =
5082   {
5083     START_DATA (catanh),
5084     TEST_c_c (catanh, 0, 0, 0.0, 0.0),
5085     TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0),
5086     TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero),
5087     TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero),
5088
5089     TEST_c_c (catanh, 1.0L, plus_zero, plus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5090     TEST_c_c (catanh, 1.0L, minus_zero, plus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5091     TEST_c_c (catanh, -1.0L, plus_zero, minus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5092     TEST_c_c (catanh, -1.0L, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5093     TEST_c_c (catanh, plus_zero, 1.0L, plus_zero, M_PI_4l),
5094     TEST_c_c (catanh, minus_zero, 1.0L, minus_zero, M_PI_4l),
5095     TEST_c_c (catanh, plus_zero, -1.0L, plus_zero, -M_PI_4l),
5096     TEST_c_c (catanh, minus_zero, -1.0L, minus_zero, -M_PI_4l),
5097
5098     TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l),
5099     TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l),
5100     TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l),
5101     TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l),
5102
5103     TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l),
5104     TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l),
5105     TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l),
5106     TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l),
5107     TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l),
5108     TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l),
5109     TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l),
5110     TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l),
5111
5112     TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l),
5113     TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l),
5114     TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l),
5115     TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l),
5116
5117     TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l),
5118     TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l),
5119     TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l),
5120     TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l),
5121
5122     TEST_c_c (catanh, 0, qnan_value, 0.0, qnan_value),
5123     TEST_c_c (catanh, minus_zero, qnan_value, minus_zero, qnan_value),
5124
5125     TEST_c_c (catanh, plus_infty, qnan_value, 0.0, qnan_value),
5126     TEST_c_c (catanh, minus_infty, qnan_value, minus_zero, qnan_value),
5127
5128     TEST_c_c (catanh, qnan_value, 0, qnan_value, qnan_value),
5129     TEST_c_c (catanh, qnan_value, minus_zero, qnan_value, qnan_value),
5130
5131     TEST_c_c (catanh, qnan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN),
5132     TEST_c_c (catanh, qnan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN),
5133
5134     TEST_c_c (catanh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5135     TEST_c_c (catanh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5136
5137     TEST_c_c (catanh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5138     TEST_c_c (catanh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5139
5140     TEST_c_c (catanh, qnan_value, qnan_value, qnan_value, qnan_value),
5141
5142     TEST_c_c (catanh, 0x1p50L, 0.0L, 8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5143     TEST_c_c (catanh, 0x1p50L, -0.0L, 8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5144     TEST_c_c (catanh, -0x1p50L, 0.0L, -8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5145     TEST_c_c (catanh, -0x1p50L, -0.0L, -8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5146     TEST_c_c (catanh, 0.0L, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L),
5147     TEST_c_c (catanh, -0.0L, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L),
5148     TEST_c_c (catanh, 0.0L, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L),
5149     TEST_c_c (catanh, -0.0L, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L),
5150 #ifndef TEST_FLOAT
5151     TEST_c_c (catanh, 0x1p500L, 0.0L, 3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5152     TEST_c_c (catanh, 0x1p500L, -0.0L, 3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5153     TEST_c_c (catanh, -0x1p500L, 0.0L, -3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5154     TEST_c_c (catanh, -0x1p500L, -0.0L, -3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5155     TEST_c_c (catanh, 0.0L, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L),
5156     TEST_c_c (catanh, -0.0L, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L),
5157     TEST_c_c (catanh, 0.0L, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L),
5158     TEST_c_c (catanh, -0.0L, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L),
5159 #endif
5160 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5161     TEST_c_c (catanh, 0x1p5000L, 0.0L, 7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5162     TEST_c_c (catanh, 0x1p5000L, -0.0L, 7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5163     TEST_c_c (catanh, -0x1p5000L, 0.0L, -7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5164     TEST_c_c (catanh, -0x1p5000L, -0.0L, -7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5165     TEST_c_c (catanh, 0.0L, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L),
5166     TEST_c_c (catanh, -0.0L, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L),
5167     TEST_c_c (catanh, 0.0L, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L),
5168     TEST_c_c (catanh, -0.0L, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L),
5169 #endif
5170     TEST_c_c (catanh, 0x1p63L, 0.5L, 1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5171     TEST_c_c (catanh, 0x1p63L, -0.5L, 1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5172     TEST_c_c (catanh, -0x1p63L, 0.5L, -1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5173     TEST_c_c (catanh, -0x1p63L, -0.5L, -1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5174     TEST_c_c (catanh, 0.5L, 0x1p63L, 5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5175     TEST_c_c (catanh, -0.5L, 0x1p63L, -5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5176     TEST_c_c (catanh, 0.5L, -0x1p63L, 5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5177     TEST_c_c (catanh, -0.5L, -0x1p63L, -5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5178 #ifndef TEST_FLOAT
5179     TEST_c_c (catanh, 0x1p511L, 0.5L, 1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5180     TEST_c_c (catanh, 0x1p511L, -0.5L, 1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5181     TEST_c_c (catanh, -0x1p511L, 0.5L, -1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5182     TEST_c_c (catanh, -0x1p511L, -0.5L, -1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5183     TEST_c_c (catanh, 0.5L, 0x1p511L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5184     TEST_c_c (catanh, -0.5L, 0x1p511L, -1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5185     TEST_c_c (catanh, 0.5L, -0x1p511L, 1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5186     TEST_c_c (catanh, -0.5L, -0x1p511L, -1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5187 #endif
5188 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5189     TEST_c_c (catanh, 0x1p8191L, 0.5L, 1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5190     TEST_c_c (catanh, 0x1p8191L, -0.5L, 1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5191     TEST_c_c (catanh, -0x1p8191L, 0.5L, -1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5192     TEST_c_c (catanh, -0x1p8191L, -0.5L, -1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5193     TEST_c_c (catanh, 0.5L, 0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5194     TEST_c_c (catanh, -0.5L, 0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5195     TEST_c_c (catanh, 0.5L, -0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5196     TEST_c_c (catanh, -0.5L, -0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5197 #endif
5198     TEST_c_c (catanh, 0x1p100L, 0.0L, 7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5199     TEST_c_c (catanh, 0x1p100L, -0.0L, 7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5200     TEST_c_c (catanh, -0x1p100L, 0.0L, -7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5201     TEST_c_c (catanh, -0x1p100L, -0.0L, -7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5202     TEST_c_c (catanh, 0.0L, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L),
5203     TEST_c_c (catanh, -0.0L, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L),
5204     TEST_c_c (catanh, 0.0L, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L),
5205     TEST_c_c (catanh, -0.0L, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L),
5206     TEST_c_c (catanh, 0x1.fp127L, 0.0L, 3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5207     TEST_c_c (catanh, 0x1.fp127L, -0.0L, 3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5208     TEST_c_c (catanh, -0x1.fp127L, 0.0L, -3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5209     TEST_c_c (catanh, -0x1.fp127L, -0.0L, -3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5210     TEST_c_c (catanh, 0.0L, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L),
5211     TEST_c_c (catanh, -0.0L, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L),
5212     TEST_c_c (catanh, 0.0L, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L),
5213     TEST_c_c (catanh, -0.0L, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L),
5214     TEST_c_c (catanh, 0x1.fp127L, 0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5215     TEST_c_c (catanh, 0x1.fp127L, -0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5216     TEST_c_c (catanh, -0x1.fp127L, 0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5217     TEST_c_c (catanh, -0x1.fp127L, -0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5218 #ifndef TEST_FLOAT
5219     TEST_c_c (catanh, 0x1p900L, 0.0L, 1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5220     TEST_c_c (catanh, 0x1p900L, -0.0L, 1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5221     TEST_c_c (catanh, -0x1p900L, 0.0L, -1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5222     TEST_c_c (catanh, -0x1p900L, -0.0L, -1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5223     TEST_c_c (catanh, 0.0L, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L),
5224     TEST_c_c (catanh, -0.0L, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L),
5225     TEST_c_c (catanh, 0.0L, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L),
5226     TEST_c_c (catanh, -0.0L, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L),
5227     TEST_c_c (catanh, 0x1.fp1023L, 0.0L, 5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5228     TEST_c_c (catanh, 0x1.fp1023L, -0.0L, 5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5229     TEST_c_c (catanh, -0x1.fp1023L, 0.0L, -5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5230     TEST_c_c (catanh, -0x1.fp1023L, -0.0L, -5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5231     TEST_c_c (catanh, 0.0L, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L),
5232     TEST_c_c (catanh, -0.0L, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L),
5233     TEST_c_c (catanh, 0.0L, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L),
5234     TEST_c_c (catanh, -0.0L, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L),
5235     TEST_c_c (catanh, 0x1.fp1023L, 0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5236     TEST_c_c (catanh, 0x1.fp1023L, -0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5237     TEST_c_c (catanh, -0x1.fp1023L, 0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5238     TEST_c_c (catanh, -0x1.fp1023L, -0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5239 #endif
5240 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5241     TEST_c_c (catanh, 0x1p10000L, 0.0L, 5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5242     TEST_c_c (catanh, 0x1p10000L, -0.0L, 5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5243     TEST_c_c (catanh, -0x1p10000L, 0.0L, -5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5244     TEST_c_c (catanh, -0x1p10000L, -0.0L, -5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5245     TEST_c_c (catanh, 0.0L, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L),
5246     TEST_c_c (catanh, -0.0L, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L),
5247     TEST_c_c (catanh, 0.0L, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L),
5248     TEST_c_c (catanh, -0.0L, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L),
5249     TEST_c_c (catanh, 0x1.fp16383L, 0.0L, 8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5250     TEST_c_c (catanh, 0x1.fp16383L, -0.0L, 8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5251     TEST_c_c (catanh, -0x1.fp16383L, 0.0L, -8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5252     TEST_c_c (catanh, -0x1.fp16383L, -0.0L, -8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5253     TEST_c_c (catanh, 0.0L, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L),
5254     TEST_c_c (catanh, -0.0L, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L),
5255     TEST_c_c (catanh, 0.0L, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L),
5256     TEST_c_c (catanh, -0.0L, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L),
5257     TEST_c_c (catanh, 0x1.fp16383L, 0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5258     TEST_c_c (catanh, 0x1.fp16383L, -0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5259     TEST_c_c (catanh, -0x1.fp16383L, 0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5260     TEST_c_c (catanh, -0x1.fp16383L, -0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5261 #endif
5262     TEST_c_c (catanh, 0x1p-13L, 1.0L, 6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5263     TEST_c_c (catanh, 0x1p-13L, -1.0L, 6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5264     TEST_c_c (catanh, -0x1p-13L, 1.0L, -6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5265     TEST_c_c (catanh, -0x1p-13L, -1.0L, -6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5266     TEST_c_c (catanh, 1.0L, 0x1p-13L, 4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5267     TEST_c_c (catanh, -1.0L, 0x1p-13L, -4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5268     TEST_c_c (catanh, 1.0L, -0x1p-13L, 4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5269     TEST_c_c (catanh, -1.0L, -0x1p-13L, -4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5270     TEST_c_c (catanh, 0x1p-27L, 1.0L, 3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5271     TEST_c_c (catanh, 0x1p-27L, -1.0L, 3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5272     TEST_c_c (catanh, -0x1p-27L, 1.0L, -3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5273     TEST_c_c (catanh, -0x1p-27L, -1.0L, -3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5274     TEST_c_c (catanh, 1.0L, 0x1p-27L, 9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5275     TEST_c_c (catanh, -1.0L, 0x1p-27L, -9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5276     TEST_c_c (catanh, 1.0L, -0x1p-27L, 9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5277     TEST_c_c (catanh, -1.0L, -0x1p-27L, -9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5278     TEST_c_c (catanh, 0x1p-33L, 1.0L, 5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5279     TEST_c_c (catanh, 0x1p-33L, -1.0L, 5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5280     TEST_c_c (catanh, -0x1p-33L, 1.0L, -5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5281     TEST_c_c (catanh, -0x1p-33L, -1.0L, -5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5282     TEST_c_c (catanh, 1.0L, 0x1p-33L, 1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5283     TEST_c_c (catanh, -1.0L, 0x1p-33L, -1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5284     TEST_c_c (catanh, 1.0L, -0x1p-33L, 1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5285     TEST_c_c (catanh, -1.0L, -0x1p-33L, -1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5286     TEST_c_c (catanh, 0x1p-54L, 1.0L, 2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5287     TEST_c_c (catanh, 0x1p-54L, -1.0L, 2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5288     TEST_c_c (catanh, -0x1p-54L, 1.0L, -2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5289     TEST_c_c (catanh, -0x1p-54L, -1.0L, -2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5290     TEST_c_c (catanh, 1.0L, 0x1p-54L, 1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5291     TEST_c_c (catanh, -1.0L, 0x1p-54L, -1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5292     TEST_c_c (catanh, 1.0L, -0x1p-54L, 1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5293     TEST_c_c (catanh, -1.0L, -0x1p-54L, -1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5294     TEST_c_c (catanh, 0x1p-57L, 1.0L, 3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5295     TEST_c_c (catanh, 0x1p-57L, -1.0L, 3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5296     TEST_c_c (catanh, -0x1p-57L, 1.0L, -3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5297     TEST_c_c (catanh, -0x1p-57L, -1.0L, -3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5298     TEST_c_c (catanh, 1.0L, 0x1p-57L, 2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5299     TEST_c_c (catanh, -1.0L, 0x1p-57L, -2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5300     TEST_c_c (catanh, 1.0L, -0x1p-57L, 2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5301     TEST_c_c (catanh, -1.0L, -0x1p-57L, -2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5302     TEST_c_c (catanh, 0x1p-13L, 0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5303     TEST_c_c (catanh, 0x1p-13L, -0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5304     TEST_c_c (catanh, -0x1p-13L, 0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5305     TEST_c_c (catanh, -0x1p-13L, -0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5306     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-13L, 4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5307     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-13L, -4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5308     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-13L, 4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5309     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-13L, -4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5310     TEST_c_c (catanh, 0x1p-13L, 0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5311     TEST_c_c (catanh, 0x1p-13L, -0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5312     TEST_c_c (catanh, -0x1p-13L, 0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5313     TEST_c_c (catanh, -0x1p-13L, -0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5314     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-13L, 4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5315     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-13L, -4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5316     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-13L, 4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5317     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-13L, -4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5318 #ifndef TEST_FLOAT
5319     TEST_c_c (catanh, 0x1p-27L, 0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5320     TEST_c_c (catanh, 0x1p-27L, -0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5321     TEST_c_c (catanh, -0x1p-27L, 0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5322     TEST_c_c (catanh, -0x1p-27L, -0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5323     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-27L, 9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5324     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-27L, -9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5325     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-27L, 9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5326     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-27L, -9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5327     TEST_c_c (catanh, 0x1p-27L, 0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5328     TEST_c_c (catanh, 0x1p-27L, -0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5329     TEST_c_c (catanh, -0x1p-27L, 0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5330     TEST_c_c (catanh, -0x1p-27L, -0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5331     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-27L, 9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5332     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-27L, -9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5333     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-27L, 9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5334     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-27L, -9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5335 #endif
5336 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5337     TEST_c_c (catanh, 0x1p-33L, 0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5338     TEST_c_c (catanh, 0x1p-33L, -0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5339     TEST_c_c (catanh, -0x1p-33L, 0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5340     TEST_c_c (catanh, -0x1p-33L, -0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5341     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-33L, 1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5342     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-33L, -1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5343     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-33L, 1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5344     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-33L, -1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5345     TEST_c_c (catanh, 0x1p-33L, 0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5346     TEST_c_c (catanh, 0x1p-33L, -0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5347     TEST_c_c (catanh, -0x1p-33L, 0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5348     TEST_c_c (catanh, -0x1p-33L, -0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5349     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-33L, 1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5350     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-33L, -1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5351     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-33L, 1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5352     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-33L, -1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5353 #endif
5354 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5355     TEST_c_c (catanh, 0x1p-54L, 0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5356     TEST_c_c (catanh, 0x1p-54L, -0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5357     TEST_c_c (catanh, -0x1p-54L, 0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5358     TEST_c_c (catanh, -0x1p-54L, -0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5359     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-54L, 1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5360     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-54L, -1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5361     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-54L, 1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5362     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-54L, -1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5363     TEST_c_c (catanh, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5364     TEST_c_c (catanh, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5365     TEST_c_c (catanh, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5366     TEST_c_c (catanh, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5367     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5368     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5369     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5370     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5371 #endif
5372 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5373     TEST_c_c (catanh, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5374     TEST_c_c (catanh, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5375     TEST_c_c (catanh, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5376     TEST_c_c (catanh, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5377     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5378     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5379     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5380     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5381     TEST_c_c (catanh, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5382     TEST_c_c (catanh, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5383     TEST_c_c (catanh, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5384     TEST_c_c (catanh, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5385     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5386     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5387     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5388     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5389 #endif
5390     TEST_c_c (catanh, 1.0L, 0x1p-64L, 2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5391     TEST_c_c (catanh, 1.0L, -0x1p-64L, 2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5392     TEST_c_c (catanh, -1.0L, 0x1p-64L, -2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5393     TEST_c_c (catanh, -1.0L, -0x1p-64L, -2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5394     TEST_c_c (catanh, 0x1p-64L, 1.0L, 2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5395     TEST_c_c (catanh, -0x1p-64L, 1.0L, -2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5396     TEST_c_c (catanh, 0x1p-64L, -1.0L, 2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5397     TEST_c_c (catanh, -0x1p-64L, -1.0L, -2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5398     TEST_c_c (catanh, 1.0L, 0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5399     TEST_c_c (catanh, 1.0L, -0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5400     TEST_c_c (catanh, -1.0L, 0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5401     TEST_c_c (catanh, -1.0L, -0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5402     TEST_c_c (catanh, 0x1.3p-73L, 1.0L, 6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5403     TEST_c_c (catanh, -0x1.3p-73L, 1.0L, -6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5404     TEST_c_c (catanh, 0x1.3p-73L, -1.0L, 6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5405     TEST_c_c (catanh, -0x1.3p-73L, -1.0L, -6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5406     TEST_c_c (catanh, 1.0L, 0x1p-124L, 4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5407     TEST_c_c (catanh, 1.0L, -0x1p-124L, 4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5408     TEST_c_c (catanh, -1.0L, 0x1p-124L, -4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5409     TEST_c_c (catanh, -1.0L, -0x1p-124L, -4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5410     TEST_c_c (catanh, 0x1p-124L, 1.0L, 2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5411     TEST_c_c (catanh, -0x1p-124L, 1.0L, -2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5412     TEST_c_c (catanh, 0x1p-124L, -1.0L, 2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5413     TEST_c_c (catanh, -0x1p-124L, -1.0L, -2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5414     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-126L, 8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5415     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-126L, 8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5416     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-126L, -8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5417     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-126L, -8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5418     TEST_c_c (catanh, 0x1p-126L, 0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5419     TEST_c_c (catanh, -0x1p-126L, 0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5420     TEST_c_c (catanh, 0x1p-126L, -0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5421     TEST_c_c (catanh, -0x1p-126L, -0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5422     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-126L, 8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5423     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-126L, 8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5424     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-126L, -8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5425     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-126L, -8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5426     TEST_c_c (catanh, 0x1p-126L, 0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5427     TEST_c_c (catanh, -0x1p-126L, 0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5428     TEST_c_c (catanh, 0x1p-126L, -0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5429     TEST_c_c (catanh, -0x1p-126L, -0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5430 #ifndef TEST_FLOAT
5431     TEST_c_c (catanh, 1.0L, 0x1p-512L, 1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5432     TEST_c_c (catanh, 1.0L, -0x1p-512L, 1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5433     TEST_c_c (catanh, -1.0L, 0x1p-512L, -1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5434     TEST_c_c (catanh, -1.0L, -0x1p-512L, -1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5435     TEST_c_c (catanh, 0x1p-512L, 1.0L, 3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5436     TEST_c_c (catanh, -0x1p-512L, 1.0L, -3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5437     TEST_c_c (catanh, 0x1p-512L, -1.0L, 3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5438     TEST_c_c (catanh, -0x1p-512L, -1.0L, -3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5439     TEST_c_c (catanh, 1.0L, 0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5440     TEST_c_c (catanh, 1.0L, -0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5441     TEST_c_c (catanh, -1.0L, 0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5442     TEST_c_c (catanh, -1.0L, -0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5443     TEST_c_c (catanh, 0x1.3p-536L, 1.0L, 2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5444     TEST_c_c (catanh, -0x1.3p-536L, 1.0L, -2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5445     TEST_c_c (catanh, 0x1.3p-536L, -1.0L, 2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5446     TEST_c_c (catanh, -0x1.3p-536L, -1.0L, -2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5447     TEST_c_c (catanh, 1.0L, 0x1p-1020L, 3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5448     TEST_c_c (catanh, 1.0L, -0x1p-1020L, 3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5449     TEST_c_c (catanh, -1.0L, 0x1p-1020L, -3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5450     TEST_c_c (catanh, -1.0L, -0x1p-1020L, -3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5451     TEST_c_c (catanh, 0x1p-1020L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5452     TEST_c_c (catanh, -0x1p-1020L, 1.0L, -4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5453     TEST_c_c (catanh, 0x1p-1020L, -1.0L, 4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5454     TEST_c_c (catanh, -0x1p-1020L, -1.0L, -4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5455     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-1022L, 1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5456     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-1022L, 1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5457     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-1022L, -1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5458     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-1022L, -1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5459     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5460     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5461     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5462     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5463     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-1022L, 1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5464     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-1022L, 1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5465     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-1022L, -1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5466     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-1022L, -1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5467     TEST_c_c (catanh, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5468     TEST_c_c (catanh, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5469     TEST_c_c (catanh, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5470     TEST_c_c (catanh, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5471 #endif
5472 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5473     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-1022L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5474     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-1022L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5475     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-1022L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5476     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-1022L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5477     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5478     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5479     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5480     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5481     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5482     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5483     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5484     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5485     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5486     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5487     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5488     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5489 #endif
5490 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5491     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5492     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5493     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5494     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5495     TEST_c_c (catanh, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5496     TEST_c_c (catanh, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5497     TEST_c_c (catanh, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5498     TEST_c_c (catanh, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5499     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5500     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5501     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5502     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5503     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5504     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5505     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5506     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5507 #endif
5508 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5509     TEST_c_c (catanh, 1.0L, 0x1p-8192L, 2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5510     TEST_c_c (catanh, 1.0L, -0x1p-8192L, 2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5511     TEST_c_c (catanh, -1.0L, 0x1p-8192L, -2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5512     TEST_c_c (catanh, -1.0L, -0x1p-8192L, -2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5513     TEST_c_c (catanh, 0x1p-8192L, 1.0L, 4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5514     TEST_c_c (catanh, -0x1p-8192L, 1.0L, -4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5515     TEST_c_c (catanh, 0x1p-8192L, -1.0L, 4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5516     TEST_c_c (catanh, -0x1p-8192L, -1.0L, -4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5517     TEST_c_c (catanh, 1.0L, 0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5518     TEST_c_c (catanh, 1.0L, -0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5519     TEST_c_c (catanh, -1.0L, 0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5520     TEST_c_c (catanh, -1.0L, -0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5521     TEST_c_c (catanh, 0x1.3p-8221L, 1.0L, 1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5522     TEST_c_c (catanh, -0x1.3p-8221L, 1.0L, -1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5523     TEST_c_c (catanh, 0x1.3p-8221L, -1.0L, 1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5524     TEST_c_c (catanh, -0x1.3p-8221L, -1.0L, -1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5525     TEST_c_c (catanh, 1.0L, 0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5526     TEST_c_c (catanh, 1.0L, -0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5527     TEST_c_c (catanh, -1.0L, 0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5528     TEST_c_c (catanh, -1.0L, -0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5529     TEST_c_c (catanh, 0x1.3p-8246L, 1.0L, 3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5530     TEST_c_c (catanh, -0x1.3p-8246L, 1.0L, -3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5531     TEST_c_c (catanh, 0x1.3p-8246L, -1.0L, 3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5532     TEST_c_c (catanh, -0x1.3p-8246L, -1.0L, -3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5533     TEST_c_c (catanh, 1.0L, 0x1p-16380L, 5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5534     TEST_c_c (catanh, 1.0L, -0x1p-16380L, 5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5535     TEST_c_c (catanh, -1.0L, 0x1p-16380L, -5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5536     TEST_c_c (catanh, -1.0L, -0x1p-16380L, -5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5537     TEST_c_c (catanh, 0x1p-16380L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5538     TEST_c_c (catanh, -0x1p-16380L, 1.0L, -6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5539     TEST_c_c (catanh, 0x1p-16380L, -1.0L, 6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5540     TEST_c_c (catanh, -0x1p-16380L, -1.0L, -6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5541     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-16382L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5542     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-16382L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5543     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-16382L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5544     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-16382L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5545     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5546     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5547     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5548     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5549     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5550     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5551     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5552     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5553     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5554     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5555     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5556     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5557 # if LDBL_MANT_DIG >= 113
5558     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5559     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5560     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5561     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5562     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5563     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5564     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5565     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5566     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5567     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5568     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5569     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5570     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5571     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5572     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5573     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5574 # endif
5575 #endif
5576
5577     TEST_c_c (catanh, 0.75L, 1.25L, 0.261492138795671927078652057366532140L, 0.996825126463918666098902241310446708L),
5578     TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L),
5579     END_DATA (catanh)
5580   };
5581
5582 static void
5583 catanh_test (void)
5584 {
5585   errno = 0;
5586   FUNC(catanh) (BUILD_COMPLEX (0.7L, 1.2L));
5587   if (errno == ENOSYS)
5588     /* Function not implemented.  */
5589     return;
5590
5591   START (catanh);
5592   RUN_TEST_LOOP_c_c (catanh, catanh_test_data, );
5593   END (catanh, complex);
5594 }
5595
5596 static const struct test_f_f_data cbrt_test_data[] =
5597   {
5598     START_DATA (cbrt),
5599     TEST_f_f (cbrt, 0.0, 0.0),
5600     TEST_f_f (cbrt, minus_zero, minus_zero),
5601
5602     TEST_f_f (cbrt, plus_infty, plus_infty),
5603     TEST_f_f (cbrt, minus_infty, minus_infty),
5604     TEST_f_f (cbrt, qnan_value, qnan_value),
5605
5606     TEST_f_f (cbrt, -0.001L, -0.1L),
5607     TEST_f_f (cbrt, 8, 2),
5608     TEST_f_f (cbrt, -27.0, -3.0),
5609     TEST_f_f (cbrt, 0.9921875L, 0.997389022060725270579075195353955217L),
5610     TEST_f_f (cbrt, 0.75L, 0.908560296416069829445605878163630251L),
5611     END_DATA (cbrt)
5612   };
5613
5614 static void
5615 cbrt_test (void)
5616 {
5617   errno = 0;
5618   FUNC(cbrt) (8);
5619   if (errno == ENOSYS)
5620     /* Function not implemented.  */
5621     return;
5622
5623   START (cbrt);
5624   RUN_TEST_LOOP_f_f (cbrt, cbrt_test_data, );
5625   END (cbrt);
5626 }
5627
5628
5629 static const struct test_c_c_data ccos_test_data[] =
5630   {
5631     START_DATA (ccos),
5632     TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero),
5633     TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0),
5634     TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0),
5635     TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero),
5636
5637     TEST_c_c (ccos, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5638     TEST_c_c (ccos, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5639     TEST_c_c (ccos, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5640     TEST_c_c (ccos, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5641
5642     TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero),
5643     TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0),
5644     TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0),
5645     TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero),
5646
5647     TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5648     TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5649     TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5650     TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5651
5652     TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty),
5653     TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty),
5654     TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty),
5655     TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty),
5656
5657     TEST_c_c (ccos, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5658     TEST_c_c (ccos, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5659     TEST_c_c (ccos, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5660     TEST_c_c (ccos, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5661
5662     TEST_c_c (ccos, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5663     TEST_c_c (ccos, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5664
5665     TEST_c_c (ccos, qnan_value, plus_infty, plus_infty, qnan_value),
5666     TEST_c_c (ccos, qnan_value, minus_infty, plus_infty, qnan_value),
5667
5668     TEST_c_c (ccos, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5669     TEST_c_c (ccos, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5670
5671     TEST_c_c (ccos, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5672     TEST_c_c (ccos, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5673
5674     TEST_c_c (ccos, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5675     TEST_c_c (ccos, -10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5676
5677     TEST_c_c (ccos, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5678     TEST_c_c (ccos, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5679
5680     TEST_c_c (ccos, qnan_value, qnan_value, qnan_value, qnan_value),
5681
5682     TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L),
5683     TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L),
5684
5685     TEST_c_c (ccos, 0.75, 89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5686     TEST_c_c (ccos, 0.75, -89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5687     TEST_c_c (ccos, -0.75, 89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5688     TEST_c_c (ccos, -0.75, -89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5689
5690 #ifndef TEST_FLOAT
5691     TEST_c_c (ccos, 0.75, 710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5692     TEST_c_c (ccos, 0.75, -710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5693     TEST_c_c (ccos, -0.75, 710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5694     TEST_c_c (ccos, -0.75, -710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5695 #endif
5696
5697 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5698     TEST_c_c (ccos, 0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5699     TEST_c_c (ccos, 0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5700     TEST_c_c (ccos, -0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5701     TEST_c_c (ccos, -0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5702 #endif
5703
5704 #ifdef TEST_FLOAT
5705     TEST_c_c (ccos, 0x1p-149, 180, plus_infty, -1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5706 #endif
5707
5708 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5709     TEST_c_c (ccos, 0x1p-1074, 1440, plus_infty, -5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5710 #endif
5711
5712 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5713     TEST_c_c (ccos, 0x1p-16434L, 22730, plus_infty, -1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5714 #endif
5715
5716     TEST_c_c (ccos, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5717     TEST_c_c (ccos, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5718     END_DATA (ccos)
5719   };
5720
5721 static void
5722 ccos_test (void)
5723 {
5724   errno = 0;
5725   FUNC(ccos) (BUILD_COMPLEX (0, 0));
5726   if (errno == ENOSYS)
5727     /* Function not implemented.  */
5728     return;
5729
5730   START (ccos);
5731   RUN_TEST_LOOP_c_c (ccos, ccos_test_data, );
5732   END (ccos, complex);
5733 }
5734
5735
5736 static const struct test_c_c_data ccosh_test_data[] =
5737   {
5738     START_DATA (ccosh),
5739     TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0),
5740     TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero),
5741     TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero),
5742     TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0),
5743
5744     TEST_c_c (ccosh, 0.0, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5745     TEST_c_c (ccosh, minus_zero, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5746     TEST_c_c (ccosh, 0.0, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5747     TEST_c_c (ccosh, minus_zero, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5748
5749     TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0),
5750     TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero),
5751     TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero),
5752     TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0),
5753
5754     TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5755     TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5756     TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5757     TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5758
5759     TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty),
5760     TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty),
5761     TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty),
5762     TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty),
5763
5764     TEST_c_c (ccosh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5765     TEST_c_c (ccosh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5766     TEST_c_c (ccosh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5767     TEST_c_c (ccosh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5768
5769     TEST_c_c (ccosh, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5770     TEST_c_c (ccosh, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5771
5772     TEST_c_c (ccosh, plus_infty, qnan_value, plus_infty, qnan_value),
5773     TEST_c_c (ccosh, minus_infty, qnan_value, plus_infty, qnan_value),
5774
5775     TEST_c_c (ccosh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5776     TEST_c_c (ccosh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5777
5778     TEST_c_c (ccosh, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5779     TEST_c_c (ccosh, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5780
5781     TEST_c_c (ccosh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5782     TEST_c_c (ccosh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5783
5784     TEST_c_c (ccosh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5785     TEST_c_c (ccosh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5786
5787     TEST_c_c (ccosh, qnan_value, qnan_value, qnan_value, qnan_value),
5788
5789     TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L),
5790
5791     TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L),
5792
5793     TEST_c_c (ccosh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5794     TEST_c_c (ccosh, -89.5, 0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5795     TEST_c_c (ccosh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5796     TEST_c_c (ccosh, -89.5, -0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5797
5798 #ifndef TEST_FLOAT
5799     TEST_c_c (ccosh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5800     TEST_c_c (ccosh, -710.5, 0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5801     TEST_c_c (ccosh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5802     TEST_c_c (ccosh, -710.5, -0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5803 #endif
5804
5805 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5806     TEST_c_c (ccosh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5807     TEST_c_c (ccosh, -11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5808     TEST_c_c (ccosh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5809     TEST_c_c (ccosh, -11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5810 #endif
5811
5812 #ifdef TEST_FLOAT
5813     TEST_c_c (ccosh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5814 #endif
5815
5816 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5817     TEST_c_c (ccosh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5818 #endif
5819
5820 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5821     TEST_c_c (ccosh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5822 #endif
5823
5824     TEST_c_c (ccosh, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
5825     TEST_c_c (ccosh, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
5826     END_DATA (ccosh)
5827   };
5828
5829 static void
5830 ccosh_test (void)
5831 {
5832   errno = 0;
5833   FUNC(ccosh) (BUILD_COMPLEX (0.7L, 1.2L));
5834   if (errno == ENOSYS)
5835     /* Function not implemented.  */
5836     return;
5837
5838   START (ccosh);
5839   RUN_TEST_LOOP_c_c (ccosh, ccosh_test_data, );
5840   END (ccosh, complex);
5841 }
5842
5843
5844 static const struct test_f_f_data ceil_test_data[] =
5845   {
5846     START_DATA (ceil),
5847     TEST_f_f (ceil, 0.0, 0.0),
5848     TEST_f_f (ceil, minus_zero, minus_zero),
5849     TEST_f_f (ceil, plus_infty, plus_infty),
5850     TEST_f_f (ceil, minus_infty, minus_infty),
5851     TEST_f_f (ceil, qnan_value, qnan_value),
5852
5853     TEST_f_f (ceil, M_PIl, 4.0),
5854     TEST_f_f (ceil, -M_PIl, -3.0),
5855     TEST_f_f (ceil, 0.1, 1.0),
5856     TEST_f_f (ceil, 0.25, 1.0),
5857     TEST_f_f (ceil, 0.625, 1.0),
5858     TEST_f_f (ceil, -0.1, minus_zero),
5859     TEST_f_f (ceil, -0.25, minus_zero),
5860     TEST_f_f (ceil, -0.625, minus_zero),
5861
5862 #ifdef TEST_LDOUBLE
5863     /* The result can only be represented in long double.  */
5864     TEST_f_f (ceil, 4503599627370495.5L, 4503599627370496.0L),
5865     TEST_f_f (ceil, 4503599627370496.25L, 4503599627370497.0L),
5866     TEST_f_f (ceil, 4503599627370496.5L, 4503599627370497.0L),
5867     TEST_f_f (ceil, 4503599627370496.75L, 4503599627370497.0L),
5868     TEST_f_f (ceil, 4503599627370497.5L, 4503599627370498.0L),
5869
5870     TEST_f_f (ceil, -4503599627370495.5L, -4503599627370495.0L),
5871     TEST_f_f (ceil, -4503599627370496.25L, -4503599627370496.0L),
5872     TEST_f_f (ceil, -4503599627370496.5L, -4503599627370496.0L),
5873     TEST_f_f (ceil, -4503599627370496.75L, -4503599627370496.0L),
5874     TEST_f_f (ceil, -4503599627370497.5L, -4503599627370497.0L),
5875
5876 # if LDBL_MANT_DIG > 100
5877     TEST_f_f (ceil, 4503599627370494.5000000000001L, 4503599627370495.0L),
5878     TEST_f_f (ceil, 4503599627370495.5000000000001L, 4503599627370496.0L),
5879     TEST_f_f (ceil, 4503599627370496.5000000000001L, 4503599627370497.0L),
5880     TEST_f_f (ceil, -4503599627370494.5000000000001L, -4503599627370494.0L),
5881     TEST_f_f (ceil, -4503599627370495.5000000000001L, -4503599627370495.0L),
5882     TEST_f_f (ceil, -4503599627370496.5000000000001L, -4503599627370496.0L),
5883 # endif
5884
5885     TEST_f_f (ceil, 9007199254740991.5L, 9007199254740992.0L),
5886     TEST_f_f (ceil, 9007199254740992.25L, 9007199254740993.0L),
5887     TEST_f_f (ceil, 9007199254740992.5L, 9007199254740993.0L),
5888     TEST_f_f (ceil, 9007199254740992.75L, 9007199254740993.0L),
5889     TEST_f_f (ceil, 9007199254740993.5L, 9007199254740994.0L),
5890
5891     TEST_f_f (ceil, -9007199254740991.5L, -9007199254740991.0L),
5892     TEST_f_f (ceil, -9007199254740992.25L, -9007199254740992.0L),
5893     TEST_f_f (ceil, -9007199254740992.5L, -9007199254740992.0L),
5894     TEST_f_f (ceil, -9007199254740992.75L, -9007199254740992.0L),
5895     TEST_f_f (ceil, -9007199254740993.5L, -9007199254740993.0L),
5896
5897 # if LDBL_MANT_DIG > 100
5898     TEST_f_f (ceil, 9007199254740991.0000000000001L, 9007199254740992.0L),
5899     TEST_f_f (ceil, 9007199254740992.0000000000001L, 9007199254740993.0L),
5900     TEST_f_f (ceil, 9007199254740993.0000000000001L, 9007199254740994.0L),
5901     TEST_f_f (ceil, 9007199254740991.5000000000001L, 9007199254740992.0L),
5902     TEST_f_f (ceil, 9007199254740992.5000000000001L, 9007199254740993.0L),
5903     TEST_f_f (ceil, 9007199254740993.5000000000001L, 9007199254740994.0L),
5904
5905     TEST_f_f (ceil, -9007199254740991.0000000000001L, -9007199254740991.0L),
5906     TEST_f_f (ceil, -9007199254740992.0000000000001L, -9007199254740992.0L),
5907     TEST_f_f (ceil, -9007199254740993.0000000000001L, -9007199254740993.0L),
5908     TEST_f_f (ceil, -9007199254740991.5000000000001L, -9007199254740991.0L),
5909     TEST_f_f (ceil, -9007199254740992.5000000000001L, -9007199254740992.0L),
5910     TEST_f_f (ceil, -9007199254740993.5000000000001L, -9007199254740993.0L),
5911 # endif
5912
5913     TEST_f_f (ceil, 72057594037927935.5L, 72057594037927936.0L),
5914     TEST_f_f (ceil, 72057594037927936.25L, 72057594037927937.0L),
5915     TEST_f_f (ceil, 72057594037927936.5L, 72057594037927937.0L),
5916     TEST_f_f (ceil, 72057594037927936.75L, 72057594037927937.0L),
5917     TEST_f_f (ceil, 72057594037927937.5L, 72057594037927938.0L),
5918
5919     TEST_f_f (ceil, -72057594037927935.5L, -72057594037927935.0L),
5920     TEST_f_f (ceil, -72057594037927936.25L, -72057594037927936.0L),
5921     TEST_f_f (ceil, -72057594037927936.5L, -72057594037927936.0L),
5922     TEST_f_f (ceil, -72057594037927936.75L, -72057594037927936.0L),
5923     TEST_f_f (ceil, -72057594037927937.5L, -72057594037927937.0L),
5924
5925     TEST_f_f (ceil, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
5926     TEST_f_f (ceil, 10141204801825835211973625643008.25L, 10141204801825835211973625643009.0L),
5927     TEST_f_f (ceil, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
5928     TEST_f_f (ceil, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
5929     TEST_f_f (ceil, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
5930 #endif
5931     END_DATA (ceil)
5932   };
5933
5934 static void
5935 ceil_test (void)
5936 {
5937   START (ceil);
5938   RUN_TEST_LOOP_f_f (ceil, ceil_test_data, );
5939   END (ceil);
5940 }
5941
5942
5943 static const struct test_c_c_data cexp_test_data[] =
5944   {
5945     START_DATA (cexp),
5946     TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0),
5947     TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0),
5948     TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero),
5949     TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero),
5950
5951     TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0),
5952     TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero),
5953
5954     TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0),
5955     TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero),
5956
5957     TEST_c_c (cexp, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5958     TEST_c_c (cexp, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5959
5960     TEST_c_c (cexp, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5961     TEST_c_c (cexp, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5962
5963     TEST_c_c (cexp, 100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5964     TEST_c_c (cexp, -100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5965
5966     TEST_c_c (cexp, 100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5967     TEST_c_c (cexp, -100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5968
5969     TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0),
5970     TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero),
5971     TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty),
5972     TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty),
5973
5974     TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5975     TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5976
5977     TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN),
5978     TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN),
5979
5980     TEST_c_c (cexp, minus_infty, qnan_value, 0, 0, IGNORE_ZERO_INF_SIGN),
5981
5982     TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value),
5983
5984     TEST_c_c (cexp, qnan_value, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5985     TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5986
5987     TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5988     TEST_c_c (cexp, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5989     TEST_c_c (cexp, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5990     TEST_c_c (cexp, qnan_value, qnan_value, qnan_value, qnan_value),
5991
5992     TEST_c_c (cexp, 0.75L, 1.25L, 0.667537446429131586942201977015932112L, 2.00900045494094876258347228145863909L),
5993     TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L),
5994
5995     TEST_c_c (cexp, 0, 0x1p65, 0.99888622066058013610642172179340364209972L, -0.047183876212354673805106149805700013943218L),
5996     TEST_c_c (cexp, 0, -0x1p65, 0.99888622066058013610642172179340364209972L, 0.047183876212354673805106149805700013943218L),
5997     TEST_c_c (cexp, 50, 0x1p127, 4.053997150228616856622417636046265337193e21L, 3.232070315463388524466674772633810238819e21L),
5998
5999 #ifndef TEST_FLOAT
6000     TEST_c_c (cexp, 0, 1e22, 0.5232147853951389454975944733847094921409L, -0.8522008497671888017727058937530293682618L),
6001     TEST_c_c (cexp, 0, 0x1p1023, -0.826369834614147994500785680811743734805L, 0.5631277798508840134529434079444683477104L),
6002     TEST_c_c (cexp, 500, 0x1p1023, -1.159886268932754433233243794561351783426e217L, 7.904017694554466595359379965081774849708e216L),
6003 #endif
6004
6005 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6006     TEST_c_c (cexp, 0, 0x1p16383L, 0.9210843909921906206874509522505756251609L, 0.3893629985894208126948115852610595405563L),
6007     TEST_c_c (cexp, -10000, 0x1p16383L, 1.045876464564882298442774542991176546722e-4343L, 4.421154026488516836023811173959413420548e-4344L),
6008 #endif
6009
6010     TEST_c_c (cexp, 88.75, 0.75, 2.558360358486542817001900410314204322891e38L, 2.383359453227311447654736314679677655100e38L),
6011     TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L, UNDERFLOW_EXCEPTION_FLOAT),
6012
6013 #ifndef TEST_FLOAT
6014     TEST_c_c (cexp, 709.8125, 0.75, 1.355121963080879535248452862759108365762e308L, 1.262426823598609432507811340856186873507e308L),
6015     TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L, UNDERFLOW_EXCEPTION_DOUBLE),
6016 #endif
6017
6018 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6019     TEST_c_c (cexp, 11356.5625, 0.75, 9.052188470850960144814815984311663764287e4931L, 8.432986734191301036267148978260970230200e4931L),
6020     TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L, UNDERFLOW_EXCEPTION),
6021 #endif
6022
6023 #ifdef TEST_FLOAT
6024     TEST_c_c (cexp, 180, 0x1p-149, plus_infty, 2.087071793345235105931967606907855310664e33L, OVERFLOW_EXCEPTION),
6025 #endif
6026
6027 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6028     TEST_c_c (cexp, 1440, 0x1p-1074, plus_infty, 1.196295853897226111293303155636183216483e302L, OVERFLOW_EXCEPTION),
6029 #endif
6030
6031 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6032     TEST_c_c (cexp, 22730, 0x1p-16434L, plus_infty, 2.435706297811211974162115164702304105374e4924L, OVERFLOW_EXCEPTION),
6033 #endif
6034
6035     TEST_c_c (cexp, 1e6, 0, plus_infty, 0, OVERFLOW_EXCEPTION),
6036     TEST_c_c (cexp, 1e6, min_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
6037     TEST_c_c (cexp, 1e6, -min_value, plus_infty, minus_infty, OVERFLOW_EXCEPTION),
6038
6039     TEST_c_c (cexp, min_value, min_subnorm_value, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6040     TEST_c_c (cexp, min_value, -min_subnorm_value, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
6041     END_DATA (cexp)
6042   };
6043
6044 static void
6045 cexp_test (void)
6046 {
6047   errno = 0;
6048   FUNC(cexp) (BUILD_COMPLEX (0, 0));
6049   if (errno == ENOSYS)
6050     /* Function not implemented.  */
6051     return;
6052
6053   START (cexp);
6054   RUN_TEST_LOOP_c_c (cexp, cexp_test_data, );
6055   END (cexp, complex);
6056 }
6057
6058
6059 static void
6060 cimag_test (void)
6061 {
6062   START (cimag);
6063   TEST_c_f (cimag, 1.0, 0.0, 0.0);
6064   TEST_c_f (cimag, 1.0, minus_zero, minus_zero);
6065   TEST_c_f (cimag, 1.0, qnan_value, qnan_value);
6066   TEST_c_f (cimag, qnan_value, qnan_value, qnan_value);
6067   TEST_c_f (cimag, 1.0, plus_infty, plus_infty);
6068   TEST_c_f (cimag, 1.0, minus_infty, minus_infty);
6069   TEST_c_f (cimag, 2.0, 3.0, 3.0);
6070
6071   END (cimag);
6072 }
6073
6074 static const struct test_c_c_data clog_test_data[] =
6075   {
6076     START_DATA (clog),
6077     TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6078     TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6079
6080     TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6081     TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6082
6083     TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l),
6084     TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l),
6085
6086     TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l),
6087     TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l),
6088
6089     TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l),
6090     TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l),
6091     TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l),
6092     TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l),
6093     TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l),
6094     TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l),
6095     TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l),
6096     TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l),
6097
6098     TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl),
6099     TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl),
6100     TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl),
6101     TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl),
6102
6103     TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0),
6104     TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0),
6105     TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero),
6106     TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero),
6107
6108     TEST_c_c (clog, plus_infty, qnan_value, plus_infty, qnan_value),
6109     TEST_c_c (clog, minus_infty, qnan_value, plus_infty, qnan_value),
6110
6111     TEST_c_c (clog, qnan_value, plus_infty, plus_infty, qnan_value),
6112     TEST_c_c (clog, qnan_value, minus_infty, plus_infty, qnan_value),
6113
6114     TEST_c_c (clog, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6115     TEST_c_c (clog, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6116     TEST_c_c (clog, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6117     TEST_c_c (clog, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6118
6119     TEST_c_c (clog, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6120     TEST_c_c (clog, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6121     TEST_c_c (clog, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6122     TEST_c_c (clog, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6123
6124     TEST_c_c (clog, qnan_value, qnan_value, qnan_value, qnan_value),
6125
6126     TEST_c_c (clog, 0.75L, 1.25L, 0.376885901188190075998919126749298416L, 1.03037682652431246378774332703115153L),
6127     TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L),
6128
6129     TEST_c_c (clog, 0x1.fffffep+127L, 0x1.fffffep+127L, 89.06941264234832570836679262104313101776L, M_PI_4l),
6130     TEST_c_c (clog, 0x1.fffffep+127L, 1.0L, 88.72283905206835305365817656031404273372L, 2.938736052218037251011746307725933020145e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6131     TEST_c_c (clog, 0x1p-149L, 0x1p-149L, -102.9323563131518784484589700365392203592L, M_PI_4l),
6132     TEST_c_c (clog, 0x1p-147L, 0x1p-147L, -101.5460619520319878296245057936228672231L, M_PI_4l),
6133
6134 #ifndef TEST_FLOAT
6135     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 710.1292864836639693869320059713862337880L, M_PI_4l),
6136     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 709.8942846690411016323109979483151967689L, 0.4636476090008061606231772164674799632783L),
6137     TEST_c_c (clog, 0x1p-1074L, 0x1p-1074L, -744.0934983311012896593986823853525458290L, M_PI_4l),
6138     TEST_c_c (clog, 0x1p-1073L, 0x1p-1073L, -743.4003511505413443499814502638943692610L, M_PI_4l),
6139 #endif
6140
6141 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6142     TEST_c_c (clog, 0x1.fp+16383L, 0x1.fp+16383L, 11356.83823118610934184548269774874545400L, M_PI_4l),
6143     TEST_c_c (clog, 0x1.fp+16383L, 0x1p+16383L, 11356.60974243783798653123798337822335902L, 0.4764674194737066993385333770295162295856L),
6144     TEST_c_c (clog, 0x1p-16440L, 0x1p-16441L, -11395.22807662984378194141292922726786191L, 0.4636476090008061162142562314612144020285L),
6145 #endif
6146
6147     TEST_c_c (clog, 0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6148     TEST_c_c (clog, -0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6149     TEST_c_c (clog, 0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6150     TEST_c_c (clog, -0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6151     TEST_c_c (clog, -0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, M_PIl),
6152     TEST_c_c (clog, -0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, -M_PIl),
6153 #ifdef TEST_FLOAT
6154     TEST_c_c (clog, 0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, plus_zero, UNDERFLOW_EXCEPTION),
6155     TEST_c_c (clog, 0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, minus_zero, UNDERFLOW_EXCEPTION),
6156 #endif
6157
6158 #ifndef TEST_FLOAT
6159     TEST_c_c (clog, 0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6160     TEST_c_c (clog, -0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6161     TEST_c_c (clog, 0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6162     TEST_c_c (clog, -0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6163     TEST_c_c (clog, -0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, M_PIl),
6164     TEST_c_c (clog, -0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, -M_PIl),
6165 #endif
6166 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6167     TEST_c_c (clog, 0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, plus_zero, UNDERFLOW_EXCEPTION),
6168     TEST_c_c (clog, 0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, minus_zero, UNDERFLOW_EXCEPTION),
6169 #endif
6170
6171 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6172     TEST_c_c (clog, 0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6173     TEST_c_c (clog, -0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6174     TEST_c_c (clog, 0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6175     TEST_c_c (clog, -0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6176     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, M_PIl),
6177     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, -M_PIl),
6178     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6179     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6180 # if LDBL_MANT_DIG >= 113
6181     TEST_c_c (clog, 0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6182     TEST_c_c (clog, -0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6183     TEST_c_c (clog, 0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6184     TEST_c_c (clog, -0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6185     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, M_PIl),
6186     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, -M_PIl),
6187     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6188     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6189 # endif
6190 #endif
6191
6192     TEST_c_c (clog, 1.0L, 0x1.234566p-10L, 6.172834701221959432440126967147726538097e-7L, 1.111110564353742042376451655136933182201e-3L),
6193     TEST_c_c (clog, -1.0L, 0x1.234566p-20L, 5.886877547844618300918562490463748605537e-13L, 3.141591568520436206990380699322226378452L),
6194     TEST_c_c (clog, 0x1.234566p-30L, 1.0L, 5.614163921211322622623353961365728040115e-19L, 1.570796325735258575254858696548386439740L),
6195     TEST_c_c (clog, -0x1.234566p-40L, -1.0L, 5.354083939753840089583620652120903838944e-25L, -1.570796326795931422008642456283782656359L),
6196     TEST_c_c (clog, 0x1.234566p-50L, 1.0L, 5.106052341226425256332038420428899201070e-31L, 1.570796326794895608681734464330528755366L),
6197     TEST_c_c (clog, 0x1.234566p-60L, 1.0L, 4.869510976053643471080816669875627875933e-37L, 1.570796326794896618244456860363082279319L),
6198     TEST_c_c (clog, 0x1p-62L, 1.0L, 2.350988701644575015937473074444491355582e-38L, 1.570796326794896619014481257142650555297L),
6199     TEST_c_c (clog, 0x1p-63L, 1.0L, 5.877471754111437539843682686111228389059e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
6200     TEST_c_c (clog, 0x1p-64L, 1.0L, 1.469367938527859384960920671527807097271e-39L, 1.570796326794896619177111583015476220398L, UNDERFLOW_EXCEPTION_FLOAT),
6201 #ifndef TEST_FLOAT
6202     TEST_c_c (clog, 0x1p-510L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6203     TEST_c_c (clog, 0x1p-511L, 1.0L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6204     TEST_c_c (clog, 0x1p-512L, 1.0L, 2.781342323134001728862790896665505080274e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6205 #endif
6206 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6207     TEST_c_c (clog, 0x1p-8190L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 1.570796326794896619231321691639751442099L),
6208     TEST_c_c (clog, 0x1p-8191L, 1.0L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6209     TEST_c_c (clog, 0x1p-8192L, 1.0L, 4.202628928890116882828347271652190753248e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6210 #endif
6211
6212     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-10L, 8.298731898331237038231468223024422855654e-5L, 1.110938609507128729312743251313024793990e-3L),
6213     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-100L, 8.237022655933121125560939513260027133767e-5L, 8.974094312218060110948251664314290484113e-31L),
6214 #ifndef TEST_FLOAT
6215     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-30L, 2.649094282537168795982991778475646793277e-10L, 3.141592652530155111500161671113150737892L),
6216     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 2.649094276923003995420209214900915462737e-10L, 3.141592653589793238462643383279502884197L),
6217 #endif
6218 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6219     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 9.868649107778739757272772275265050767867e-19L, 9.868649106423871142816660980898339912137e-19L),
6220     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 9.868649107778739752403260515979017248596e-19L, 1.061846605795612822522063052130030717368e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6221 #endif
6222
6223     TEST_c_c (clog, 0x0.ffffffp0L, 0x0.ffffffp-100L, -5.960464655174753498633255797994360530379e-8L, 7.888609052210118054117285652827862296732e-31L),
6224 #ifndef TEST_FLOAT
6225     TEST_c_c (clog, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -1.110223024625156602053389888482372171810e-16L, 9.332636185032188789900895447238171696171e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6226 #endif
6227 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6228     TEST_c_c (clog, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -5.421010862427522170184200798202494495630e-20L, 3.548665303440282824232502561095699343814e-4516L),
6229 #endif
6230
6231     TEST_c_c (clog, 0x1a6p-10L, 0x3a5p-10L, -1.4305135209763571252847059962654228661815e-06L, 1.1460277178115757370775644871674016684074L),
6232     TEST_c_c (clog, 0xf2p-10L, 0x3e3p-10L, 6.1988446308070710970664736815277450078106e-06L, 1.3322126499153926210226335249558203898460L),
6233     TEST_c_c (clog, 0x4d4ep-15L, 0x6605p-15L, -1.6298145321400412054744424587143483169412e-08L, 0.9223574537155056772124552172295398141249L),
6234     TEST_c_c (clog, 0x2818p-15L, 0x798fp-15L, 1.5366822245016167178749091974664853785194e-08L, 1.2522014929038946066987318471922169174157L),
6235     TEST_c_c (clog, 0x9b57bp-20L, 0xcb7b4p-20L, -3.9563019528687610863490232935890272740908e-11L, 0.9187593477446338910857133065497364950682L),
6236     TEST_c_c (clog, 0x2731p-20L, 0xfffd0p-20L, 4.4110493034041283943115971658295280288115e-11L, 1.5612279663766352262688735061954290528838L),
6237     TEST_c_c (clog, 0x2ede88p-23L, 0x771c3fp-23L, -4.4764192352906350039050902870893173560494e-13L, 1.1959106857549200806818600493552847793381L),
6238     TEST_c_c (clog, 0x11682p-23L, 0x7ffed1p-23L, 1.1723955140027907954461000991619077811832e-12L, 1.5622968405332756349813737986164832897108L),
6239     TEST_c_c (clog, 0xa1f2c1p-24L, 0xc643aep-24L, -1.0480505352462576151523512837107080269981e-13L, 0.8858771987699967480545613322309315260313L),
6240     TEST_c_c (clog, 0x659feap-24L, 0xeaf6f9p-24L, 3.7303493627403868207597214252239749960738e-14L, 1.1625816408046866464773042283673653469061L),
6241 #ifndef TEST_FLOAT
6242     TEST_c_c (clog, 0x4447d7175p-35L, 0x6c445e00ap-35L, -1.4823076576950255933915367361099865652625e-20L, 1.0081311552703893116404606212158840190615L),
6243     TEST_c_c (clog, 0x2dd46725bp-35L, 0x7783a1284p-35L, 4.4469229730850767799109418892826021157328e-20L, 1.2046235979300843056806465045930070146351L),
6244     TEST_c_c (clog, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -3.0292258760486853327810377824479932031744e-26L, 0.7998237934177411746093524982030330293980L),
6245     TEST_c_c (clog, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 5.3718272201930019901317065495843842735179e-26L, 1.0503831592447830576186444373011142397404L),
6246     TEST_c_c (clog, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -6.2122796286154679676173624516405339768606e-30L, 1.4904138780720095276446375492434049214172L),
6247     TEST_c_c (clog, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 3.2047474274603604594851472963586149973093e-29L, 1.4422922682185099608731642353544207976604L),
6248     TEST_c_c (clog, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -9.7375017988218644730510244778042114638107e-30L, 0.9790637929494922564724108399524154766631L),
6249     TEST_c_c (clog, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 8.3076914081087805757422664530653247447136e-30L, 1.2072712126771536614482822173033535043206L),
6250     TEST_c_c (clog, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -2.5083311595699359750201056724289010648701e-30L, 1.3710185432462268491534742969536240564640L),
6251     TEST_c_c (clog, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 1.0168910106364605304135563536838075568606e-30L, 0.8208373755522359859870890246475340086663L),
6252     TEST_c_c (clog, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 5.0844550531823026520677817684239496041087e-32L, 1.2627468605458094918919206628466016525397L),
6253     TEST_c_c (clog, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -5.2000108498455368032511404449795741611813e-32L, 1.5288921536982513453421343495466824420259L),
6254 #endif
6255 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6256     TEST_c_c (clog, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -1.1931267660846218205882675852805793644095e-36L, 1.2402109774337032400594953899784058127412L),
6257     TEST_c_c (clog, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 6.4064442119814669184296141278612389400075e-37L, 0.9193591364645830864185131402313014890145L),
6258     TEST_c_c (clog, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -2.3362950222592964220878638677292132852104e-37L, 1.1856121127236268105413184264288408265852L),
6259     TEST_c_c (clog, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 2.4244570985709679851855191080208817099132e-37L, 1.1393074519572050614551047548718495655972L),
6260     TEST_c_c (clog, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -9.9182335850630508484862145328126979066934e-39L, 1.3146479888794807046338799047003947008804L),
6261 #endif
6262 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6263     TEST_c_c (clog, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -1.0509738482436128031927971874674370984602e-45L, 1.0509191467640012308402149909370784281448L),
6264     TEST_c_c (clog, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 1.3487497719126364307640897239165442763573e-43L, 1.1750493008528425228929764149024375035382L),
6265     TEST_c_c (clog, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -4.7775669192897997174762089350332738583822e-50L, 0.8393953487996880419413728440067635213372L),
6266     TEST_c_c (clog, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 2.8398125044729578740243199963484494962411e-50L, 0.9149964976334130461795060758257083099706L),
6267     TEST_c_c (clog, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -3.5048022044913950094635368750889659723004e-57L, 1.3345633256521815205858155673950177421079L),
6268     TEST_c_c (clog, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 4.1101771307217268747345114262406964584250e-56L, 1.4596065864518742494094402406719567059585L),
6269     TEST_c_c (clog, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -1.4281333889622737316199756373421183559948e-62L, 1.3673546561165378090903506783353927980633L),
6270     TEST_c_c (clog, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 1.0027319539522347477331743836657426754857e-62L, 0.8193464073721167323313606647411269414759L),
6271     TEST_c_c (clog, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -1.7471844652198029695350765775994001163767e-63L, 1.1789110097072986038243729592318526094314L),
6272     TEST_c_c (clog, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 4.3299788920664682288477984749202524623248e-63L, 1.4746938237585656250866370987773473745867L),
6273 #endif
6274 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6275     TEST_c_c (clog, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -1.1683999374665377365054966073875064467108e-66L, 1.3257197596350832748781065387304444940172L),
6276     TEST_c_c (clog, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 1.5077923002544367932999503838191154621839e-65L, 1.2897445708311412721399861948957141824914L),
6277     TEST_c_c (clog, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -7.1865869169568789348552370692485515571497e-67L, 0.8730167479365994646287897223471819363668L),
6278     TEST_c_c (clog, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 6.6255694866654064502633121109394710807528e-66L, 1.0526409614996288387567810726095850312049L),
6279     TEST_c_c (clog, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 4.6017338806965821566734340588575402712716e-67L, 1.3547418904611758959096647942223384691728L),
6280     TEST_c_c (clog, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 2.5993421227864195179698176012564317527271e-67L, 1.4132318089683022770487383611430906982461L),
6281 #endif
6282     END_DATA (clog)
6283   };
6284
6285 static void
6286 clog_test (void)
6287 {
6288   errno = 0;
6289   FUNC(clog) (BUILD_COMPLEX (-2, -3));
6290   if (errno == ENOSYS)
6291     /* Function not implemented.  */
6292     return;
6293
6294   START (clog);
6295   RUN_TEST_LOOP_c_c (clog, clog_test_data, );
6296   END (clog, complex);
6297 }
6298
6299
6300 static const struct test_c_c_data clog10_test_data[] =
6301   {
6302     START_DATA (clog10),
6303     TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6304     TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6305
6306     TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6307     TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6308
6309     TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El),
6310
6311     TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El),
6312     TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El),
6313
6314     TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El),
6315     TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El),
6316     TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El),
6317     TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El),
6318     TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El),
6319     TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El),
6320     TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El),
6321     TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El),
6322
6323     TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El),
6324     TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El),
6325     TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El),
6326     TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El),
6327
6328     TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0),
6329     TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0),
6330     TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero),
6331     TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero),
6332
6333     TEST_c_c (clog10, plus_infty, qnan_value, plus_infty, qnan_value),
6334     TEST_c_c (clog10, minus_infty, qnan_value, plus_infty, qnan_value),
6335
6336     TEST_c_c (clog10, qnan_value, plus_infty, plus_infty, qnan_value),
6337     TEST_c_c (clog10, qnan_value, minus_infty, plus_infty, qnan_value),
6338
6339     TEST_c_c (clog10, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6340     TEST_c_c (clog10, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6341     TEST_c_c (clog10, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6342     TEST_c_c (clog10, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6343
6344     TEST_c_c (clog10, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6345     TEST_c_c (clog10, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6346     TEST_c_c (clog10, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6347     TEST_c_c (clog10, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6348
6349     TEST_c_c (clog10, qnan_value, qnan_value, qnan_value, qnan_value),
6350
6351     TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L),
6352     TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L),
6353
6354     TEST_c_c (clog10, 0x1.fffffep+127L, 0x1.fffffep+127L, 38.68235441693561449174780668781319348761L, M_PI4_LOG10El),
6355     TEST_c_c (clog10, 0x1.fffffep+127L, 1.0L, 38.53183941910362389414093724045094697423L, 1.276276851248440096917018665609900318458e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6356     TEST_c_c (clog10, 0x1p-149L, 0x1p-149L, -44.70295435610120748924022586658721447508L, M_PI4_LOG10El),
6357     TEST_c_c (clog10, 0x1p-147L, 0x1p-147L, -44.10089436477324509881274807713822842154L, M_PI4_LOG10El),
6358
6359 #ifndef TEST_FLOAT
6360     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 308.4052305577487344482591243175787477115L, M_PI4_LOG10El),
6361     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 308.3031705664207720674749211936626341569L, 0.2013595981366865903254995612594728746470L),
6362     TEST_c_c (clog10, 0x1p-1074L, 0x1p-1074L, -323.1557003452838130619487034867432642357L, M_PI4_LOG10El),
6363     TEST_c_c (clog10, 0x1p-1073L, 0x1p-1073L, -322.8546703496198318667349645920187712089L, M_PI4_LOG10El),
6364 #endif
6365
6366 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6367     TEST_c_c (clog10, 0x1.fp+16383L, 0x1.fp+16383L, 4932.212175672014259683102930239951947672L, M_PI4_LOG10El),
6368     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p+16383L, 4932.112944269463028900262609694408579449L, 0.2069271710841128115912940666587802677383L),
6369     TEST_c_c (clog10, 0x1p-16440L, 0x1p-16441L, -4948.884673709346821106688037612752099609L, 0.2013595981366865710389502301937289472543L),
6370 #endif
6371
6372     TEST_c_c (clog10, 0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6373     TEST_c_c (clog10, -0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6374     TEST_c_c (clog10, 0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6375     TEST_c_c (clog10, -0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6376     TEST_c_c (clog10, -0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, 1.364376353841841347485783625431355770210L),
6377     TEST_c_c (clog10, -0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, -1.364376353841841347485783625431355770210L),
6378 #ifdef TEST_FLOAT
6379     TEST_c_c (clog10, 0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, plus_zero, UNDERFLOW_EXCEPTION),
6380     TEST_c_c (clog10, 0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, minus_zero, UNDERFLOW_EXCEPTION),
6381 #endif
6382
6383 #ifndef TEST_FLOAT
6384     TEST_c_c (clog10, 0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6385     TEST_c_c (clog10, -0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6386     TEST_c_c (clog10, 0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6387     TEST_c_c (clog10, -0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6388     TEST_c_c (clog10, -0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, 1.364376353841841347485783625431355770210L),
6389     TEST_c_c (clog10, -0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, -1.364376353841841347485783625431355770210L),
6390 #endif
6391 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6392     TEST_c_c (clog10, 0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, plus_zero, UNDERFLOW_EXCEPTION),
6393     TEST_c_c (clog10, 0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, minus_zero, UNDERFLOW_EXCEPTION),
6394 #endif
6395
6396 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6397     TEST_c_c (clog10, 0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6398     TEST_c_c (clog10, -0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6399     TEST_c_c (clog10, 0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6400     TEST_c_c (clog10, -0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6401     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6402     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6403     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6404     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6405 # if LDBL_MANT_DIG >= 113
6406     TEST_c_c (clog10, 0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6407     TEST_c_c (clog10, -0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6408     TEST_c_c (clog10, 0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6409     TEST_c_c (clog10, -0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6410     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6411     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6412     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6413     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6414 # endif
6415 #endif
6416
6417     TEST_c_c (clog10, 1.0L, 0x1.234566p-10L, 2.680828048441605163181684680300513080769e-7L, 4.825491868832381486767558728169977751564e-4L),
6418     TEST_c_c (clog10, -1.0L, 0x1.234566p-20L, 2.556638434669064077889576526006849923281e-13L, 1.364375882602207106407956770293808181427L),
6419     TEST_c_c (clog10, 0x1.234566p-30L, 1.0L, 2.438200411482400072282924063740535840474e-19L, 6.821881764607257184291586401763604544928e-1L),
6420     TEST_c_c (clog10, -0x1.234566p-40L, -1.0L, 2.325249110681915353442924915876654139373e-25L, -6.821881769213700828789403802671540158935e-1L),
6421     TEST_c_c (clog10, 0x1.234566p-50L, 1.0L, 2.217530356103816369479108963807448194409e-31L, 6.821881769209202348667823902864283966959e-1L),
6422     TEST_c_c (clog10, 0x1.234566p-60L, 1.0L, 2.114801746467415208319767917450504756866e-37L, 6.821881769209206733143018621078368211515e-1L),
6423     TEST_c_c (clog10, 0x1p-61L, 1.0L, 4.084085680564517578238994467153626207224e-38L, 6.821881769209206735545466044044889962925e-1L),
6424     TEST_c_c (clog10, 0x1p-62L, 1.0L, 1.021021420141129394559748616788406551878e-38L, 6.821881769209206736487192085600834406988e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6425     TEST_c_c (clog10, 0x1p-63L, 1.0L, 2.552553550352823486399371541971016379740e-39L, 6.821881769209206736958055106378806629019e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6426 #ifndef TEST_FLOAT
6427     TEST_c_c (clog10, 0x1p-509L, 1.0L, 7.730698388614835910296270976605350994446e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6428     TEST_c_c (clog10, 0x1p-510L, 1.0L, 1.932674597153708977574067744151337748612e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6429     TEST_c_c (clog10, 0x1p-511L, 1.0L, 4.831686492884272443935169360378344371529e-309L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6430 #endif
6431 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6432     TEST_c_c (clog10, 0x1p-8189L, 1.0L, 1.168114274114528946314738738025008370069e-4931L, 6.821881769209206737428918127156778851051e-1L),
6433     TEST_c_c (clog10, 0x1p-8190L, 1.0L, 2.920285685286322365786846845062520925172e-4932L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6434     TEST_c_c (clog10, 0x1p-8191L, 1.0L, 7.300714213215805914467117112656302312931e-4933L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6435 #endif
6436
6437     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-10L, 3.604093470239754109961125085078190708674e-5L, 4.824745078422174667425851670822596859720e-4L),
6438     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-100L, 3.577293486783822178310971763308187385546e-5L, 3.897399639875661463735636919790792140598e-31L),
6439 #ifndef TEST_FLOAT
6440     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-30L, 1.150487028947346337782682105935961875822e-10L, 1.364376353381646356131680448946397884147L),
6441     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 1.150487026509145544402795327729455391948e-10L, 1.364376353841841347485783625431355770210L),
6442 #endif
6443 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6444     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 4.285899851347756188767674032946882584784e-19L, 4.285899850759344225805480528847018395861e-19L),
6445     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 4.285899851347756186652871946325962330640e-19L, 4.611541215247321502041995872887317363241e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6446 #endif
6447
6448     TEST_c_c (clog10, 0x0.ffffffp0L, 0x0.ffffffp-100L, -2.588596909321764128428416045209904492216e-8L, 3.425979381266895667295625489912064603415e-31L),
6449 #ifndef TEST_FLOAT
6450     TEST_c_c (clog10, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -4.821637332766435821255375046554377090472e-17L, 4.053112396770095089737411317782466262176e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6451 #endif
6452 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6453     TEST_c_c (clog10, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -2.354315103889861110220423157644627849164e-20L, 1.541165759405643564697852372112893034397e-4516L),
6454 #endif
6455
6456     TEST_c_c (clog10, 0x1a6p-10L, 0x3a5p-10L, -6.2126412844802358329771948751248003038444e-07L, 0.4977135139537443711784513409096950995985L),
6457     TEST_c_c (clog10, 0xf2p-10L, 0x3e3p-10L, 2.6921240173351112953324592659528481616879e-06L, 0.5785726025799636431142862788413361783862L),
6458     TEST_c_c (clog10, 0x4d4ep-15L, 0x6605p-15L, -7.0781945783414996953799915941870192015212e-09L, 0.4005747524909781155537088181659175147564L),
6459     TEST_c_c (clog10, 0x2818p-15L, 0x798fp-15L, 6.6737261053986614395049481326819059203910e-09L, 0.5438241985991753781478398141908629586460L),
6460     TEST_c_c (clog10, 0x9b57bp-20L, 0xcb7b4p-20L, -1.7182001068739620267773842120965071561416e-11L, 0.3990121149225253562859800593935899629087L),
6461     TEST_c_c (clog10, 0x2731p-20L, 0xfffd0p-20L, 1.9156943718715958194239364991329064049438e-11L, 0.6780326907904082601285090019969008967595L),
6462     TEST_c_c (clog10, 0x2ede88p-23L, 0x771c3fp-23L, -1.9440841725722970687903291200493082253766e-13L, 0.5193774116724956222518530053006822210323L),
6463     TEST_c_c (clog10, 0x11682p-23L, 0x7ffed1p-23L, 5.0916490233953865181284669870035717560498e-13L, 0.6784968969384861816694467029319146542069L),
6464     TEST_c_c (clog10, 0xa1f2c1p-24L, 0xc643aep-24L, -4.5516256421319921959681423447271490869664e-14L, 0.3847315790697197749315054516562206543710L),
6465     TEST_c_c (clog10, 0x659feap-24L, 0xeaf6f9p-24L, 1.6200701438094619117335617123525612051457e-14L, 0.5049027913635038013499728086604870749732L),
6466 #ifndef TEST_FLOAT
6467     TEST_c_c (clog10, 0x4447d7175p-35L, 0x6c445e00ap-35L, -6.4375803621988389731799033530075237868110e-21L, 0.4378257977686804492768642780897650927167L),
6468     TEST_c_c (clog10, 0x2dd46725bp-35L, 0x7783a1284p-35L, 1.9312741086596516918394613098872836703188e-20L, 0.5231613813514771042838490538484014771862L),
6469     TEST_c_c (clog10, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -1.3155760824064879362415202279780039150764e-26L, 0.3473590599762514228227328130640352044313L),
6470     TEST_c_c (clog10, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 2.3329549194675052736016290082882121135546e-26L, 0.4561756099441139182878993697611751382976L),
6471     TEST_c_c (clog10, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -2.6979587627476803379953050733225113494503e-30L, 0.6472785229986997177606324374555347813105L),
6472     TEST_c_c (clog10, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 1.3918041236396763648388478552321724382899e-29L, 0.6263795733790237053262025311642907438291L),
6473     TEST_c_c (clog10, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -4.2289432987513243393180377141513840878196e-30L, 0.4252020027092323591068799049905597805296L),
6474     TEST_c_c (clog10, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 3.6079845358966994996207055940336690133424e-30L, 0.5243112258263349992771652393178033846555L),
6475     TEST_c_c (clog10, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -1.0893543813872082317104059174982092534059e-30L, 0.5954257879188711495921161433751775633232L),
6476     TEST_c_c (clog10, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 4.4163015461643576961232672330852798804976e-31L, 0.3564851427422832755956993418877523303529L),
6477     TEST_c_c (clog10, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 2.2081507730821788480616336165447731164865e-32L, 0.5484039935757001196548030312819898864760L),
6478     TEST_c_c (clog10, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -2.2583360179249556400630343805573865814771e-32L, 0.6639894257763289307423302343317622430835L),
6479 #endif
6480 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6481     TEST_c_c (clog10, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -5.1816837072162316773907242302011632570857e-37L, 0.5386167838952956925896424154370364458140L),
6482     TEST_c_c (clog10, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 2.7822833698845776001753149807484078521508e-37L, 0.3992725998539071066769046272515417679815L),
6483     TEST_c_c (clog10, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -1.0146400362652473358437501879334790111898e-37L, 0.5149047982335273098246594109614460842099L),
6484     TEST_c_c (clog10, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 1.0529283395205396881397407610630442563938e-37L, 0.4947949395762683446121140513971996916447L),
6485     TEST_c_c (clog10, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -4.3074341162203896332989394770760901408798e-39L, 0.5709443672155660428417571212549720987784L),
6486 #endif
6487 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6488     TEST_c_c (clog10, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -4.5643214291682663316715446865040356750881e-46L, 0.4564083863660793840592614609053162690362L),
6489     TEST_c_c (clog10, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 5.8575458340992751256451490143468457830297e-44L, 0.5103174273246635294300470585396890237265L),
6490     TEST_c_c (clog10, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -2.0748709499710785084693619097712106753591e-50L, 0.3645447681189598740620098186365764884771L),
6491     TEST_c_c (clog10, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 1.2333149003324592532859843519619084433953e-50L, 0.3973779298829931059309198145608711073016L),
6492     TEST_c_c (clog10, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -1.5221162575729652613635150540947625639689e-57L, 0.5795934880811949230121092882659698986043L),
6493     TEST_c_c (clog10, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 1.7850272475173865337808494725293124613817e-56L, 0.6338990862456906754888183278564382516852L),
6494     TEST_c_c (clog10, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -6.2023045024810589256360494043570293518879e-63L, 0.5938345819561308555003145899438513900776L),
6495     TEST_c_c (clog10, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 4.3548095442952115860848857519953610343042e-63L, 0.3558376234889641500775150477035448866763L),
6496     TEST_c_c (clog10, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -7.5879257211204444302994221436282805900756e-64L, 0.5119945461708707332160859198685423099187L),
6497     TEST_c_c (clog10, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 1.8804859395820231849002915747252695375405e-63L, 0.6404513901551516189871978418046651877394L),
6498 #endif
6499 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6500     TEST_c_c (clog10, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -5.0742964549782184008668435276046798273476e-67L, 0.5757527761596220360985719127090110408283L),
6501     TEST_c_c (clog10, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 6.5482587585671294601662599808612773010057e-66L, 0.5601289501766423782280643144987875760229L),
6502     TEST_c_c (clog10, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -3.1210950417524756037077807411854181477733e-67L, 0.3791463562379872585396164879981280044658L),
6503     TEST_c_c (clog10, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 2.8774482675253468630312378575186855052697e-66L, 0.4571561610046221605554903008571429975493L),
6504     TEST_c_c (clog10, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 1.9985076315737626043096596036300177494613e-67L, 0.5883569274304683249184005177865521205198L),
6505     TEST_c_c (clog10, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 1.1288799405048268615023706955013387413519e-67L, 0.6137587762850841972073301550420510507903L),
6506 #endif
6507     END_DATA (clog10)
6508   };
6509
6510 static void
6511 clog10_test (void)
6512 {
6513   errno = 0;
6514   FUNC(clog10) (BUILD_COMPLEX (0.7L, 1.2L));
6515   if (errno == ENOSYS)
6516     /* Function not implemented.  */
6517     return;
6518
6519   START (clog10);
6520   RUN_TEST_LOOP_c_c (clog10, clog10_test_data, );
6521   END (clog10, complex);
6522 }
6523
6524
6525 static const struct test_c_c_data conj_test_data[] =
6526   {
6527     START_DATA (conj),
6528     TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero),
6529     TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0),
6530     TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value),
6531     TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty),
6532     TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty),
6533     TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0),
6534     TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0),
6535     END_DATA (conj)
6536   };
6537
6538 static void
6539 conj_test (void)
6540 {
6541   START (conj);
6542   RUN_TEST_LOOP_c_c (conj, conj_test_data, );
6543   END (conj, complex);
6544 }
6545
6546
6547 static const struct test_ff_f_data copysign_test_data[] =
6548   {
6549     START_DATA (copysign),
6550     TEST_ff_f (copysign, 0, 4, 0),
6551     TEST_ff_f (copysign, 0, -4, minus_zero),
6552     TEST_ff_f (copysign, minus_zero, 4, 0),
6553     TEST_ff_f (copysign, minus_zero, -4, minus_zero),
6554
6555     TEST_ff_f (copysign, plus_infty, 0, plus_infty),
6556     TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty),
6557     TEST_ff_f (copysign, minus_infty, 0, plus_infty),
6558     TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty),
6559
6560     TEST_ff_f (copysign, 0, plus_infty, 0),
6561     TEST_ff_f (copysign, 0, minus_zero, minus_zero),
6562     TEST_ff_f (copysign, minus_zero, plus_infty, 0),
6563     TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero),
6564
6565     /* XXX More correctly we would have to check the sign of the NaN.  */
6566     TEST_ff_f (copysign, qnan_value, 0, qnan_value),
6567     TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value),
6568     TEST_ff_f (copysign, -qnan_value, 0, qnan_value),
6569     TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value),
6570     END_DATA (copysign)
6571   };
6572
6573 static void
6574 copysign_test (void)
6575 {
6576   START (copysign);
6577   RUN_TEST_LOOP_ff_f (copysign, copysign_test_data, );
6578   END (copysign);
6579 }
6580
6581
6582 static const struct test_f_f_data cos_test_data[] =
6583   {
6584     START_DATA (cos),
6585     TEST_f_f (cos, 0, 1),
6586     TEST_f_f (cos, minus_zero, 1),
6587     TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6588     TEST_f_f (cos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6589     TEST_f_f (cos, qnan_value, qnan_value, ERRNO_UNCHANGED),
6590
6591     TEST_f_f (cos, M_PI_6l * 2.0, 0.5),
6592     TEST_f_f (cos, M_PI_6l * 4.0, -0.5),
6593
6594     /* The value of M_PI_2l is never exactly PI/2, and therefore the
6595        answer is never exactly zero. The answer is equal to the error
6596        in rounding PI/2 for the type used.  Thus the answer is unique
6597        to each type.  */
6598 #ifdef TEST_FLOAT
6599     /* 32-bit float.  */
6600     TEST_f_f (cos, M_PI_2l, -0x1.777a5cp-25L),
6601 #endif
6602 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
6603     /* 64-bit double or 64-bit long double.  */
6604     TEST_f_f (cos, M_PI_2l, 0x1.1a62633145c07p-54L),
6605 #endif
6606 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
6607     /* 96-bit long double.  */
6608     TEST_f_f (cos, M_PI_2l, -0xe.ce675d1fc8f8cbbp-69L),
6609 #endif
6610 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
6611     /* 128-bit IBM long double.  */
6612     TEST_f_f (cos, M_PI_2l, 0x1.c1cd129024e088a67cc74020bcp-107L),
6613 #endif
6614 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
6615     /* 128-bit long double.  */
6616     TEST_f_f (cos, M_PI_2l, 0x1.cd129024e088a67cc74020bbea64p-115L),
6617 #endif
6618
6619     TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L),
6620
6621     TEST_f_f (cos, 0x1p65, 0.99888622066058013610642172179340364209972L),
6622     TEST_f_f (cos, -0x1p65, 0.99888622066058013610642172179340364209972L),
6623
6624 #ifdef TEST_DOUBLE
6625     TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473),
6626 #endif
6627
6628     TEST_f_f (cos, 0x1.442f74p+15, 2.4407839902314016628485779006274989801517e-06L),
6629
6630 #ifndef TEST_FLOAT
6631     TEST_f_f (cos, 1e22, 0.5232147853951389454975944733847094921409L),
6632     TEST_f_f (cos, 0x1p1023, -0.826369834614147994500785680811743734805L),
6633 #endif
6634
6635 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6636     TEST_f_f (cos, 0x1p16383L, 0.9210843909921906206874509522505756251609L),
6637 #endif
6638
6639     TEST_f_f (cos, 0x1p+120, -9.25879022854837867303861764107414946730833e-01L),
6640     TEST_f_f (cos, 0x1p+127, 7.81914638714960072263910298466369236613162e-01L),
6641     TEST_f_f (cos, 0x1.fffff8p+127, 9.98819362551949040703862043664101081064641e-01L),
6642     TEST_f_f (cos, 0x1.fffffep+127, 8.53021039830304158051791467692161107353094e-01L),
6643     TEST_f_f (cos, 0x1p+50, 8.68095904660550604334592502063501320395739e-01L),
6644     TEST_f_f (cos, 0x1p+28, -1.65568979490578758865468278195361551113358e-01L),
6645     END_DATA (cos)
6646   };
6647
6648 static void
6649 cos_test (void)
6650 {
6651   errno = 0;
6652   FUNC(cos) (0);
6653   if (errno == ENOSYS)
6654     /* Function not implemented.  */
6655     return;
6656
6657   START (cos);
6658   RUN_TEST_LOOP_f_f (cos, cos_test_data, );
6659   END (cos);
6660 }
6661
6662
6663 static const struct test_f_f_data cos_tonearest_test_data[] =
6664   {
6665     START_DATA (cos_tonearest),
6666     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6667     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6668     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6669     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6670     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6671     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6672     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6673     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6674     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6675     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6676     END_DATA (cos_tonearest)
6677   };
6678
6679 static void
6680 cos_test_tonearest (void)
6681 {
6682   errno = 0;
6683   FUNC(cos) (0);
6684   if (errno == ENOSYS)
6685     /* Function not implemented.  */
6686     return;
6687
6688   START (cos_tonearest);
6689   RUN_TEST_LOOP_f_f (cos, cos_tonearest_test_data, FE_TONEAREST);
6690   END (cos_tonearest);
6691 }
6692
6693
6694 static const struct test_f_f_data cos_towardzero_test_data[] =
6695   {
6696     START_DATA (cos_towardzero),
6697     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6698     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6699     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6700     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6701     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6702     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6703     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6704     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6705     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6706     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6707     END_DATA (cos_towardzero)
6708   };
6709
6710 static void
6711 cos_test_towardzero (void)
6712 {
6713   errno = 0;
6714   FUNC(cos) (0);
6715   if (errno == ENOSYS)
6716     /* Function not implemented.  */
6717     return;
6718
6719   START (cos_towardzero);
6720   RUN_TEST_LOOP_f_f (cos, cos_towardzero_test_data, FE_TOWARDZERO);
6721   END (cos_towardzero);
6722 }
6723
6724
6725 static const struct test_f_f_data cos_downward_test_data[] =
6726   {
6727     START_DATA (cos_downward),
6728     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6729     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6730     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6731     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6732     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6733     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6734     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6735     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6736     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6737     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6738     END_DATA (cos_downward)
6739   };
6740
6741 static void
6742 cos_test_downward (void)
6743 {
6744   errno = 0;
6745   FUNC(cos) (0);
6746   if (errno == ENOSYS)
6747     /* Function not implemented.  */
6748     return;
6749
6750   START (cos_downward);
6751   RUN_TEST_LOOP_f_f (cos, cos_downward_test_data, FE_DOWNWARD);
6752   END (cos_downward);
6753 }
6754
6755
6756 static const struct test_f_f_data cos_upward_test_data[] =
6757   {
6758     START_DATA (cos_upward),
6759     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6760     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6761     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6762     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6763     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6764     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6765     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6766     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6767     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6768     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6769     END_DATA (cos_upward)
6770   };
6771
6772 static void
6773 cos_test_upward (void)
6774 {
6775   errno = 0;
6776   FUNC(cos) (0);
6777   if (errno == ENOSYS)
6778     /* Function not implemented.  */
6779     return;
6780
6781   START (cos_upward);
6782   RUN_TEST_LOOP_f_f (cos, cos_upward_test_data, FE_UPWARD);
6783   END (cos_upward);
6784 }
6785
6786
6787 static const struct test_f_f_data cosh_test_data[] =
6788   {
6789     START_DATA (cosh),
6790     TEST_f_f (cosh, 0, 1),
6791     TEST_f_f (cosh, minus_zero, 1),
6792
6793 #ifndef TEST_INLINE
6794     TEST_f_f (cosh, plus_infty, plus_infty),
6795     TEST_f_f (cosh, minus_infty, plus_infty),
6796 #endif
6797     TEST_f_f (cosh, qnan_value, qnan_value),
6798
6799     TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L),
6800
6801 #ifndef TEST_FLOAT
6802     TEST_f_f (cosh, 709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6803     TEST_f_f (cosh, -709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6804 #endif
6805     END_DATA (cosh)
6806   };
6807
6808 static void
6809 cosh_test (void)
6810 {
6811   errno = 0;
6812   FUNC(cosh) (0.7L);
6813   if (errno == ENOSYS)
6814     /* Function not implemented.  */
6815     return;
6816
6817   START (cosh);
6818   RUN_TEST_LOOP_f_f (cosh, cosh_test_data, );
6819   END (cosh);
6820 }
6821
6822
6823 static const struct test_f_f_data cosh_tonearest_test_data[] =
6824   {
6825     START_DATA (cosh_tonearest),
6826     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6827     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6828     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6829     END_DATA (cosh_tonearest)
6830   };
6831
6832 static void
6833 cosh_test_tonearest (void)
6834 {
6835   errno = 0;
6836   FUNC(cosh) (0);
6837   if (errno == ENOSYS)
6838     /* Function not implemented.  */
6839     return;
6840
6841   START (cosh_tonearest);
6842   RUN_TEST_LOOP_f_f (cosh, cosh_tonearest_test_data, FE_TONEAREST);
6843   END (cosh_tonearest);
6844 }
6845
6846
6847 static const struct test_f_f_data cosh_towardzero_test_data[] =
6848   {
6849     START_DATA (cosh_towardzero),
6850     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6851     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6852     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6853     END_DATA (cosh_towardzero)
6854   };
6855
6856 static void
6857 cosh_test_towardzero (void)
6858 {
6859   errno = 0;
6860   FUNC(cosh) (0);
6861   if (errno == ENOSYS)
6862     /* Function not implemented.  */
6863     return;
6864
6865   START (cosh_towardzero);
6866   RUN_TEST_LOOP_f_f (cosh, cosh_towardzero_test_data, FE_TOWARDZERO);
6867   END (cosh_towardzero);
6868 }
6869
6870
6871 static const struct test_f_f_data cosh_downward_test_data[] =
6872   {
6873     START_DATA (cosh_downward),
6874     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6875     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6876     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6877     END_DATA (cosh_downward)
6878   };
6879
6880 static void
6881 cosh_test_downward (void)
6882 {
6883   errno = 0;
6884   FUNC(cosh) (0);
6885   if (errno == ENOSYS)
6886     /* Function not implemented.  */
6887     return;
6888
6889   START (cosh_downward);
6890   RUN_TEST_LOOP_f_f (cosh, cosh_downward_test_data, FE_DOWNWARD);
6891   END (cosh_downward);
6892 }
6893
6894
6895 static const struct test_f_f_data cosh_upward_test_data[] =
6896   {
6897     START_DATA (cosh_upward),
6898     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6899     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6900     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6901     END_DATA (cosh_upward)
6902   };
6903
6904 static void
6905 cosh_test_upward (void)
6906 {
6907   errno = 0;
6908   FUNC(cosh) (0);
6909   if (errno == ENOSYS)
6910     /* Function not implemented.  */
6911     return;
6912
6913   START (cosh_upward);
6914   RUN_TEST_LOOP_f_f (cosh, cosh_upward_test_data, FE_UPWARD);
6915   END (cosh_upward);
6916 }
6917
6918
6919 static void
6920 cpow_test (void)
6921 {
6922   errno = 0;
6923   FUNC(cpow) (BUILD_COMPLEX (1, 0), BUILD_COMPLEX (0, 0));
6924   if (errno == ENOSYS)
6925     /* Function not implemented.  */
6926     return;
6927
6928   START (cpow);
6929
6930   TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0);
6931   TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0);
6932
6933   TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0);
6934   TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0);
6935
6936   TEST_cc_c (cpow, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value);
6937
6938   TEST_cc_c (cpow, 0.75L, 1.25L, 0.75L, 1.25L, 0.117506293914473555420279832210420483L, 0.346552747708338676483025352060418001L);
6939   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 1.0L, 0.0846958290317209430433805274189191353L, 0.513285749182902449043287190519090481L);
6940   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 0.0L, 0.75L, 1.25L);
6941   TEST_cc_c (cpow, 0.75L, 1.25L, 0.0L, 1.0L, 0.331825439177608832276067945276730566L, 0.131338600281188544930936345230903032L);
6942
6943   END (cpow, complex);
6944 }
6945
6946
6947 static const struct test_c_c_data cproj_test_data[] =
6948   {
6949     START_DATA (cproj),
6950     TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0),
6951     TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero),
6952     TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero),
6953     TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0),
6954
6955     TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value),
6956
6957     TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0),
6958     TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero),
6959     TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0),
6960     TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero),
6961
6962     TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0),
6963     TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0),
6964     END_DATA (cproj)
6965   };
6966
6967 static void
6968 cproj_test (void)
6969 {
6970   START (cproj);
6971   RUN_TEST_LOOP_c_c (cproj, cproj_test_data, );
6972   END (cproj, complex);
6973 }
6974
6975
6976 static void
6977 creal_test (void)
6978 {
6979   START (creal);
6980   TEST_c_f (creal, 0.0, 1.0, 0.0);
6981   TEST_c_f (creal, minus_zero, 1.0, minus_zero);
6982   TEST_c_f (creal, qnan_value, 1.0, qnan_value);
6983   TEST_c_f (creal, qnan_value, qnan_value, qnan_value);
6984   TEST_c_f (creal, plus_infty, 1.0, plus_infty);
6985   TEST_c_f (creal, minus_infty, 1.0, minus_infty);
6986   TEST_c_f (creal, 2.0, 3.0, 2.0);
6987
6988   END (creal);
6989 }
6990
6991 static const struct test_c_c_data csin_test_data[] =
6992   {
6993     START_DATA (csin),
6994     TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0),
6995     TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0),
6996     TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero),
6997     TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero),
6998
6999     TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty),
7000     TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty),
7001     TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty),
7002     TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty),
7003
7004     TEST_c_c (csin, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7005     TEST_c_c (csin, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7006     TEST_c_c (csin, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7007     TEST_c_c (csin, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7008
7009     TEST_c_c (csin, plus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7010     TEST_c_c (csin, minus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7011     TEST_c_c (csin, plus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7012     TEST_c_c (csin, minus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7013
7014     TEST_c_c (csin, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7015     TEST_c_c (csin, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7016     TEST_c_c (csin, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7017     TEST_c_c (csin, minus_infty, -6.75,  qnan_value, qnan_value, INVALID_EXCEPTION),
7018
7019     TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty),
7020     TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty),
7021     TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty),
7022     TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty),
7023
7024     TEST_c_c (csin, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7025     TEST_c_c (csin, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7026
7027     TEST_c_c (csin, qnan_value, plus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7028     TEST_c_c (csin, qnan_value, minus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7029
7030     TEST_c_c (csin, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7031     TEST_c_c (csin, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7032
7033     TEST_c_c (csin, 0.0, qnan_value, 0.0, qnan_value),
7034     TEST_c_c (csin, minus_zero, qnan_value, minus_zero, qnan_value),
7035
7036     TEST_c_c (csin, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7037     TEST_c_c (csin, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7038
7039     TEST_c_c (csin, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7040     TEST_c_c (csin, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7041
7042     TEST_c_c (csin, qnan_value, qnan_value, qnan_value, qnan_value),
7043
7044     TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L),
7045     TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L),
7046
7047     TEST_c_c (csin, 0.75, 89.5, 2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7048     TEST_c_c (csin, 0.75, -89.5, 2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7049     TEST_c_c (csin, -0.75, 89.5, -2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7050     TEST_c_c (csin, -0.75, -89.5, -2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7051
7052 #ifndef TEST_FLOAT
7053     TEST_c_c (csin, 0.75, 710.5, 1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7054     TEST_c_c (csin, 0.75, -710.5, 1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7055     TEST_c_c (csin, -0.75, 710.5, -1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7056     TEST_c_c (csin, -0.75, -710.5, -1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7057 #endif
7058
7059 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7060     TEST_c_c (csin, 0.75, 11357.25, 8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7061     TEST_c_c (csin, 0.75, -11357.25, 8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7062     TEST_c_c (csin, -0.75, 11357.25, -8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7063     TEST_c_c (csin, -0.75, -11357.25, -8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7064 #endif
7065
7066 #ifdef TEST_FLOAT
7067     TEST_c_c (csin, 0x1p-149, 180, 1.043535896672617552965983803453927655332e33L, plus_infty, OVERFLOW_EXCEPTION),
7068 #endif
7069
7070 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7071     TEST_c_c (csin, 0x1p-1074, 1440, 5.981479269486130556466515778180916082415e301L, plus_infty, OVERFLOW_EXCEPTION),
7072 #endif
7073
7074 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7075     TEST_c_c (csin, 0x1p-16434L, 22730, 1.217853148905605987081057582351152052687e4924L, plus_infty, OVERFLOW_EXCEPTION),
7076 #endif
7077
7078     TEST_c_c (csin, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7079     TEST_c_c (csin, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7080     END_DATA (csin)
7081   };
7082
7083 static void
7084 csin_test (void)
7085 {
7086   errno = 0;
7087   FUNC(csin) (BUILD_COMPLEX (0.7L, 1.2L));
7088   if (errno == ENOSYS)
7089     /* Function not implemented.  */
7090     return;
7091
7092   START (csin);
7093   RUN_TEST_LOOP_c_c (csin, csin_test_data, );
7094   END (csin, complex);
7095 }
7096
7097
7098 static const struct test_c_c_data csinh_test_data[] =
7099   {
7100     START_DATA (csinh),
7101     TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0),
7102     TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0),
7103     TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero),
7104     TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero),
7105
7106     TEST_c_c (csinh, 0.0, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7107     TEST_c_c (csinh, minus_zero, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7108     TEST_c_c (csinh, 0.0, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7109     TEST_c_c (csinh, minus_zero, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7110
7111     TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0),
7112     TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0),
7113     TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero),
7114     TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero),
7115
7116     TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7117     TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7118     TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7119     TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7120
7121     TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty),
7122     TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty),
7123     TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty),
7124     TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty),
7125
7126     TEST_c_c (csinh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7127     TEST_c_c (csinh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7128     TEST_c_c (csinh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7129     TEST_c_c (csinh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7130
7131     TEST_c_c (csinh, 0.0, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7132     TEST_c_c (csinh, minus_zero, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7133
7134     TEST_c_c (csinh, plus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7135     TEST_c_c (csinh, minus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7136
7137     TEST_c_c (csinh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7138     TEST_c_c (csinh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7139
7140     TEST_c_c (csinh, qnan_value, 0.0, qnan_value, 0.0),
7141     TEST_c_c (csinh, qnan_value, minus_zero, qnan_value, minus_zero),
7142
7143     TEST_c_c (csinh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7144     TEST_c_c (csinh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7145
7146     TEST_c_c (csinh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7147     TEST_c_c (csinh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7148
7149     TEST_c_c (csinh, qnan_value, qnan_value, qnan_value, qnan_value),
7150
7151     TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L),
7152     TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L),
7153
7154     TEST_c_c (csinh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7155     TEST_c_c (csinh, -89.5, 0.75, -2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7156     TEST_c_c (csinh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7157     TEST_c_c (csinh, -89.5, -0.75, -2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7158
7159 #ifndef TEST_FLOAT
7160     TEST_c_c (csinh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7161     TEST_c_c (csinh, -710.5, 0.75, -1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7162     TEST_c_c (csinh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7163     TEST_c_c (csinh, -710.5, -0.75, -1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7164 #endif
7165
7166 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7167     TEST_c_c (csinh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7168     TEST_c_c (csinh, -11357.25, 0.75, -9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7169     TEST_c_c (csinh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7170     TEST_c_c (csinh, -11357.25, -0.75, -9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7171 #endif
7172
7173 #ifdef TEST_FLOAT
7174     TEST_c_c (csinh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
7175 #endif
7176
7177 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7178     TEST_c_c (csinh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
7179 #endif
7180
7181 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7182     TEST_c_c (csinh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
7183 #endif
7184
7185     TEST_c_c (csinh, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7186     TEST_c_c (csinh, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7187     END_DATA (csinh)
7188   };
7189
7190 static void
7191 csinh_test (void)
7192 {
7193   errno = 0;
7194   FUNC(csinh) (BUILD_COMPLEX (0.7L, 1.2L));
7195   if (errno == ENOSYS)
7196     /* Function not implemented.  */
7197     return;
7198
7199   START (csinh);
7200   RUN_TEST_LOOP_c_c (csinh, csinh_test_data, );
7201   END (csinh, complex);
7202 }
7203
7204
7205 static const struct test_c_c_data csqrt_test_data[] =
7206   {
7207     START_DATA (csqrt),
7208     TEST_c_c (csqrt, 0, 0, 0.0, 0.0),
7209     TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero),
7210     TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0),
7211     TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero),
7212
7213     TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty),
7214     TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty),
7215     TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty),
7216     TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty),
7217
7218     TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0),
7219     TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0),
7220     TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero),
7221     TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero),
7222
7223     TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty),
7224     TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty),
7225     TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty),
7226     TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty),
7227     TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty),
7228     TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty),
7229     TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty),
7230     TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty),
7231     TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty),
7232     TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty),
7233     TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty),
7234     TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty),
7235
7236     TEST_c_c (csqrt, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7237
7238     TEST_c_c (csqrt, plus_infty, qnan_value, plus_infty, qnan_value),
7239
7240     TEST_c_c (csqrt, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7241     TEST_c_c (csqrt, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7242     TEST_c_c (csqrt, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7243     TEST_c_c (csqrt, -1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7244
7245     TEST_c_c (csqrt, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7246     TEST_c_c (csqrt, qnan_value, 8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7247     TEST_c_c (csqrt, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7248     TEST_c_c (csqrt, qnan_value, -8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7249
7250     TEST_c_c (csqrt, qnan_value, qnan_value, qnan_value, qnan_value),
7251
7252     TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0),
7253     TEST_c_c (csqrt, -1, 0, 0.0, 1.0),
7254     TEST_c_c (csqrt, 0, 2, 1.0, 1.0),
7255     TEST_c_c (csqrt, 119, 120, 12.0, 5.0),
7256     TEST_c_c (csqrt, 0.75L, 1.25L, 1.05065169626078392338656675760808326L, 0.594868882070379067881984030639932657L),
7257     TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L),
7258     TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L),
7259     /* Principal square root should be returned (i.e., non-negative real
7260        part).  */
7261     TEST_c_c (csqrt, 0, -1, M_SQRT1_2l, -M_SQRT1_2l),
7262
7263     TEST_c_c (csqrt, 0x1.fffffep+127L, 0x1.fffffep+127L, 2.026714405498316804978751017492482558075e+19L, 8.394925938143272988211878516208015586281e+18L),
7264     TEST_c_c (csqrt, 0x1.fffffep+127L, 1.0L, 1.844674352395372953599975585936590505260e+19L, 2.710505511993121390769065968615872097053e-20L),
7265     TEST_c_c (csqrt, 0x1p-149L, 0x1p-149L, 4.112805464342778798097003462770175200803e-23L, 1.703579802732953750368659735601389709551e-23L),
7266     TEST_c_c (csqrt, 0x1p-147L, 0x1p-147L, 8.225610928685557596194006925540350401606e-23L, 3.407159605465907500737319471202779419102e-23L),
7267
7268     TEST_c_c (csqrt, plus_zero, 0x1p-149L, 2.646977960169688559588507814623881131411e-23L, 2.646977960169688559588507814623881131411e-23L),
7269     TEST_c_c (csqrt, 0x1p-50L, 0x1p-149L, 2.980232238769531250000000000000000000000e-8L, 2.350988701644575015937473074444491355637e-38L),
7270 #ifdef TEST_FLOAT
7271     TEST_c_c (csqrt, 0x1p+127L, 0x1p-149L, 1.304381782533278221234957180625250836888e19L, plus_zero, UNDERFLOW_EXCEPTION),
7272 #endif
7273     TEST_c_c (csqrt, 0x1p-149L, 0x1p+127L, 9.223372036854775808000000000000000000000e18L, 9.223372036854775808000000000000000000000e18L),
7274     TEST_c_c (csqrt, 0x1.000002p-126L, 0x1.000002p-126L, 1.191195773697904627170323731331667740087e-19L, 4.934094449071842328766868579214125217132e-20L),
7275     TEST_c_c (csqrt, -0x1.000002p-126L, -0x1.000002p-126L, 4.934094449071842328766868579214125217132e-20L, -1.191195773697904627170323731331667740087e-19L),
7276
7277 #ifndef TEST_FLOAT
7278     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 1.473094556905565378990473658199034571917e+154L, 6.101757441282702188537080005372547713595e+153L),
7279     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 1.379778091031440685006200821918878702861e+154L, 3.257214233483129514781233066898042490248e+153L),
7280     TEST_c_c (csqrt, 0x1p-1074L, 0x1p-1074L, 2.442109726130830256743814843868934877597e-162L, 1.011554969366634726113090867589031782487e-162L),
7281     TEST_c_c (csqrt, 0x1p-1073L, 0x1p-1073L, 3.453664695497464982856905711457966660085e-162L, 1.430554756764195530630723976279903095110e-162L),
7282
7283     TEST_c_c (csqrt, plus_zero, 0x1p-1074L, 1.571727784702628688909515672805082228285e-162L, 1.571727784702628688909515672805082228285e-162L),
7284     TEST_c_c (csqrt, 0x1p-500L, 0x1p-1074L, 5.527147875260444560247265192192255725514e-76L, 4.469444793151709302716387622440056066334e-249L),
7285 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7286     TEST_c_c (csqrt, 0x1p+1023L, 0x1p-1074L, 9.480751908109176726832526455652159260085e153L, plus_zero, UNDERFLOW_EXCEPTION),
7287 #endif
7288     TEST_c_c (csqrt, 0x1p-1074L, 0x1p+1023L, 6.703903964971298549787012499102923063740e153L, 6.703903964971298549787012499102923063740e153L),
7289     TEST_c_c (csqrt, 0x1.0000000000001p-1022L, 0x1.0000000000001p-1022L, 1.638872094839911521020410942677082920935e-154L, 6.788430486774966350907249113759995429568e-155L),
7290     TEST_c_c (csqrt, -0x1.0000000000001p-1022L, -0x1.0000000000001p-1022L, 6.788430486774966350907249113759995429568e-155L, -1.638872094839911521020410942677082920935e-154L),
7291 #endif
7292
7293 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7294     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1.fp+16383L, 1.179514222452201722651836720466795901016e+2466L, 4.885707879516577666702435054303191575148e+2465L),
7295     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1p+16383L, 1.106698967236475180613254276996359485630e+2466L, 2.687568007603946993388538156299100955642e+2465L),
7296     TEST_c_c (csqrt, 0x1p-16440L, 0x1p-16441L, 3.514690655930285351254618340783294558136e-2475L,  8.297059146828716918029689466551384219370e-2476L),
7297
7298     TEST_c_c (csqrt, plus_zero, 0x1p-16445L, 4.269191686890197837775136325621239761720e-2476L, 4.269191686890197837775136325621239761720e-2476L),
7299     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16445L, 2.660791472672778409283210520357607795518e-753L, 6.849840675828785164910701384823702064234e-4199L),
7300     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16445L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7301     TEST_c_c (csqrt, 0x1p-16445L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7302     TEST_c_c (csqrt, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-16382L, 2.014551439675644900131815801350165472778e-2466L, 8.344545284118961664300307045791497724440e-2467L),
7303     TEST_c_c (csqrt, -0x1.0000000000000002p-16382L, -0x1.0000000000000002p-16382L, 8.344545284118961664300307045791497724440e-2467L, -2.014551439675644900131815801350165472778e-2466L),
7304
7305 # if LDBL_MANT_DIG >= 113
7306     TEST_c_c (csqrt, plus_zero, 0x1p-16494L, 1.799329752913293143453817328207572571442e-2483L, 1.799329752913293143453817328207572571442e-2483L),
7307     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16494L, 2.660791472672778409283210520357607795518e-753L, 1.216776133331049643422030716668249905907e-4213L),
7308     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16494L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7309     TEST_c_c (csqrt, 0x1p-16494L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7310     TEST_c_c (csqrt, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-16382L, 2.014551439675644900022606748976158925145e-2466L, 8.344545284118961663847948339519226074126e-2467L),
7311     TEST_c_c (csqrt, -0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-16382L, 8.344545284118961663847948339519226074126e-2467L, -2.014551439675644900022606748976158925145e-2466L),
7312 # endif
7313 #endif
7314     END_DATA (csqrt)
7315   };
7316
7317 static void
7318 csqrt_test (void)
7319 {
7320   errno = 0;
7321   FUNC(csqrt) (BUILD_COMPLEX (-1, 0));
7322   if (errno == ENOSYS)
7323     /* Function not implemented.  */
7324     return;
7325
7326   START (csqrt);
7327   RUN_TEST_LOOP_c_c (csqrt, csqrt_test_data, );
7328   END (csqrt, complex);
7329 }
7330
7331 static const struct test_c_c_data ctan_test_data[] =
7332   {
7333     START_DATA (ctan),
7334     TEST_c_c (ctan, 0, 0, 0.0, 0.0),
7335     TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero),
7336     TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0),
7337     TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero),
7338
7339     TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0),
7340     TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0),
7341     TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0),
7342     TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0),
7343
7344     TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0),
7345     TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0),
7346     TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0),
7347     TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0),
7348
7349     TEST_c_c (ctan, plus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7350     TEST_c_c (ctan, plus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7351     TEST_c_c (ctan, minus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7352     TEST_c_c (ctan, minus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7353     TEST_c_c (ctan, plus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7354     TEST_c_c (ctan, plus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7355     TEST_c_c (ctan, minus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7356     TEST_c_c (ctan, minus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7357
7358     TEST_c_c (ctan, qnan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN),
7359     TEST_c_c (ctan, qnan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN),
7360
7361     TEST_c_c (ctan, 0, qnan_value, 0.0, qnan_value),
7362     TEST_c_c (ctan, minus_zero, qnan_value, minus_zero, qnan_value),
7363
7364     TEST_c_c (ctan, 0.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7365     TEST_c_c (ctan, -4.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7366
7367     TEST_c_c (ctan, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7368     TEST_c_c (ctan, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7369     TEST_c_c (ctan, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7370     TEST_c_c (ctan, qnan_value, -0.25, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7371
7372     TEST_c_c (ctan, qnan_value, qnan_value, qnan_value, qnan_value),
7373
7374     TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L),
7375     TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L),
7376
7377     TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L, UNDERFLOW_EXCEPTION_FLOAT),
7378     TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0, UNDERFLOW_EXCEPTION_FLOAT),
7379
7380 #ifndef TEST_FLOAT
7381     TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7382     TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7383 #endif
7384
7385 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7386     TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0, UNDERFLOW_EXCEPTION),
7387     TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0, UNDERFLOW_EXCEPTION),
7388 #endif
7389
7390     TEST_c_c (ctan, 0x3.243f6cp-1, 0, -2.287733242885645987394874673945769518150e7L, 0.0),
7391
7392     TEST_c_c (ctan, 0x1p127, 1, 0.2446359391192790896381501310437708987204L, 0.9101334047676183761532873794426475906201L),
7393
7394 #ifndef TEST_FLOAT
7395     TEST_c_c (ctan, 0x1p1023, 1, -0.2254627924997545057926782581695274244229L, 0.8786063118883068695462540226219865087189L),
7396 #endif
7397
7398 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7399     TEST_c_c (ctan, 0x1p16383L, 1, 0.1608598776370396607204448234354670036772L, 0.8133818522051542536316746743877629761488L),
7400 #endif
7401
7402     TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0, UNDERFLOW_EXCEPTION),
7403     TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0, UNDERFLOW_EXCEPTION),
7404     TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0, UNDERFLOW_EXCEPTION),
7405     TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0, UNDERFLOW_EXCEPTION),
7406     END_DATA (ctan)
7407   };
7408
7409 static void
7410 ctan_test (void)
7411 {
7412   errno = 0;
7413   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7414   if (errno == ENOSYS)
7415     /* Function not implemented.  */
7416     return;
7417
7418   START (ctan);
7419   RUN_TEST_LOOP_c_c (ctan, ctan_test_data, );
7420   END (ctan, complex);
7421 }
7422
7423
7424 static const struct test_c_c_data ctan_tonearest_test_data[] =
7425   {
7426     START_DATA (ctan_tonearest),
7427     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7428
7429 #ifndef TEST_FLOAT
7430     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7431 #endif
7432
7433 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7434     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7435 #endif
7436     END_DATA (ctan_tonearest)
7437   };
7438
7439 static void
7440 ctan_test_tonearest (void)
7441 {
7442   errno = 0;
7443   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7444   if (errno == ENOSYS)
7445     /* Function not implemented.  */
7446     return;
7447
7448   START (ctan_tonearest);
7449   RUN_TEST_LOOP_c_c (ctan, ctan_tonearest_test_data, FE_TONEAREST);
7450   END (ctan_tonearest, complex);
7451 }
7452
7453
7454 static const struct test_c_c_data ctan_towardzero_test_data[] =
7455   {
7456     START_DATA (ctan_towardzero),
7457     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7458
7459 #ifndef TEST_FLOAT
7460     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7461 #endif
7462
7463 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7464     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7465 #endif
7466     END_DATA (ctan_towardzero)
7467   };
7468
7469 static void
7470 ctan_test_towardzero (void)
7471 {
7472   errno = 0;
7473   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7474   if (errno == ENOSYS)
7475     /* Function not implemented.  */
7476     return;
7477
7478   START (ctan_towardzero);
7479   RUN_TEST_LOOP_c_c (ctan, ctan_towardzero_test_data, FE_TOWARDZERO);
7480   END (ctan_towardzero, complex);
7481 }
7482
7483
7484 static const struct test_c_c_data ctan_downward_test_data[] =
7485   {
7486     START_DATA (ctan_downward),
7487     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7488
7489 #ifndef TEST_FLOAT
7490     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7491 #endif
7492
7493 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7494     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7495 #endif
7496     END_DATA (ctan_downward)
7497   };
7498
7499 static void
7500 ctan_test_downward (void)
7501 {
7502   errno = 0;
7503   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7504   if (errno == ENOSYS)
7505     /* Function not implemented.  */
7506     return;
7507
7508   START (ctan_downward);
7509   RUN_TEST_LOOP_c_c (ctan, ctan_downward_test_data, FE_DOWNWARD);
7510   END (ctan_downward, complex);
7511 }
7512
7513
7514 static const struct test_c_c_data ctan_upward_test_data[] =
7515   {
7516     START_DATA (ctan_upward),
7517     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7518
7519 #ifndef TEST_FLOAT
7520     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7521 #endif
7522
7523 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7524     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7525 #endif
7526     END_DATA (ctan_upward)
7527   };
7528
7529 static void
7530 ctan_test_upward (void)
7531 {
7532   errno = 0;
7533   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7534   if (errno == ENOSYS)
7535     /* Function not implemented.  */
7536     return;
7537
7538   START (ctan_upward);
7539   RUN_TEST_LOOP_c_c (ctan, ctan_upward_test_data, FE_UPWARD);
7540   END (ctan_upward, complex);
7541 }
7542
7543
7544 static const struct test_c_c_data ctanh_test_data[] =
7545   {
7546     START_DATA (ctanh),
7547     TEST_c_c (ctanh, 0, 0, 0.0, 0.0),
7548     TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero),
7549     TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0),
7550     TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero),
7551
7552     TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0),
7553     TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0),
7554     TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero),
7555     TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero),
7556     TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0),
7557     TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0),
7558     TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero),
7559     TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero),
7560
7561     TEST_c_c (ctanh, 0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7562     TEST_c_c (ctanh, 2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7563     TEST_c_c (ctanh, 0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7564     TEST_c_c (ctanh, 2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7565     TEST_c_c (ctanh, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7566     TEST_c_c (ctanh, -2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7567     TEST_c_c (ctanh, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7568     TEST_c_c (ctanh, -2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7569
7570     TEST_c_c (ctanh, plus_infty, qnan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7571     TEST_c_c (ctanh, minus_infty, qnan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7572
7573     TEST_c_c (ctanh, qnan_value, 0, qnan_value, 0.0),
7574     TEST_c_c (ctanh, qnan_value, minus_zero, qnan_value, minus_zero),
7575
7576     TEST_c_c (ctanh, qnan_value, 0.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7577     TEST_c_c (ctanh, qnan_value, -4.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7578
7579     TEST_c_c (ctanh, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7580     TEST_c_c (ctanh, 5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7581     TEST_c_c (ctanh, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7582     TEST_c_c (ctanh, -0.25, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7583
7584     TEST_c_c (ctanh, qnan_value, qnan_value, qnan_value, qnan_value),
7585
7586     TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0),
7587
7588     TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L),
7589     TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L),
7590
7591     TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L, UNDERFLOW_EXCEPTION_FLOAT),
7592     TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L, UNDERFLOW_EXCEPTION_FLOAT),
7593
7594 #ifndef TEST_FLOAT
7595     TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
7596     TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L, UNDERFLOW_EXCEPTION_DOUBLE),
7597 #endif
7598
7599 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7600     TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L, UNDERFLOW_EXCEPTION),
7601     TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L, UNDERFLOW_EXCEPTION),
7602 #endif
7603
7604     TEST_c_c (ctanh, 0, 0x3.243f6cp-1, 0.0, -2.287733242885645987394874673945769518150e7L),
7605
7606     TEST_c_c (ctanh, 1, 0x1p127, 0.9101334047676183761532873794426475906201L, 0.2446359391192790896381501310437708987204L),
7607
7608 #ifndef TEST_FLOAT
7609     TEST_c_c (ctanh, 1, 0x1p1023, 0.8786063118883068695462540226219865087189L, -0.2254627924997545057926782581695274244229L),
7610 #endif
7611
7612 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7613     TEST_c_c (ctanh, 1, 0x1p16383L, 0.8133818522051542536316746743877629761488L, 0.1608598776370396607204448234354670036772L),
7614 #endif
7615
7616     TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero, UNDERFLOW_EXCEPTION),
7617     TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero, UNDERFLOW_EXCEPTION),
7618     TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero, UNDERFLOW_EXCEPTION),
7619     TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero, UNDERFLOW_EXCEPTION),
7620     END_DATA (ctanh)
7621   };
7622
7623 static void
7624 ctanh_test (void)
7625 {
7626   errno = 0;
7627   FUNC(ctanh) (BUILD_COMPLEX (0, 0));
7628   if (errno == ENOSYS)
7629     /* Function not implemented.  */
7630     return;
7631
7632   START (ctanh);
7633   RUN_TEST_LOOP_c_c (ctanh, ctanh_test_data, );
7634   END (ctanh, complex);
7635 }
7636
7637
7638 static const struct test_c_c_data ctanh_tonearest_test_data[] =
7639   {
7640     START_DATA (ctanh_tonearest),
7641     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7642
7643 #ifndef TEST_FLOAT
7644     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7645 #endif
7646
7647 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7648     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7649 #endif
7650     END_DATA (ctanh_tonearest)
7651   };
7652
7653 static void
7654 ctanh_test_tonearest (void)
7655 {
7656   errno = 0;
7657   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7658   if (errno == ENOSYS)
7659     /* Function not implemented.  */
7660     return;
7661
7662   START (ctanh_tonearest);
7663   RUN_TEST_LOOP_c_c (ctanh, ctanh_tonearest_test_data, FE_TONEAREST);
7664   END (ctanh_tonearest, complex);
7665 }
7666
7667
7668 static const struct test_c_c_data ctanh_towardzero_test_data[] =
7669   {
7670     START_DATA (ctanh_towardzero),
7671     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7672
7673 #ifndef TEST_FLOAT
7674     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7675 #endif
7676
7677 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7678     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7679 #endif
7680     END_DATA (ctanh_towardzero)
7681   };
7682
7683 static void
7684 ctanh_test_towardzero (void)
7685 {
7686   errno = 0;
7687   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7688   if (errno == ENOSYS)
7689     /* Function not implemented.  */
7690     return;
7691
7692   START (ctanh_towardzero);
7693   RUN_TEST_LOOP_c_c (ctanh, ctanh_towardzero_test_data, FE_TOWARDZERO);
7694   END (ctanh_towardzero, complex);
7695 }
7696
7697
7698 static const struct test_c_c_data ctanh_downward_test_data[] =
7699   {
7700     START_DATA (ctanh_downward),
7701     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7702
7703 #ifndef TEST_FLOAT
7704     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7705 #endif
7706
7707 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7708     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7709 #endif
7710     END_DATA (ctanh_downward)
7711   };
7712
7713 static void
7714 ctanh_test_downward (void)
7715 {
7716   errno = 0;
7717   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7718   if (errno == ENOSYS)
7719     /* Function not implemented.  */
7720     return;
7721
7722   START (ctanh_downward);
7723   RUN_TEST_LOOP_c_c (ctanh, ctanh_downward_test_data, FE_DOWNWARD);
7724   END (ctanh_downward, complex);
7725 }
7726
7727
7728 static const struct test_c_c_data ctanh_upward_test_data[] =
7729   {
7730     START_DATA (ctanh_upward),
7731     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7732
7733 #ifndef TEST_FLOAT
7734     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7735 #endif
7736
7737 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7738     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7739 #endif
7740     END_DATA (ctanh_upward)
7741   };
7742
7743 static void
7744 ctanh_test_upward (void)
7745 {
7746   errno = 0;
7747   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7748   if (errno == ENOSYS)
7749     /* Function not implemented.  */
7750     return;
7751
7752   START (ctanh_upward);
7753   RUN_TEST_LOOP_c_c (ctanh, ctanh_upward_test_data, FE_UPWARD);
7754   END (ctanh_upward, complex);
7755 }
7756
7757
7758 static const struct test_f_f_data erf_test_data[] =
7759   {
7760     START_DATA (erf),
7761     TEST_f_f (erf, 0, 0),
7762     TEST_f_f (erf, minus_zero, minus_zero),
7763     TEST_f_f (erf, plus_infty, 1),
7764     TEST_f_f (erf, minus_infty, -1),
7765     TEST_f_f (erf, qnan_value, qnan_value),
7766
7767     TEST_f_f (erf, 0.125L, 0.140316204801333817393029446521623398L),
7768     TEST_f_f (erf, 0.75L, 0.711155633653515131598937834591410777L),
7769     TEST_f_f (erf, 1.25L, 0.922900128256458230136523481197281140L),
7770     TEST_f_f (erf, 2.0L, 0.995322265018952734162069256367252929L),
7771     TEST_f_f (erf, 4.125L, 0.999999994576599200434933994687765914L),
7772     TEST_f_f (erf, 27.0L, 1.0L),
7773     END_DATA (erf)
7774   };
7775
7776 static void
7777 erf_test (void)
7778 {
7779   errno = 0;
7780   FUNC(erf) (0);
7781   if (errno == ENOSYS)
7782     /* Function not implemented.  */
7783     return;
7784
7785   START (erf);
7786   RUN_TEST_LOOP_f_f (erf, erf_test_data, );
7787   END (erf);
7788 }
7789
7790
7791 static const struct test_f_f_data erfc_test_data[] =
7792   {
7793     START_DATA (erfc),
7794     TEST_f_f (erfc, plus_infty, 0.0),
7795     TEST_f_f (erfc, minus_infty, 2.0),
7796     TEST_f_f (erfc, 0.0, 1.0),
7797     TEST_f_f (erfc, minus_zero, 1.0),
7798     TEST_f_f (erfc, qnan_value, qnan_value),
7799
7800     TEST_f_f (erfc, 0.125L, 0.859683795198666182606970553478376602L),
7801     TEST_f_f (erfc, 0.75L, 0.288844366346484868401062165408589223L),
7802     TEST_f_f (erfc, 1.25L, 0.0770998717435417698634765188027188596L),
7803     TEST_f_f (erfc, 2.0L, 0.00467773498104726583793074363274707139L),
7804     TEST_f_f (erfc, 0x1.f7303cp+1L, 2.705500297238986897105236321218861842255e-8L),
7805     TEST_f_f (erfc, 4.125L, 0.542340079956506600531223408575531062e-8L),
7806     TEST_f_f (erfc, 0x1.ffa002p+2L, 1.233585992097580296336099501489175967033e-29L),
7807     TEST_f_f (erfc, 0x1.ffffc8p+2L, 1.122671365033056305522366683719541099329e-29L),
7808 #ifdef TEST_LDOUBLE
7809     /* The result can only be represented in long double.  */
7810 # if LDBL_MIN_10_EXP < -319
7811     TEST_f_f (erfc, 27.0L, 0.523704892378925568501606768284954709e-318L),
7812 # endif
7813 # if LDBL_MANT_DIG >= 106
7814     TEST_f_f (erfc, 0x1.ffff56789abcdef0123456789a8p+2L, 1.123161416304655390092138725253789378459e-29L),
7815 # endif
7816 #endif
7817     END_DATA (erfc)
7818   };
7819
7820 static void
7821 erfc_test (void)
7822 {
7823   errno = 0;
7824   FUNC(erfc) (0);
7825   if (errno == ENOSYS)
7826     /* Function not implemented.  */
7827     return;
7828
7829   START (erfc);
7830   RUN_TEST_LOOP_f_f (erfc, erfc_test_data, );
7831   END (erfc);
7832 }
7833
7834
7835 static const struct test_f_f_data exp_test_data[] =
7836   {
7837     START_DATA (exp),
7838     TEST_f_f (exp, 0, 1),
7839     TEST_f_f (exp, minus_zero, 1),
7840
7841 #ifndef TEST_INLINE
7842     TEST_f_f (exp, plus_infty, plus_infty),
7843     TEST_f_f (exp, minus_infty, 0),
7844 #endif
7845     TEST_f_f (exp, qnan_value, qnan_value),
7846     TEST_f_f (exp, 1, M_El),
7847
7848     TEST_f_f (exp, 2, M_E2l),
7849     TEST_f_f (exp, 3, M_E3l),
7850     TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L),
7851     TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L),
7852     TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L),
7853 #ifndef TEST_FLOAT
7854     TEST_f_f (exp, 709.75L, 1.739836873264160557698252711673830393864768e+308L),
7855 #endif
7856 #if defined TEST_LDOUBLE && __LDBL_MAX_EXP__ > 1024
7857     /* The result can only be represented in sane long double.  */
7858     TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L),
7859 #endif
7860
7861 #if !(defined TEST_LDOUBLE && LDBL_MAX_EXP > 1024)
7862     TEST_f_f (exp, 710, plus_infty, OVERFLOW_EXCEPTION),
7863     TEST_f_f (exp, -1234, plus_zero, UNDERFLOW_EXCEPTION),
7864 #endif
7865     TEST_f_f (exp, 1e5, plus_infty, OVERFLOW_EXCEPTION),
7866     TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION),
7867     TEST_f_f (exp, -max_value, 0, UNDERFLOW_EXCEPTION),
7868     END_DATA (exp)
7869   };
7870
7871 static void
7872 exp_test (void)
7873 {
7874   errno = 0;
7875   FUNC(exp) (0);
7876   if (errno == ENOSYS)
7877     /* Function not implemented.  */
7878     return;
7879
7880   START (exp);
7881   RUN_TEST_LOOP_f_f (exp, exp_test_data, );
7882   END (exp);
7883 }
7884
7885
7886 static const struct test_f_f_data exp_tonearest_test_data[] =
7887   {
7888     START_DATA (exp_tonearest),
7889     TEST_f_f (exp, 1, M_El),
7890     TEST_f_f (exp, 2, M_E2l),
7891     TEST_f_f (exp, 3, M_E3l),
7892     END_DATA (exp_tonearest)
7893   };
7894
7895 static void
7896 exp_test_tonearest (void)
7897 {
7898   errno = 0;
7899   FUNC(exp) (0);
7900   if (errno == ENOSYS)
7901     /* Function not implemented.  */
7902     return;
7903
7904   START (exp_tonearest);
7905   RUN_TEST_LOOP_f_f (exp, exp_tonearest_test_data, FE_TONEAREST);
7906   END (exp_tonearest);
7907 }
7908
7909
7910 static const struct test_f_f_data exp_towardzero_test_data[] =
7911   {
7912     START_DATA (exp_towardzero),
7913     TEST_f_f (exp, 1, M_El),
7914     TEST_f_f (exp, 2, M_E2l),
7915     TEST_f_f (exp, 3, M_E3l),
7916     END_DATA (exp_towardzero)
7917   };
7918
7919 static void
7920 exp_test_towardzero (void)
7921 {
7922   errno = 0;
7923   FUNC(exp) (0);
7924   if (errno == ENOSYS)
7925     /* Function not implemented.  */
7926     return;
7927
7928   START (exp_towardzero);
7929   RUN_TEST_LOOP_f_f (exp, exp_towardzero_test_data, FE_TOWARDZERO);
7930   END (exp_towardzero);
7931 }
7932
7933
7934 static const struct test_f_f_data exp_downward_test_data[] =
7935   {
7936     START_DATA (exp_downward),
7937     TEST_f_f (exp, 1, M_El),
7938     TEST_f_f (exp, 2, M_E2l),
7939     TEST_f_f (exp, 3, M_E3l),
7940     END_DATA (exp_downward)
7941   };
7942
7943 static void
7944 exp_test_downward (void)
7945 {
7946   errno = 0;
7947   FUNC(exp) (0);
7948   if (errno == ENOSYS)
7949     /* Function not implemented.  */
7950     return;
7951
7952   START (exp_downward);
7953   RUN_TEST_LOOP_f_f (exp, exp_downward_test_data, FE_DOWNWARD);
7954   END (exp_downward);
7955 }
7956
7957
7958 static const struct test_f_f_data exp_upward_test_data[] =
7959   {
7960     START_DATA (exp_upward),
7961     TEST_f_f (exp, 1, M_El),
7962     TEST_f_f (exp, 2, M_E2l),
7963     TEST_f_f (exp, 3, M_E3l),
7964     END_DATA (exp_upward)
7965   };
7966
7967 static void
7968 exp_test_upward (void)
7969 {
7970   errno = 0;
7971   FUNC(exp) (0);
7972   if (errno == ENOSYS)
7973     /* Function not implemented.  */
7974     return;
7975
7976   START (exp_upward);
7977   RUN_TEST_LOOP_f_f (exp, exp_upward_test_data, FE_UPWARD);
7978   END (exp_upward);
7979 }
7980
7981
7982 static const struct test_f_f_data exp10_test_data[] =
7983   {
7984     START_DATA (exp10),
7985     TEST_f_f (exp10, 0, 1),
7986     TEST_f_f (exp10, minus_zero, 1),
7987
7988     TEST_f_f (exp10, plus_infty, plus_infty),
7989     TEST_f_f (exp10, minus_infty, 0),
7990     TEST_f_f (exp10, qnan_value, qnan_value),
7991     TEST_f_f (exp10, 3, 1000),
7992     TEST_f_f (exp10, -1, 0.1L),
7993     TEST_f_f (exp10, 36, 1.0e36L),
7994     TEST_f_f (exp10, -36, 1.0e-36L),
7995 #ifndef TEST_FLOAT
7996     TEST_f_f (exp10, 305, 1.0e305L),
7997     TEST_f_f (exp10, -305, 1.0e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
7998 #endif
7999 #if defined TEST_LDOUBLE && LDBL_MAX_10_EXP >= 4932
8000     TEST_f_f (exp10, 4932, 1.0e4932L),
8001     TEST_f_f (exp10, -4932, 1.0e-4932L, UNDERFLOW_EXCEPTION),
8002 #endif
8003     TEST_f_f (exp10, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8004     TEST_f_f (exp10, -1e6, 0, UNDERFLOW_EXCEPTION),
8005     TEST_f_f (exp10, max_value, plus_infty, OVERFLOW_EXCEPTION),
8006     TEST_f_f (exp10, -max_value, 0, UNDERFLOW_EXCEPTION),
8007     TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L),
8008     END_DATA (exp10)
8009   };
8010
8011 static void
8012 exp10_test (void)
8013 {
8014   errno = 0;
8015   FUNC(exp10) (0);
8016   if (errno == ENOSYS)
8017     /* Function not implemented.  */
8018     return;
8019
8020   START (exp10);
8021   RUN_TEST_LOOP_f_f (exp10, exp10_test_data, );
8022   END (exp10);
8023 }
8024
8025
8026 static const struct test_f_f_data exp2_test_data[] =
8027   {
8028     START_DATA (exp2),
8029     TEST_f_f (exp2, 0, 1),
8030     TEST_f_f (exp2, minus_zero, 1),
8031     TEST_f_f (exp2, plus_infty, plus_infty),
8032     TEST_f_f (exp2, minus_infty, 0),
8033     TEST_f_f (exp2, qnan_value, qnan_value),
8034
8035     TEST_f_f (exp2, 10, 1024),
8036     TEST_f_f (exp2, -1, 0.5),
8037     TEST_f_f (exp2, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8038     TEST_f_f (exp2, -1e6, 0, UNDERFLOW_EXCEPTION),
8039     TEST_f_f (exp2, max_value, plus_infty, OVERFLOW_EXCEPTION),
8040     TEST_f_f (exp2, -max_value, 0, UNDERFLOW_EXCEPTION),
8041     TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L),
8042
8043     TEST_f_f (exp2, 100.5, 1.792728671193156477399422023278661496394e+30L),
8044     TEST_f_f (exp2, 127, 0x1p127),
8045     TEST_f_f (exp2, -149, 0x1p-149),
8046
8047 #ifndef TEST_FLOAT
8048     TEST_f_f (exp2, 1000.25, 1.274245659452564874772384918171765416737e+301L),
8049     TEST_f_f (exp2, 1023, 0x1p1023),
8050     TEST_f_f (exp2, -1074, 0x1p-1074),
8051 #endif
8052
8053 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8054     TEST_f_f (exp2, 16383, 0x1p16383L),
8055     TEST_f_f (exp2, -16400, 0x1p-16400L),
8056 #endif
8057     END_DATA (exp2)
8058   };
8059
8060 static void
8061 exp2_test (void)
8062 {
8063   errno = 0;
8064   FUNC(exp2) (0);
8065   if (errno == ENOSYS)
8066     /* Function not implemented.  */
8067     return;
8068
8069   START (exp2);
8070   RUN_TEST_LOOP_f_f (exp2, exp2_test_data, );
8071   END (exp2);
8072 }
8073
8074
8075 static const struct test_f_f_data expm1_test_data[] =
8076   {
8077     START_DATA (expm1),
8078     TEST_f_f (expm1, 0, 0),
8079     TEST_f_f (expm1, minus_zero, minus_zero),
8080
8081 #ifndef TEST_INLINE
8082     TEST_f_f (expm1, plus_infty, plus_infty),
8083     TEST_f_f (expm1, minus_infty, -1),
8084 #endif
8085     TEST_f_f (expm1, qnan_value, qnan_value),
8086
8087     TEST_f_f (expm1, 1, M_El - 1.0),
8088     TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L),
8089
8090     TEST_f_f (expm1, 50.0L, 5.1847055285870724640864533229334853848275e+21L),
8091
8092 #ifndef TEST_FLOAT
8093     TEST_f_f (expm1, 127.0L, 1.4302079958348104463583671072905261080748e+55L),
8094     TEST_f_f (expm1, 500.0L, 1.4035922178528374107397703328409120821806e+217L),
8095 #endif
8096
8097 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8098     TEST_f_f (expm1, 11356.25L, 9.05128237311923300051376115753226014206e+4931L),
8099 #endif
8100
8101     TEST_f_f (expm1, -10.0, -0.9999546000702375151484644084844394493898L),
8102     TEST_f_f (expm1, -16.0, -0.9999998874648252807408854862248209398728L),
8103     TEST_f_f (expm1, -17.0, -0.9999999586006228121483334034897228104472L),
8104     TEST_f_f (expm1, -18.0, -0.9999999847700202552873715638633707664826L),
8105     TEST_f_f (expm1, -36.0, -0.9999999999999997680477169756430611687736L),
8106     TEST_f_f (expm1, -37.0, -0.9999999999999999146695237425593420572195L),
8107     TEST_f_f (expm1, -38.0, -0.9999999999999999686086720795197037129104L),
8108     TEST_f_f (expm1, -44.0, -0.9999999999999999999221886775886620348429L),
8109     TEST_f_f (expm1, -45.0, -0.9999999999999999999713748141945060635553L),
8110     TEST_f_f (expm1, -46.0, -0.9999999999999999999894693826424461876212L),
8111     TEST_f_f (expm1, -73.0, -0.9999999999999999999999999999999802074012L),
8112     TEST_f_f (expm1, -74.0, -0.9999999999999999999999999999999927187098L),
8113     TEST_f_f (expm1, -75.0, -0.9999999999999999999999999999999973213630L),
8114     TEST_f_f (expm1, -78.0, -0.9999999999999999999999999999999998666385L),
8115     TEST_f_f (expm1, -79.0, -0.9999999999999999999999999999999999509391L),
8116     TEST_f_f (expm1, -80.0, -0.9999999999999999999999999999999999819515L),
8117     TEST_f_f (expm1, -100.0, -1.0),
8118     TEST_f_f (expm1, -1000.0, -1.0),
8119     TEST_f_f (expm1, -10000.0, -1.0),
8120     TEST_f_f (expm1, -100000.0, -1.0),
8121
8122     TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8123     TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION),
8124     TEST_f_f (expm1, -max_value, -1),
8125     END_DATA (expm1)
8126   };
8127
8128 static void
8129 expm1_test (void)
8130 {
8131   errno = 0;
8132   FUNC(expm1) (0);
8133   if (errno == ENOSYS)
8134     /* Function not implemented.  */
8135     return;
8136
8137   START (expm1);
8138   RUN_TEST_LOOP_f_f (expm1, expm1_test_data, );
8139   END (expm1);
8140 }
8141
8142
8143 static const struct test_f_f_data fabs_test_data[] =
8144   {
8145     START_DATA (fabs),
8146     TEST_f_f (fabs, 0, 0),
8147     TEST_f_f (fabs, minus_zero, 0),
8148
8149     TEST_f_f (fabs, plus_infty, plus_infty),
8150     TEST_f_f (fabs, minus_infty, plus_infty),
8151     TEST_f_f (fabs, qnan_value, qnan_value),
8152
8153     TEST_f_f (fabs, 38.0, 38.0),
8154     TEST_f_f (fabs, -M_El, M_El),
8155     END_DATA (fabs)
8156   };
8157
8158 static void
8159 fabs_test (void)
8160 {
8161   START (fabs);
8162   RUN_TEST_LOOP_f_f (fabs, fabs_test_data, );
8163   END (fabs);
8164 }
8165
8166
8167 static const struct test_ff_f_data fdim_test_data[] =
8168   {
8169     START_DATA (fdim),
8170     TEST_ff_f (fdim, 0, 0, 0),
8171     TEST_ff_f (fdim, 9, 0, 9),
8172     TEST_ff_f (fdim, 0, 9, 0),
8173     TEST_ff_f (fdim, -9, 0, 0),
8174     TEST_ff_f (fdim, 0, -9, 9),
8175
8176     TEST_ff_f (fdim, plus_infty, 9, plus_infty),
8177     TEST_ff_f (fdim, plus_infty, -9, plus_infty),
8178     TEST_ff_f (fdim, minus_infty, 9, 0),
8179     TEST_ff_f (fdim, minus_infty, -9, 0),
8180     TEST_ff_f (fdim, 9, minus_infty, plus_infty),
8181     TEST_ff_f (fdim, -9, minus_infty, plus_infty),
8182     TEST_ff_f (fdim, 9, plus_infty, 0),
8183     TEST_ff_f (fdim, -9, plus_infty, 0),
8184
8185     TEST_ff_f (fdim, 0, qnan_value, qnan_value),
8186     TEST_ff_f (fdim, 9, qnan_value, qnan_value),
8187     TEST_ff_f (fdim, -9, qnan_value, qnan_value),
8188     TEST_ff_f (fdim, qnan_value, 9, qnan_value),
8189     TEST_ff_f (fdim, qnan_value, -9, qnan_value),
8190     TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value),
8191     TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value),
8192     TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value),
8193     TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value),
8194     TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value),
8195
8196     TEST_ff_f (fdim, plus_infty, plus_infty, 0),
8197     END_DATA (fdim)
8198   };
8199
8200 static void
8201 fdim_test (void)
8202 {
8203   START (fdim);
8204   RUN_TEST_LOOP_ff_f (fdim, fdim_test_data, );
8205   END (fdim);
8206 }
8207
8208
8209 static void
8210 finite_test (void)
8211 {
8212   START (finite);
8213
8214   TEST_f_b (finite, 0, 1);
8215   TEST_f_b (finite, minus_zero, 1);
8216   TEST_f_b (finite, 10, 1);
8217   TEST_f_b (finite, min_subnorm_value, 1);
8218   TEST_f_b (finite, plus_infty, 0);
8219   TEST_f_b (finite, minus_infty, 0);
8220   TEST_f_b (finite, qnan_value, 0);
8221
8222   END (finite);
8223 }
8224
8225
8226 static const struct test_f_f_data floor_test_data[] =
8227   {
8228     START_DATA (floor),
8229     TEST_f_f (floor, 0.0, 0.0),
8230     TEST_f_f (floor, minus_zero, minus_zero),
8231     TEST_f_f (floor, plus_infty, plus_infty),
8232     TEST_f_f (floor, minus_infty, minus_infty),
8233     TEST_f_f (floor, qnan_value, qnan_value),
8234
8235     TEST_f_f (floor, M_PIl, 3.0),
8236     TEST_f_f (floor, -M_PIl, -4.0),
8237
8238     TEST_f_f (floor, 0.1, 0.0),
8239     TEST_f_f (floor, 0.25, 0.0),
8240     TEST_f_f (floor, 0.625, 0.0),
8241     TEST_f_f (floor, -0.1, -1.0),
8242     TEST_f_f (floor, -0.25, -1.0),
8243     TEST_f_f (floor, -0.625, -1.0),
8244
8245 #ifdef TEST_LDOUBLE
8246     /* The result can only be represented in long double.  */
8247     TEST_f_f (floor, 4503599627370495.5L, 4503599627370495.0L),
8248     TEST_f_f (floor, 4503599627370496.25L, 4503599627370496.0L),
8249     TEST_f_f (floor, 4503599627370496.5L, 4503599627370496.0L),
8250     TEST_f_f (floor, 4503599627370496.75L, 4503599627370496.0L),
8251     TEST_f_f (floor, 4503599627370497.5L, 4503599627370497.0L),
8252 # if LDBL_MANT_DIG > 100
8253     TEST_f_f (floor, 4503599627370494.5000000000001L, 4503599627370494.0L),
8254     TEST_f_f (floor, 4503599627370495.5000000000001L, 4503599627370495.0L),
8255     TEST_f_f (floor, 4503599627370496.5000000000001L, 4503599627370496.0L),
8256 # endif
8257
8258     TEST_f_f (floor, -4503599627370495.5L, -4503599627370496.0L),
8259     TEST_f_f (floor, -4503599627370496.25L, -4503599627370497.0L),
8260     TEST_f_f (floor, -4503599627370496.5L, -4503599627370497.0L),
8261     TEST_f_f (floor, -4503599627370496.75L, -4503599627370497.0L),
8262     TEST_f_f (floor, -4503599627370497.5L, -4503599627370498.0L),
8263 # if LDBL_MANT_DIG > 100
8264     TEST_f_f (floor, -4503599627370494.5000000000001L, -4503599627370495.0L),
8265     TEST_f_f (floor, -4503599627370495.5000000000001L, -4503599627370496.0L),
8266     TEST_f_f (floor, -4503599627370496.5000000000001L, -4503599627370497.0L),
8267 # endif
8268
8269     TEST_f_f (floor, 9007199254740991.5L, 9007199254740991.0L),
8270     TEST_f_f (floor, 9007199254740992.25L, 9007199254740992.0L),
8271     TEST_f_f (floor, 9007199254740992.5L, 9007199254740992.0L),
8272     TEST_f_f (floor, 9007199254740992.75L, 9007199254740992.0L),
8273     TEST_f_f (floor, 9007199254740993.5L, 9007199254740993.0L),
8274
8275 # if LDBL_MANT_DIG > 100
8276     TEST_f_f (floor, 9007199254740991.0000000000001L, 9007199254740991.0L),
8277     TEST_f_f (floor, 9007199254740992.0000000000001L, 9007199254740992.0L),
8278     TEST_f_f (floor, 9007199254740993.0000000000001L, 9007199254740993.0L),
8279     TEST_f_f (floor, 9007199254740991.5000000000001L, 9007199254740991.0L),
8280     TEST_f_f (floor, 9007199254740992.5000000000001L, 9007199254740992.0L),
8281     TEST_f_f (floor, 9007199254740993.5000000000001L, 9007199254740993.0L),
8282 # endif
8283
8284     TEST_f_f (floor, -9007199254740991.5L, -9007199254740992.0L),
8285     TEST_f_f (floor, -9007199254740992.25L, -9007199254740993.0L),
8286     TEST_f_f (floor, -9007199254740992.5L, -9007199254740993.0L),
8287     TEST_f_f (floor, -9007199254740992.75L, -9007199254740993.0L),
8288     TEST_f_f (floor, -9007199254740993.5L, -9007199254740994.0L),
8289
8290 # if LDBL_MANT_DIG > 100
8291     TEST_f_f (floor, -9007199254740991.0000000000001L, -9007199254740992.0L),
8292     TEST_f_f (floor, -9007199254740992.0000000000001L, -9007199254740993.0L),
8293     TEST_f_f (floor, -9007199254740993.0000000000001L, -9007199254740994.0L),
8294     TEST_f_f (floor, -9007199254740991.5000000000001L, -9007199254740992.0L),
8295     TEST_f_f (floor, -9007199254740992.5000000000001L, -9007199254740993.0L),
8296     TEST_f_f (floor, -9007199254740993.5000000000001L, -9007199254740994.0L),
8297 # endif
8298
8299     TEST_f_f (floor, 72057594037927935.5L, 72057594037927935.0L),
8300     TEST_f_f (floor, 72057594037927936.25L, 72057594037927936.0L),
8301     TEST_f_f (floor, 72057594037927936.5L, 72057594037927936.0L),
8302     TEST_f_f (floor, 72057594037927936.75L, 72057594037927936.0L),
8303     TEST_f_f (floor, 72057594037927937.5L, 72057594037927937.0L),
8304
8305     TEST_f_f (floor, -72057594037927935.5L, -72057594037927936.0L),
8306     TEST_f_f (floor, -72057594037927936.25L, -72057594037927937.0L),
8307     TEST_f_f (floor, -72057594037927936.5L, -72057594037927937.0L),
8308     TEST_f_f (floor, -72057594037927936.75L, -72057594037927937.0L),
8309     TEST_f_f (floor, -72057594037927937.5L, -72057594037927938.0L),
8310
8311     TEST_f_f (floor, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
8312     TEST_f_f (floor, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
8313     TEST_f_f (floor, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
8314     TEST_f_f (floor, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
8315     TEST_f_f (floor, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
8316
8317     TEST_f_f (floor, 0xf.ffffffffffffff8p+47L, 0xf.fffffffffffep+47L),
8318     TEST_f_f (floor, -0x8.000000000000004p+48L, -0x8.000000000001p+48L),
8319 #endif
8320     END_DATA (floor)
8321   };
8322
8323 static void
8324 floor_test (void)
8325 {
8326   START (floor);
8327   RUN_TEST_LOOP_f_f (floor, floor_test_data, );
8328   END (floor);
8329 }
8330
8331
8332 static const struct test_fff_f_data fma_test_data[] =
8333   {
8334     START_DATA (fma),
8335     TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0),
8336     TEST_fff_f (fma, qnan_value, 2.0, 3.0, qnan_value),
8337     TEST_fff_f (fma, 1.0, qnan_value, 3.0, qnan_value),
8338     TEST_fff_f (fma, 1.0, 2.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8339     TEST_fff_f (fma, plus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8340     TEST_fff_f (fma, minus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8341     TEST_fff_f (fma, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8342     TEST_fff_f (fma, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8343     TEST_fff_f (fma, plus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8344     TEST_fff_f (fma, minus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8345     TEST_fff_f (fma, 0.0, plus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8346     TEST_fff_f (fma, 0.0, minus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8347
8348     TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8349     TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8350     TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8351     TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8352     TEST_fff_f (fma, plus_infty, 3.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8353     TEST_fff_f (fma, minus_infty, -7.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8354     TEST_fff_f (fma, -13.5L, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8355     TEST_fff_f (fma, minus_infty, 7.5L, plus_infty, qnan_value, INVALID_EXCEPTION),
8356
8357     TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L),
8358
8359     TEST_fff_f (fma, -max_value, -max_value, minus_infty, minus_infty),
8360     TEST_fff_f (fma, max_value / 2, max_value / 2, minus_infty, minus_infty),
8361     TEST_fff_f (fma, -max_value, max_value, plus_infty, plus_infty),
8362     TEST_fff_f (fma, max_value / 2, -max_value / 4, plus_infty, plus_infty),
8363     TEST_fff_f (fma, plus_infty, 4, plus_infty, plus_infty),
8364     TEST_fff_f (fma, 2, minus_infty, minus_infty, minus_infty),
8365     TEST_fff_f (fma, minus_infty, minus_infty, plus_infty, plus_infty),
8366     TEST_fff_f (fma, plus_infty, minus_infty, minus_infty, minus_infty),
8367
8368     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8369     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8370     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8371     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8372     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8373     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8374     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8375     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8376     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8377     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8378     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8379     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8380     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8381     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8382     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8383     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8384     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8385     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8386     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8387     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8388     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8389     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8390     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8391     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8392
8393     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8394     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8395     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8396     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8397
8398     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8399     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8400     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8401     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8402     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8403     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8404     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8405     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8406
8407     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8408     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8409     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8410     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8411     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8412     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8413     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8414     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8415
8416 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8417     TEST_fff_f (fma, 0x1.7ff8p+13, 0x1.000002p+0, 0x1.ffffp-24, 0x1.7ff802p+13),
8418     TEST_fff_f (fma, 0x1.fffp+0, 0x1.00001p+0, -0x1.fffp+0, 0x1.fffp-20),
8419     TEST_fff_f (fma, 0x1.9abcdep+127, 0x0.9abcdep-126, -0x1.f08948p+0, 0x1.bb421p-25),
8420     TEST_fff_f (fma, 0x1.9abcdep+100, 0x0.9abcdep-126, -0x1.f08948p-27, 0x1.bb421p-52),
8421     TEST_fff_f (fma, 0x1.fffffep+127, 0x1.001p+0, -0x1.fffffep+127, 0x1.fffffep+115),
8422     TEST_fff_f (fma, -0x1.fffffep+127, 0x1.fffffep+0, 0x1.fffffep+127, -0x1.fffffap+127),
8423     TEST_fff_f (fma, 0x1.fffffep+127, 2.0, -0x1.fffffep+127, 0x1.fffffep+127),
8424     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8425     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8426     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8427     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8428     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8429     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8430     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8431     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8432     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8433     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
8434     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8435     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8436     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8437     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8438     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8439     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8440     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8441     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8442     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8443     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8444     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8445     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8446     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8447     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8448     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8449     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8450     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8451     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8452     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8453     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
8454     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8455     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8456     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8457     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
8458     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8459     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8460 #endif
8461 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8462     TEST_fff_f (fma, 0x1.7fp+13, 0x1.0000000000001p+0, 0x1.ffep-48, 0x1.7f00000000001p+13),
8463     TEST_fff_f (fma, 0x1.fffp+0, 0x1.0000000000001p+0, -0x1.fffp+0, 0x1.fffp-52),
8464     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, 0x1p-300, 1.0),
8465     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, -0x1p-300, 0x1.fffffffffffffp-1),
8466     TEST_fff_f (fma, 0x1.deadbeef2feedp+1023, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp+1, 0x1.0989687bc9da4p-53),
8467     TEST_fff_f (fma, 0x1.deadbeef2feedp+900, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp-122, 0x1.0989687bc9da4p-176),
8468     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 0x1.001p+0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1011),
8469     TEST_fff_f (fma, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+0, 0x1.fffffffffffffp+1023, -0x1.ffffffffffffdp+1023),
8470     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 2.0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023),
8471     TEST_fff_f (fma, 0x1.6a09e667f3bccp-538, 0x1.6a09e667f3bccp-538, 0.0, 0.0, UNDERFLOW_EXCEPTION),
8472     TEST_fff_f (fma, 0x1.deadbeef2feedp-495, 0x1.deadbeef2feedp-495, -0x1.bf86a5786a574p-989, 0x0.0000042625a1fp-1022, UNDERFLOW_EXCEPTION),
8473     TEST_fff_f (fma, 0x1.deadbeef2feedp-503, 0x1.deadbeef2feedp-503, -0x1.bf86a5786a574p-1005, 0x0.0000000004262p-1022, UNDERFLOW_EXCEPTION),
8474     TEST_fff_f (fma, 0x1p-537, 0x1p-538, 0x1p-1074, 0x0.0000000000002p-1022, UNDERFLOW_EXCEPTION),
8475     TEST_fff_f (fma, 0x1.7fffff8p-968, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000001p-1022, UNDERFLOW_EXCEPTION),
8476     TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022, UNDERFLOW_EXCEPTION),
8477     TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022, UNDERFLOW_EXCEPTION),
8478     TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022, UNDERFLOW_EXCEPTION),
8479     TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION),
8480     TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022, UNDERFLOW_EXCEPTION),
8481     TEST_fff_f (fma, -0x1.fffffffffffffp-711, 0x1.fffffffffffffp-275, 0x1.fffffe00007ffp-983, 0x1.7ffffe00007ffp-983),
8482     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8483     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8484     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8485     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8486     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8487     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8488     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8489     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8490     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8491     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
8492     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
8493     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8494     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8495     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8496     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8497     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8498     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8499     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8500     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8501     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8502     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8503     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8504     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8505     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8506     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8507     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8508     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8509     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8510     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8511     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8512     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8513     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8514     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8515     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
8516     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
8517     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8518 #endif
8519 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8520     TEST_fff_f (fma, -0x8.03fcp+3696L, 0xf.fffffffffffffffp-6140L, 0x8.3ffffffffffffffp-2450L, -0x8.01ecp-2440L),
8521     TEST_fff_f (fma, 0x9.fcp+2033L, -0x8.000e1f000ff800fp-3613L, -0xf.fffffffffffc0ffp-1579L, -0xd.fc119fb093ed092p-1577L),
8522     TEST_fff_f (fma, 0xc.7fc000003ffffffp-1194L, 0x8.1e0003fffffffffp+15327L, -0x8.fffep+14072L, 0xc.ae9f164020effffp+14136L),
8523     TEST_fff_f (fma, -0x8.0001fc000000003p+1798L, 0xcp-2230L, 0x8.f7e000000000007p-468L, -0xc.0002f9ffee10404p-429L),
8524     TEST_fff_f (fma, 0xc.0000000000007ffp+10130L, -0x8.000000000000001p+4430L, 0xc.07000000001ffffp+14513L, -0xb.fffffffffffd7e4p+14563L),
8525     TEST_fff_f (fma, 0xb.ffffp-4777L, 0x8.000000fffffffffp-11612L, -0x0.3800fff8p-16385L, 0x5.c7fe80c7ffeffffp-16385L, UNDERFLOW_EXCEPTION),
8526     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8527     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8528     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8529     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8530     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8531     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8532     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8533     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8534     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8535     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
8536     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
8537     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8538     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8539     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8540     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8541     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8542     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8543     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8544     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8545     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8546     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8547     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8548     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8549     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8550     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8551     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8552     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8553     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8554     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8555     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8556     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8557     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8558     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8559     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8560     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8561     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8562 #endif
8563 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8564     TEST_fff_f (fma, 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584L, -0x1.6b500daf0580d987f1bc0cadfcddp-13777L, 0x1.613cd91d9fed34b33820e5ab9d8dp-16378L, -0x1.3a79fb50eb9ce887cffa0f09bd9fp-16360L),
8565     TEST_fff_f (fma, -0x1.f949b880cacb0f0c61540105321dp-5954L, -0x1.3876cec84b4140f3bd6198731b7ep-10525L, -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382L, -0x0.a5dc1c6cfbc498c54fb0b5038abbp-16382L, UNDERFLOW_EXCEPTION),
8566     TEST_fff_f (fma, -0x1.0000fffffffffp-16221L, 0x1.0000001fffff8007fep-239L, 0x0.ff87ffffffffffffe000003fffffp-16382L, 0x0.ff87ffffffffffffdffc003bff7fp-16382L, UNDERFLOW_EXCEPTION),
8567     TEST_fff_f (fma, -0x1.ac79c9376ef447f3827c9e9de008p-2228L, -0x1.5ba830022b6139e21fbe7270cad8p-6314L, 0x1.e8282b6a26bb6a9daf5c8e73e9f9p-8616L, 0x1.22f14a0253878a730cd1aee373adp-8541L),
8568     TEST_fff_f (fma, -0x1.c69749ec574caaa2ab8e97ddb9f3p+2652L, 0x1.f34235ff9d095449c29b4831b62dp+3311L, 0x1.fbe4302df23354dbd0c4d3cfe606p+5879L, -0x1.bb473bfdfb7a6e18886ce6e57eafp+5964L),
8569     TEST_fff_f (fma, -0x1.ca8835fc6ecfb5398625fc891be5p-1686L, 0x1.621e1972bbe2180e5be9dd7d8df5p-7671L, -0x1.7d2d21b73b52cf20dec2a83902a4p-9395L, -0x1.3d2322191c9c88bc68a62ab8042cp-9356L),
8570     TEST_fff_f (fma, -0x1.55cff679ec49c2541fab41fc843ep-11819L, 0x1.e60e9f464f9e8df0509647c7c971p+12325L, 0x1.eaa2a7649d765c2f564f7a5beca7p+454L, -0x1.447e29fa7e406a285f4e350fcf86p+507L),
8571     TEST_fff_f (fma, 0x1.f0e7b1454908576f2537d863cf9bp+11432L, 0x1.cdce52f09d4ca76e68706f34b5d5p-1417L, -0x1.2e986187c70f146235ea2066e486p+9979L, 0x1.c030dad3cc5643f3dd0f5619f661p+10016L),
8572     TEST_fff_f (fma, 0x1.f102f7da4a57a3a4aab620e29452p-3098L, -0x1.cc06a4ff40248f9e2dcc4b6afd84p-11727L, 0x1.d512a11126b5ac8ed8973b8580c8p-14849L, -0x1.be8f1cf737ab4d1c31c54f5ec23bp-14824L),
8573     TEST_fff_f (fma, -0x1.fc47ac7434b993cd8dcb2b431f25p-3816L, 0x1.fbc9750da8468852d84558e1db6dp-5773L, -0x1.00a98abf783f75c40fe5b7a37d86p-9607L, -0x1.f81917b166f45e763cfcc057e2adp-9588L),
8574     TEST_fff_f (fma, 0x1.00000000000007ffffffffffffffp-9045L, -0x1.ffffffffffff80000001ffffffffp+4773L, -0x1.f8p-4316L, -0x1.00000000000f88000000fffffdffp-4271L),
8575     TEST_fff_f (fma, 0x1.4e922764c90701d4a2f21d01893dp-8683L, -0x1.955a12e2d7c9447c27fa022fc865p+212L, -0x1.e9634462eaef96528b90b6944578p-8521L, -0x1.08e1783184a371943d3598e10865p-8470L),
8576     TEST_fff_f (fma, 0x1.801181509c03bdbef10d6165588cp-15131L, 0x1.ad86f8e57d3d40bfa8007780af63p-368L, -0x1.6e9df0dab1c9f1d7a6043c390741p-15507L, 0x1.417c9b2b15e2ad57dc9e0e920844p-15498L),
8577     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8578     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8579     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8580     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8581     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8582     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8583     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8584     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8585     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8586     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
8587     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
8588     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8589     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8590     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8591     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8592     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8593     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8594     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8595     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8596     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8597     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8598     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8599     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8600     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8601     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8602     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8603     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8604     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8605     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8606     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8607     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8608     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8609     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8610     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8611     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8612     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8613 #endif
8614     END_DATA (fma)
8615   };
8616
8617 static void
8618 fma_test (void)
8619 {
8620   START (fma);
8621   RUN_TEST_LOOP_fff_f (fma, fma_test_data, );
8622   END (fma);
8623 }
8624
8625
8626 static const struct test_fff_f_data fma_towardzero_test_data[] =
8627   {
8628     START_DATA (fma_towardzero),
8629     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8630     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8631     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8632     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8633     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8634     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8635     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8636     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8637     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8638     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8639     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8640     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8641     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8642     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8643     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8644     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8645     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8646     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8647     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8648     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8649     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8650     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8651     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8652     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8653
8654     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8655     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8656     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8657     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8658
8659     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8660     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8661     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8662     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8663     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8664     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8665     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8666     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8667
8668 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8669     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8670     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8671     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8672     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8673     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8674     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8675     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8676     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8677 #endif
8678
8679 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8680     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8681     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8682     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8683     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8684     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8685     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8686     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8687     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8688     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8689     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8690     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
8691     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8692     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8693     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8694     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8695     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8696     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8697     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8698     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8699     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8700     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8701     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8702     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
8703     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8704     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8705     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8706     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8707     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8708     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8709     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8710     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
8711     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8712     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8713     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8714     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
8715     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8716 #endif
8717 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8718     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8719     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8720     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8721     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8722     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8723     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8724     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8725     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8726     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8727     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
8728     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
8729     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8730     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8731     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8732     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8733     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8734     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8735     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8736     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8737     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8738     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8739     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
8740     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
8741     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8742     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8743     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8744     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8745     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8746     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8747     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
8748     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
8749     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8750     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8751     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
8752     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
8753     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8754 #endif
8755 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8756     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8757     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8758     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8759     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8760     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8761     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8762     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8763     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8764     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8765     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8766     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8767     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8768     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8769     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8770     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8771     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8772     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8773     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8774     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8775     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8776     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8777     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
8778     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
8779     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8780     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8781     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8782     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8783     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8784     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8785     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8786     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8787     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8788     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8789     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
8790     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
8791     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8792 #endif
8793 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8794     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8795     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8796     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8797     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8798     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8799     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8800     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8801     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8802     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8803     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8804     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8805     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8806     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8807     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8808     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8809     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8810     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8811     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8812     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8813     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8814     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8815     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
8816     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
8817     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8818     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8819     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8820     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8821     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8822     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8823     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8824     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8825     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8826     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8827     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
8828     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
8829     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8830 #endif
8831     END_DATA (fma_towardzero)
8832   };
8833
8834 static void
8835 fma_test_towardzero (void)
8836 {
8837   START (fma_towardzero);
8838   RUN_TEST_LOOP_fff_f (fma, fma_towardzero_test_data, FE_TOWARDZERO);
8839   END (fma_towardzero);
8840 }
8841
8842
8843 static const struct test_fff_f_data fma_downward_test_data[] =
8844   {
8845     START_DATA (fma_downward),
8846     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8847     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, minus_zero),
8848     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, minus_zero),
8849     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8850     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, minus_zero),
8851     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8852     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8853     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, minus_zero),
8854     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8855     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, minus_zero),
8856     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, minus_zero),
8857     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8858     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, minus_zero),
8859     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8860     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8861     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, minus_zero),
8862     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8863     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, minus_zero),
8864     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, minus_zero),
8865     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8866     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, minus_zero),
8867     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8868     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8869     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, minus_zero),
8870
8871     TEST_fff_f (fma, 1.0, 1.0, -1.0, minus_zero),
8872     TEST_fff_f (fma, 1.0, -1.0, 1.0, minus_zero),
8873     TEST_fff_f (fma, -1.0, 1.0, 1.0, minus_zero),
8874     TEST_fff_f (fma, -1.0, -1.0, -1.0, minus_zero),
8875
8876     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8877     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8878     TEST_fff_f (fma, min_value, -min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8879     TEST_fff_f (fma, min_value, -min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8880     TEST_fff_f (fma, -min_value, min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8881     TEST_fff_f (fma, -min_value, min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8882     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8883     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8884
8885 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8886     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8887     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8888     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8889     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8890     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8891     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8892     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8893     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8894 #endif
8895
8896 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8897     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8898     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00008p-127, UNDERFLOW_EXCEPTION),
8899     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8900     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8901     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8902     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8903     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8904     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8905     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8906     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8907     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8908     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1.000002p127),
8909     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8910     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8911     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8912     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1.000002p-126),
8913     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8914     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8915     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8916     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8917     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8918     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8919     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8920     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-148, UNDERFLOW_EXCEPTION),
8921     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8922     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8923     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8924     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8925     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8926     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8927     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8928     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1.000002p127),
8929     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8930     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8931     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8932     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1.000002p103),
8933 #endif
8934 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8935     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8936     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
8937     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8938     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8939     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8940     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8941     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8942     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8943     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8944     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
8945     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
8946     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1.0000000000001p1023),
8947     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8948     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8949     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8950     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1.0000000000001p-1022),
8951     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8952     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8953     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8954     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8955     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8956     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
8957     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8958     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1073, UNDERFLOW_EXCEPTION),
8959     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8960     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8961     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8962     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8963     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8964     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
8965     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8966     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1.0000000000001p1023),
8967     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8968     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
8969     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
8970     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1.0000000000001p970),
8971 #endif
8972 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8973     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8974     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
8975     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8976     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8977     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8978     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8979     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8980     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8981     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8982     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8983     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
8984     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1.0000000000000002p16383L),
8985     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8986     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8987     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8988     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1.0000000000000002p-16382L),
8989     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8990     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8991     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8992     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8993     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8994     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
8995     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8996     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16444L, UNDERFLOW_EXCEPTION),
8997     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8998     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8999     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9000     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9001     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9002     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
9003     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9004     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1.0000000000000002p16383L),
9005     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9006     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
9007     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9008     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1.0000000000000002p16319L),
9009 #endif
9010 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9011     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9012     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9013     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9014     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9015     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9016     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9017     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9018     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9019     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
9020     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9021     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
9022     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9023     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
9024     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9025     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9026     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1.0000000000000000000000000001p-16382L),
9027     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9028     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9029     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9030     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9031     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9032     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
9033     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9034     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16493L, UNDERFLOW_EXCEPTION),
9035     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9036     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9037     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9038     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9039     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9040     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9041     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9042     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9043     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9044     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
9045     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9046     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1.0000000000000000000000000001p16319L),
9047 #endif
9048     END_DATA (fma_downward)
9049   };
9050
9051 static void
9052 fma_test_downward (void)
9053 {
9054   START (fma_downward);
9055   RUN_TEST_LOOP_fff_f (fma, fma_downward_test_data, FE_DOWNWARD);
9056   END (fma_downward);
9057 }
9058
9059
9060 static const struct test_fff_f_data fma_upward_test_data[] =
9061   {
9062     START_DATA (fma_upward),
9063     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
9064     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
9065     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
9066     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
9067     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
9068     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
9069     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
9070     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
9071     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
9072     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
9073     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
9074     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
9075     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
9076     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
9077     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
9078     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
9079     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
9080     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
9081     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
9082     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
9083     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
9084     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
9085     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
9086     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
9087
9088     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
9089     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
9090     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
9091     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
9092
9093     TEST_fff_f (fma, min_value, min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9094     TEST_fff_f (fma, min_value, min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9095     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9096     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9097     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9098     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9099     TEST_fff_f (fma, -min_value, -min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9100     TEST_fff_f (fma, -min_value, -min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9101
9102 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
9103     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9104     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9105     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9106     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9107     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9108     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9109     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9110     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9111 #endif
9112
9113 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
9114     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00008p-127, UNDERFLOW_EXCEPTION),
9115     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
9116     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9117     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9118     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9119     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9120     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9121     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9122     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1.000002p127),
9123     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
9124     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
9125     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
9126     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1.000002p-126),
9127     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9128     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9129     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
9130     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9131     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9132     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
9133     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9134     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-148, UNDERFLOW_EXCEPTION),
9135     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
9136     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
9137     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
9138     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
9139     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
9140     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
9141     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
9142     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1.000002p127),
9143     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
9144     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
9145     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
9146     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1.000002p103),
9147     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
9148     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
9149     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
9150 #endif
9151 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
9152     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
9153     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
9154     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9155     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9156     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9157     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9158     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9159     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9160     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1.0000000000001p1023),
9161     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
9162     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
9163     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
9164     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1.0000000000001p-1022),
9165     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9166     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9167     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
9168     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9169     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9170     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9171     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9172     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1073, UNDERFLOW_EXCEPTION),
9173     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9174     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
9175     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9176     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9177     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9178     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9179     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9180     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1.0000000000001p1023),
9181     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9182     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
9183     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9184     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1.0000000000001p970),
9185     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
9186     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
9187     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
9188 #endif
9189 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9190     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9191     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9192     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9193     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9194     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9195     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9196     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9197     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9198     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1.0000000000000002p16383L),
9199     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
9200     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9201     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
9202     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1.0000000000000002p-16382L),
9203     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9204     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9205     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
9206     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9207     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9208     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9209     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9210     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16444L, UNDERFLOW_EXCEPTION),
9211     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9212     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
9213     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9214     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9215     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9216     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9217     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9218     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1.0000000000000002p16383L),
9219     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9220     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9221     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9222     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1.0000000000000002p16319L),
9223     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9224     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
9225     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9226 #endif
9227 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9228     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9229     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9230     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9231     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9232     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9233     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9234     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9235     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9236     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9237     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
9238     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9239     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
9240     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1.0000000000000000000000000001p-16382L),
9241     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9242     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9243     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
9244     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9245     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9246     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9247     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9248     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16493L, UNDERFLOW_EXCEPTION),
9249     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9250     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
9251     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9252     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9253     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9254     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9255     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9256     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9257     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9258     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9259     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9260     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1.0000000000000000000000000001p16319L),
9261     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9262     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
9263     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9264 #endif
9265     END_DATA (fma_upward)
9266   };
9267
9268 static void
9269 fma_test_upward (void)
9270 {
9271   START (fma_upward);
9272   RUN_TEST_LOOP_fff_f (fma, fma_upward_test_data, FE_UPWARD);
9273   END (fma_upward);
9274 }
9275
9276
9277 static const struct test_ff_f_data fmax_test_data[] =
9278   {
9279     START_DATA (fmax),
9280     TEST_ff_f (fmax, 0, 0, 0),
9281     TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero),
9282     TEST_ff_f (fmax, 9, 0, 9),
9283     TEST_ff_f (fmax, 0, 9, 9),
9284     TEST_ff_f (fmax, -9, 0, 0),
9285     TEST_ff_f (fmax, 0, -9, 0),
9286
9287     TEST_ff_f (fmax, plus_infty, 9, plus_infty),
9288     TEST_ff_f (fmax, 0, plus_infty, plus_infty),
9289     TEST_ff_f (fmax, -9, plus_infty, plus_infty),
9290     TEST_ff_f (fmax, plus_infty, -9, plus_infty),
9291
9292     TEST_ff_f (fmax, minus_infty, 9, 9),
9293     TEST_ff_f (fmax, minus_infty, -9, -9),
9294     TEST_ff_f (fmax, 9, minus_infty, 9),
9295     TEST_ff_f (fmax, -9, minus_infty, -9),
9296
9297     TEST_ff_f (fmax, 0, qnan_value, 0),
9298     TEST_ff_f (fmax, 9, qnan_value, 9),
9299     TEST_ff_f (fmax, -9, qnan_value, -9),
9300     TEST_ff_f (fmax, qnan_value, 0, 0),
9301     TEST_ff_f (fmax, qnan_value, 9, 9),
9302     TEST_ff_f (fmax, qnan_value, -9, -9),
9303     TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty),
9304     TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty),
9305     TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty),
9306     TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty),
9307     TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value),
9308     END_DATA (fmax)
9309   };
9310
9311 static void
9312 fmax_test (void)
9313 {
9314   START (fmax);
9315   RUN_TEST_LOOP_ff_f (fmax, fmax_test_data, );
9316   END (fmax);
9317 }
9318
9319
9320 static const struct test_ff_f_data fmin_test_data[] =
9321   {
9322     START_DATA (fmin),
9323     TEST_ff_f (fmin, 0, 0, 0),
9324     TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero),
9325     TEST_ff_f (fmin, 9, 0, 0),
9326     TEST_ff_f (fmin, 0, 9, 0),
9327     TEST_ff_f (fmin, -9, 0, -9),
9328     TEST_ff_f (fmin, 0, -9, -9),
9329
9330     TEST_ff_f (fmin, plus_infty, 9, 9),
9331     TEST_ff_f (fmin, 9, plus_infty, 9),
9332     TEST_ff_f (fmin, plus_infty, -9, -9),
9333     TEST_ff_f (fmin, -9, plus_infty, -9),
9334     TEST_ff_f (fmin, minus_infty, 9, minus_infty),
9335     TEST_ff_f (fmin, minus_infty, -9, minus_infty),
9336     TEST_ff_f (fmin, 9, minus_infty, minus_infty),
9337     TEST_ff_f (fmin, -9, minus_infty, minus_infty),
9338
9339     TEST_ff_f (fmin, 0, qnan_value, 0),
9340     TEST_ff_f (fmin, 9, qnan_value, 9),
9341     TEST_ff_f (fmin, -9, qnan_value, -9),
9342     TEST_ff_f (fmin, qnan_value, 0, 0),
9343     TEST_ff_f (fmin, qnan_value, 9, 9),
9344     TEST_ff_f (fmin, qnan_value, -9, -9),
9345     TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty),
9346     TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty),
9347     TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty),
9348     TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty),
9349     TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value),
9350     END_DATA (fmin)
9351   };
9352
9353 static void
9354 fmin_test (void)
9355 {
9356   START (fmin);
9357   RUN_TEST_LOOP_ff_f (fmin, fmin_test_data, );
9358   END (fmin);
9359 }
9360
9361
9362 static const struct test_ff_f_data fmod_test_data[] =
9363   {
9364     START_DATA (fmod),
9365     /* fmod (+0, y) == +0 for y != 0.  */
9366     TEST_ff_f (fmod, 0, 3, 0),
9367
9368     /* fmod (-0, y) == -0 for y != 0.  */
9369     TEST_ff_f (fmod, minus_zero, 3, minus_zero),
9370
9371     /* fmod (+inf, y) == qNaN plus invalid exception.  */
9372     TEST_ff_f (fmod, plus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9373     /* fmod (-inf, y) == qNaN plus invalid exception.  */
9374     TEST_ff_f (fmod, minus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9375     /* fmod (x, +0) == qNaN plus invalid exception.  */
9376     TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9377     /* fmod (x, -0) == qNaN plus invalid exception.  */
9378     TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION),
9379
9380     /* fmod (x, +inf) == x for x not infinite.  */
9381     TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
9382     /* fmod (x, -inf) == x for x not infinite.  */
9383     TEST_ff_f (fmod, 3.0, minus_infty, 3.0),
9384
9385     TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value),
9386
9387     TEST_ff_f (fmod, 6.5, 2.25L, 2.0L),
9388     TEST_ff_f (fmod, -6.5, 2.25L, -2.0L),
9389     TEST_ff_f (fmod, 6.5, -2.25L, 2.0L),
9390     TEST_ff_f (fmod, -6.5, -2.25L, -2.0L),
9391
9392     TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero),
9393 #ifndef TEST_FLOAT
9394     TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero),
9395 #endif
9396 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
9397     TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero),
9398 #endif
9399     END_DATA (fmod)
9400   };
9401
9402 static void
9403 fmod_test (void)
9404 {
9405   errno = 0;
9406   FUNC(fmod) (6.5, 2.3L);
9407   if (errno == ENOSYS)
9408     /* Function not implemented.  */
9409     return;
9410
9411   START (fmod);
9412   RUN_TEST_LOOP_ff_f (fmod, fmod_test_data, );
9413   END (fmod);
9414 }
9415
9416
9417 static void
9418 fpclassify_test (void)
9419 {
9420   START (fpclassify);
9421
9422   TEST_f_i (fpclassify, qnan_value, FP_NAN);
9423   TEST_f_i (fpclassify, plus_infty, FP_INFINITE);
9424   TEST_f_i (fpclassify, minus_infty, FP_INFINITE);
9425   TEST_f_i (fpclassify, plus_zero, FP_ZERO);
9426   TEST_f_i (fpclassify, minus_zero, FP_ZERO);
9427   TEST_f_i (fpclassify, 1000, FP_NORMAL);
9428   TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL);
9429
9430   END (fpclassify);
9431 }
9432
9433
9434 static void
9435 frexp_test (void)
9436 {
9437   int x;
9438
9439   START (frexp);
9440
9441   TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE);
9442   TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE);
9443   TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE);
9444
9445   TEST_fI_f1 (frexp, 0.0, 0.0, 0.0);
9446   TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0);
9447
9448   TEST_fI_f1 (frexp, 12.8L, 0.8L, 4);
9449   TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5);
9450
9451   END (frexp);
9452 }
9453
9454
9455 static void
9456 gamma_test (void)
9457 {
9458   errno = 0;
9459   FUNC(gamma) (1);
9460
9461   if (errno == ENOSYS)
9462     /* Function not implemented.  */
9463     return;
9464
9465   START (gamma);
9466
9467   TEST_f_f1 (gamma, plus_infty, plus_infty, 1);
9468   TEST_f_f1 (gamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
9469   TEST_f_f1 (gamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
9470   TEST_f_f1 (gamma, minus_infty, plus_infty, IGNORE);
9471   TEST_f_f1 (gamma, qnan_value, qnan_value, IGNORE);
9472
9473   TEST_f_f1 (gamma, 1, 0, 1);
9474   TEST_f_f1 (gamma, 3, M_LN2l, 1);
9475
9476   TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1);
9477   TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1);
9478
9479   END (gamma);
9480 }
9481
9482 static const struct test_ff_f_data hypot_test_data[] =
9483   {
9484     START_DATA (hypot),
9485     TEST_ff_f (hypot, plus_infty, 1, plus_infty),
9486     TEST_ff_f (hypot, minus_infty, 1, plus_infty),
9487
9488 #ifndef TEST_INLINE
9489     TEST_ff_f (hypot, plus_infty, qnan_value, plus_infty),
9490     TEST_ff_f (hypot, minus_infty, qnan_value, plus_infty),
9491     TEST_ff_f (hypot, qnan_value, plus_infty, plus_infty),
9492     TEST_ff_f (hypot, qnan_value, minus_infty, plus_infty),
9493 #endif
9494
9495     TEST_ff_f (hypot, qnan_value, qnan_value, qnan_value),
9496
9497     /* hypot (x,y) == hypot (+-x, +-y)  */
9498     TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L),
9499     TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L),
9500     TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L),
9501     TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L),
9502     TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L),
9503     TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L),
9504     TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L),
9505     TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L),
9506
9507     /*  hypot (x,0) == fabs (x)  */
9508     TEST_ff_f (hypot, 0.75L, 0, 0.75L),
9509     TEST_ff_f (hypot, -0.75L, 0, 0.75L),
9510     TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L),
9511
9512     TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
9513
9514     TEST_ff_f (hypot, 1.0L, 0x1p-61L, 1.0L),
9515     TEST_ff_f (hypot, 0x1p+0L, 0x1.fp-129L, 0x1p+0L),
9516 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
9517     TEST_ff_f (hypot, 0x1.23456789abcdef0123456789ab8p-500L, 0x1.23456789abcdef0123456789ab8p-500L, 4.9155782399407039128612180934736799735113e-151L),
9518 #endif
9519
9520 #if !(defined TEST_FLOAT && defined TEST_INLINE)
9521     TEST_ff_f (hypot, 0x3p125L, 0x4p125L, 0x5p125L),
9522     TEST_ff_f (hypot, 0x1.234566p-126L, 0x1.234566p-126L, 1.891441686191081936598531534017449451173e-38L),
9523 #endif
9524
9525 #if !defined TEST_FLOAT && !(defined TEST_DOUBLE && defined TEST_INLINE)
9526     TEST_ff_f (hypot, 0x3p1021L, 0x4p1021L, 0x5p1021L),
9527     TEST_ff_f (hypot, 0x1p+0L, 0x0.3ep-1022L, 0x1p+0L),
9528 #endif
9529
9530 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 && !defined TEST_INLINE
9531     TEST_ff_f (hypot, 0x3p16381L, 0x4p16381L, 0x5p16381L),
9532 #endif
9533     END_DATA (hypot)
9534   };
9535
9536 static void
9537 hypot_test (void)
9538 {
9539   errno = 0;
9540   FUNC(hypot) (0.7L, 12.4L);
9541   if (errno == ENOSYS)
9542     /* Function not implemented.  */
9543     return;
9544
9545   START (hypot);
9546   RUN_TEST_LOOP_ff_f (hypot, hypot_test_data, );
9547   END (hypot);
9548 }
9549
9550
9551 static void
9552 ilogb_test (void)
9553 {
9554   START (ilogb);
9555
9556   TEST_f_i (ilogb, 1, 0);
9557   TEST_f_i (ilogb, M_El, 1);
9558   TEST_f_i (ilogb, 1024, 10);
9559   TEST_f_i (ilogb, -2000, 10);
9560
9561   /* ilogb (0.0) == FP_ILOGB0 plus invalid exception  */
9562   TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION|ERRNO_EDOM);
9563   /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception  */
9564   TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION|ERRNO_EDOM);
9565   /* ilogb (inf) == INT_MAX plus invalid exception  */
9566   TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
9567   /* ilogb (-inf) == INT_MAX plus invalid exception  */
9568   TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
9569
9570   END (ilogb);
9571 }
9572
9573 static void
9574 isfinite_test (void)
9575 {
9576   START (isfinite);
9577
9578   TEST_f_b (isfinite, 0, 1);
9579   TEST_f_b (isfinite, minus_zero, 1);
9580   TEST_f_b (isfinite, 10, 1);
9581   TEST_f_b (isfinite, min_subnorm_value, 1);
9582   TEST_f_b (isfinite, plus_infty, 0);
9583   TEST_f_b (isfinite, minus_infty, 0);
9584   TEST_f_b (isfinite, qnan_value, 0);
9585
9586   END (isfinite);
9587 }
9588
9589 static void
9590 isgreater_test (void)
9591 {
9592   START (isgreater);
9593
9594   TEST_ff_i (isgreater, minus_zero, minus_zero, 0);
9595   TEST_ff_i (isgreater, minus_zero, plus_zero, 0);
9596   TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0);
9597   TEST_ff_i (isgreater, minus_zero, qnan_value, 0);
9598   TEST_ff_i (isgreater, plus_zero, minus_zero, 0);
9599   TEST_ff_i (isgreater, plus_zero, plus_zero, 0);
9600   TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0);
9601   TEST_ff_i (isgreater, plus_zero, qnan_value, 0);
9602   TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1);
9603   TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1);
9604   TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0);
9605   TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0);
9606   TEST_ff_i (isgreater, qnan_value, minus_zero, 0);
9607   TEST_ff_i (isgreater, qnan_value, plus_zero, 0);
9608   TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0);
9609   TEST_ff_i (isgreater, qnan_value, qnan_value, 0);
9610
9611   END (isgreater);
9612 }
9613
9614 static void
9615 isgreaterequal_test (void)
9616 {
9617   START (isgreaterequal);
9618
9619   TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1);
9620   TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1);
9621   TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0);
9622   TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0);
9623   TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1);
9624   TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1);
9625   TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0);
9626   TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0);
9627   TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1);
9628   TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1);
9629   TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1);
9630   TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0);
9631   TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0);
9632   TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0);
9633   TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0);
9634   TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0);
9635
9636   END (isgreaterequal);
9637 }
9638
9639 static void
9640 isinf_test (void)
9641 {
9642   START (isinf);
9643
9644   TEST_f_b (isinf, 0, 0);
9645   TEST_f_b (isinf, minus_zero, 0);
9646   TEST_f_b (isinf, 10, 0);
9647   TEST_f_b (isinf, min_subnorm_value, 0);
9648   TEST_f_b (isinf, plus_infty, 1);
9649   TEST_f_b (isinf, minus_infty, 1);
9650   TEST_f_b (isinf, qnan_value, 0);
9651
9652   END (isinf);
9653 }
9654
9655 static void
9656 isless_test (void)
9657 {
9658   START (isless);
9659
9660   TEST_ff_i (isless, minus_zero, minus_zero, 0);
9661   TEST_ff_i (isless, minus_zero, plus_zero, 0);
9662   TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1);
9663   TEST_ff_i (isless, minus_zero, qnan_value, 0);
9664   TEST_ff_i (isless, plus_zero, minus_zero, 0);
9665   TEST_ff_i (isless, plus_zero, plus_zero, 0);
9666   TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1);
9667   TEST_ff_i (isless, plus_zero, qnan_value, 0);
9668   TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0);
9669   TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0);
9670   TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0);
9671   TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0);
9672   TEST_ff_i (isless, qnan_value, minus_zero, 0);
9673   TEST_ff_i (isless, qnan_value, plus_zero, 0);
9674   TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0);
9675   TEST_ff_i (isless, qnan_value, qnan_value, 0);
9676
9677   END (isless);
9678 }
9679
9680 static void
9681 islessequal_test (void)
9682 {
9683   START (islessequal);
9684
9685   TEST_ff_i (islessequal, minus_zero, minus_zero, 1);
9686   TEST_ff_i (islessequal, minus_zero, plus_zero, 1);
9687   TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1);
9688   TEST_ff_i (islessequal, minus_zero, qnan_value, 0);
9689   TEST_ff_i (islessequal, plus_zero, minus_zero, 1);
9690   TEST_ff_i (islessequal, plus_zero, plus_zero, 1);
9691   TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1);
9692   TEST_ff_i (islessequal, plus_zero, qnan_value, 0);
9693   TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0);
9694   TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0);
9695   TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1);
9696   TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0);
9697   TEST_ff_i (islessequal, qnan_value, minus_zero, 0);
9698   TEST_ff_i (islessequal, qnan_value, plus_zero, 0);
9699   TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0);
9700   TEST_ff_i (islessequal, qnan_value, qnan_value, 0);
9701
9702   END (islessequal);
9703 }
9704
9705 static void
9706 islessgreater_test (void)
9707 {
9708   START (islessgreater);
9709
9710   TEST_ff_i (islessgreater, minus_zero, minus_zero, 0);
9711   TEST_ff_i (islessgreater, minus_zero, plus_zero, 0);
9712   TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1);
9713   TEST_ff_i (islessgreater, minus_zero, qnan_value, 0);
9714   TEST_ff_i (islessgreater, plus_zero, minus_zero, 0);
9715   TEST_ff_i (islessgreater, plus_zero, plus_zero, 0);
9716   TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1);
9717   TEST_ff_i (islessgreater, plus_zero, qnan_value, 0);
9718   TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1);
9719   TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1);
9720   TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0);
9721   TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0);
9722   TEST_ff_i (islessgreater, qnan_value, minus_zero, 0);
9723   TEST_ff_i (islessgreater, qnan_value, plus_zero, 0);
9724   TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0);
9725   TEST_ff_i (islessgreater, qnan_value, qnan_value, 0);
9726
9727   END (islessgreater);
9728 }
9729
9730 static void
9731 isnan_test (void)
9732 {
9733   START (isnan);
9734
9735   TEST_f_b (isnan, 0, 0);
9736   TEST_f_b (isnan, minus_zero, 0);
9737   TEST_f_b (isnan, 10, 0);
9738   TEST_f_b (isnan, min_subnorm_value, 0);
9739   TEST_f_b (isnan, plus_infty, 0);
9740   TEST_f_b (isnan, minus_infty, 0);
9741   TEST_f_b (isnan, qnan_value, 1);
9742
9743   END (isnan);
9744 }
9745
9746 static void
9747 isnormal_test (void)
9748 {
9749   START (isnormal);
9750
9751   TEST_f_b (isnormal, 0, 0);
9752   TEST_f_b (isnormal, minus_zero, 0);
9753   TEST_f_b (isnormal, 10, 1);
9754   TEST_f_b (isnormal, min_subnorm_value, 0);
9755   TEST_f_b (isnormal, plus_infty, 0);
9756   TEST_f_b (isnormal, minus_infty, 0);
9757   TEST_f_b (isnormal, qnan_value, 0);
9758
9759   END (isnormal);
9760 }
9761
9762 static void
9763 issignaling_test (void)
9764 {
9765   START (issignaling);
9766
9767   TEST_f_b (issignaling, 0, 0);
9768   TEST_f_b (issignaling, minus_zero, 0);
9769   TEST_f_b (issignaling, 10, 0);
9770   TEST_f_b (issignaling, min_subnorm_value, 0);
9771   TEST_f_b (issignaling, plus_infty, 0);
9772   TEST_f_b (issignaling, minus_infty, 0);
9773   TEST_f_b (issignaling, qnan_value, 0);
9774
9775   END (issignaling);
9776 }
9777
9778 static void
9779 isunordered_test (void)
9780 {
9781   START (isunordered);
9782
9783   TEST_ff_i (isunordered, minus_zero, minus_zero, 0);
9784   TEST_ff_i (isunordered, minus_zero, plus_zero, 0);
9785   TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0);
9786   TEST_ff_i (isunordered, minus_zero, qnan_value, 1);
9787   TEST_ff_i (isunordered, plus_zero, minus_zero, 0);
9788   TEST_ff_i (isunordered, plus_zero, plus_zero, 0);
9789   TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0);
9790   TEST_ff_i (isunordered, plus_zero, qnan_value, 1);
9791   TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0);
9792   TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0);
9793   TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0);
9794   TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1);
9795   TEST_ff_i (isunordered, qnan_value, minus_zero, 1);
9796   TEST_ff_i (isunordered, qnan_value, plus_zero, 1);
9797   TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1);
9798   TEST_ff_i (isunordered, qnan_value, qnan_value, 1);
9799
9800   END (isunordered);
9801 }
9802
9803 static const struct test_f_f_data j0_test_data[] =
9804   {
9805     START_DATA (j0),
9806     /* j0 is the Bessel function of the first kind of order 0 */
9807     TEST_f_f (j0, qnan_value, qnan_value),
9808     TEST_f_f (j0, plus_infty, 0),
9809     TEST_f_f (j0, -1.0, 0.765197686557966551449717526102663221L),
9810     TEST_f_f (j0, 0.0, 1.0),
9811     TEST_f_f (j0, 0.125L, 0.996097563041985204620768999453174712L),
9812     TEST_f_f (j0, 0.75L, 0.864242275166648623555731103820923211L),
9813     TEST_f_f (j0, 1.0, 0.765197686557966551449717526102663221L),
9814     TEST_f_f (j0, 1.5, 0.511827671735918128749051744283411720L),
9815     TEST_f_f (j0, 2.0, 0.223890779141235668051827454649948626L),
9816     TEST_f_f (j0, 8.0, 0.171650807137553906090869407851972001L),
9817     TEST_f_f (j0, 10.0, -0.245935764451348335197760862485328754L),
9818     TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
9819     TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
9820
9821     TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L),
9822
9823 #ifndef TEST_FLOAT
9824     TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L),
9825     TEST_f_f (j0, 0x1p1023L, -1.5665258060609012834424478437196679802783e-155L),
9826 #endif
9827
9828 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9829     TEST_f_f (j0, 0x1p16382L, -1.2193782500509000574176799046642541129387e-2466L),
9830     TEST_f_f (j0, 0x1p16383L, 9.5859502826270374691362975419147645151233e-2467L),
9831 #endif
9832     END_DATA (j0)
9833   };
9834
9835 static void
9836 j0_test (void)
9837 {
9838   FLOAT s, c;
9839   errno = 0;
9840   FUNC (sincos) (0, &s, &c);
9841   if (errno == ENOSYS)
9842     /* Required function not implemented.  */
9843     return;
9844   FUNC(j0) (0);
9845   if (errno == ENOSYS)
9846     /* Function not implemented.  */
9847     return;
9848
9849   START (j0);
9850   RUN_TEST_LOOP_f_f (j0, j0_test_data, );
9851   END (j0);
9852 }
9853
9854
9855 static const struct test_f_f_data j1_test_data[] =
9856   {
9857     START_DATA (j1),
9858     /* j1 is the Bessel function of the first kind of order 1 */
9859     TEST_f_f (j1, qnan_value, qnan_value),
9860     TEST_f_f (j1, plus_infty, 0),
9861
9862     TEST_f_f (j1, -1.0, -0.440050585744933515959682203718914913L),
9863     TEST_f_f (j1, 0.0, 0.0),
9864     TEST_f_f (j1, 0.125L, 0.0623780091344946810942311355879361177L),
9865     TEST_f_f (j1, 0.75L, 0.349243602174862192523281016426251335L),
9866     TEST_f_f (j1, 1.0, 0.440050585744933515959682203718914913L),
9867     TEST_f_f (j1, 1.5, 0.557936507910099641990121213156089400L),
9868     TEST_f_f (j1, 2.0, 0.576724807756873387202448242269137087L),
9869     TEST_f_f (j1, 8.0, 0.234636346853914624381276651590454612L),
9870     TEST_f_f (j1, 10.0, 0.0434727461688614366697487680258592883L),
9871
9872     TEST_f_f (j1, 0x1.3ffp+74L, 1.818984347516051243459364437186082741567e-12L),
9873
9874 #ifndef TEST_FLOAT
9875     TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
9876     TEST_f_f (j1, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
9877 #endif
9878
9879 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9880     TEST_f_f (j1, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
9881     TEST_f_f (j1, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
9882 #endif
9883     END_DATA (j1)
9884   };
9885
9886 static void
9887 j1_test (void)
9888 {
9889   FLOAT s, c;
9890   errno = 0;
9891   FUNC (sincos) (0, &s, &c);
9892   if (errno == ENOSYS)
9893     /* Required function not implemented.  */
9894     return;
9895   FUNC(j1) (0);
9896   if (errno == ENOSYS)
9897     /* Function not implemented.  */
9898     return;
9899
9900   START (j1);
9901   RUN_TEST_LOOP_f_f (j1, j1_test_data, );
9902   END (j1);
9903 }
9904
9905 static void
9906 jn_test (void)
9907 {
9908   FLOAT s, c;
9909   errno = 0;
9910   FUNC (sincos) (0, &s, &c);
9911   if (errno == ENOSYS)
9912     /* Required function not implemented.  */
9913     return;
9914   FUNC(jn) (1, 1);
9915   if (errno == ENOSYS)
9916     /* Function not implemented.  */
9917     return;
9918
9919   /* jn is the Bessel function of the first kind of order n.  */
9920   START (jn);
9921
9922   /* jn (0, x) == j0 (x)  */
9923   TEST_if_f (jn, 0, qnan_value, qnan_value);
9924   TEST_if_f (jn, 0, plus_infty, 0);
9925   TEST_if_f (jn, 0, -1.0, 0.765197686557966551449717526102663221L);
9926   TEST_if_f (jn, 0, 0.0, 1.0);
9927   TEST_if_f (jn, 0, 0.125L, 0.996097563041985204620768999453174712L);
9928   TEST_if_f (jn, 0, 0.75L, 0.864242275166648623555731103820923211L);
9929   TEST_if_f (jn, 0, 1.0, 0.765197686557966551449717526102663221L);
9930   TEST_if_f (jn, 0, 1.5, 0.511827671735918128749051744283411720L);
9931   TEST_if_f (jn, 0, 2.0, 0.223890779141235668051827454649948626L);
9932   TEST_if_f (jn, 0, 8.0, 0.171650807137553906090869407851972001L);
9933   TEST_if_f (jn, 0, 10.0, -0.245935764451348335197760862485328754L);
9934   TEST_if_f (jn, 0, 4.0, -3.9714980986384737228659076845169804197562E-1L);
9935   TEST_if_f (jn, 0, -4.0, -3.9714980986384737228659076845169804197562E-1L);
9936
9937   /* jn (1, x) == j1 (x)  */
9938   TEST_if_f (jn, 1, qnan_value, qnan_value);
9939   TEST_if_f (jn, 1, plus_infty, 0);
9940   TEST_if_f (jn, 1, -1.0, -0.440050585744933515959682203718914913L);
9941   TEST_if_f (jn, 1, 0.0, 0.0);
9942   TEST_if_f (jn, 1, 0.125L, 0.0623780091344946810942311355879361177L);
9943   TEST_if_f (jn, 1, 0.75L, 0.349243602174862192523281016426251335L);
9944   TEST_if_f (jn, 1, 1.0, 0.440050585744933515959682203718914913L);
9945   TEST_if_f (jn, 1, 1.5, 0.557936507910099641990121213156089400L);
9946   TEST_if_f (jn, 1, 2.0, 0.576724807756873387202448242269137087L);
9947   TEST_if_f (jn, 1, 8.0, 0.234636346853914624381276651590454612L);
9948   TEST_if_f (jn, 1, 10.0, 0.0434727461688614366697487680258592883L);
9949
9950   /* jn (3, x)  */
9951   TEST_if_f (jn, 3, qnan_value, qnan_value);
9952   TEST_if_f (jn, 3, plus_infty, 0);
9953
9954   TEST_if_f (jn, 3, -1.0, -0.0195633539826684059189053216217515083L);
9955   TEST_if_f (jn, 3, 0.0, 0.0);
9956   TEST_if_f (jn, 3, 0.125L, 0.406503832554912875023029337653442868e-4L);
9957   TEST_if_f (jn, 3, 0.75L, 0.848438342327410884392755236884386804e-2L);
9958   TEST_if_f (jn, 3, 1.0, 0.0195633539826684059189053216217515083L);
9959   TEST_if_f (jn, 3, 2.0, 0.128943249474402051098793332969239835L);
9960   TEST_if_f (jn, 3, 10.0, 0.0583793793051868123429354784103409563L);
9961
9962   /*  jn (10, x)  */
9963   TEST_if_f (jn, 10, qnan_value, qnan_value);
9964   TEST_if_f (jn, 10, plus_infty, 0);
9965
9966   TEST_if_f (jn, 10, -1.0, 0.263061512368745320699785368779050294e-9L);
9967   TEST_if_f (jn, 10, 0.0, 0.0);
9968   TEST_if_f (jn, 10, 0.125L, 0.250543369809369890173993791865771547e-18L);
9969   TEST_if_f (jn, 10, 0.75L, 0.149621713117596814698712483621682835e-10L);
9970   TEST_if_f (jn, 10, 1.0, 0.263061512368745320699785368779050294e-9L);
9971   TEST_if_f (jn, 10, 2.0, 0.251538628271673670963516093751820639e-6L);
9972   TEST_if_f (jn, 10, 10.0, 0.207486106633358857697278723518753428L);
9973
9974   /* BZ #11589 .*/
9975   TEST_if_f (jn, 2, 2.4048255576957729L, 0.43175480701968038399746111312430703L);
9976   TEST_if_f (jn, 3, 2.4048255576957729L, 0.19899990535769083404042146764530813L);
9977   TEST_if_f (jn, 4, 2.4048255576957729L, 0.647466661641779720084932282551219891E-1L);
9978   TEST_if_f (jn, 5, 2.4048255576957729L, 0.163892432048058525099230549946147698E-1L);
9979   TEST_if_f (jn, 6, 2.4048255576957729L, 0.34048184720278336646673682895929161E-2L);
9980   TEST_if_f (jn, 7, 2.4048255576957729L, 0.60068836573295394221291569249883076E-3L);
9981   TEST_if_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L);
9982   TEST_if_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L);
9983
9984   /* Bug 14155: spurious exception may occur.  */
9985   TEST_if_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L, UNDERFLOW_EXCEPTION_OK);
9986
9987   END (jn);
9988 }
9989
9990
9991 static void
9992 ldexp_test (void)
9993 {
9994   START (ldexp);
9995
9996   TEST_fi_f (ldexp, 0, 0, 0);
9997   TEST_fi_f (ldexp, minus_zero, 0, minus_zero);
9998
9999   TEST_fi_f (ldexp, plus_infty, 1, plus_infty);
10000   TEST_fi_f (ldexp, minus_infty, 1, minus_infty);
10001   TEST_fi_f (ldexp, qnan_value, 1, qnan_value);
10002
10003   TEST_fi_f (ldexp, 0.8L, 4, 12.8L);
10004   TEST_fi_f (ldexp, -0.854375L, 5, -27.34L);
10005
10006   /* ldexp (x, 0) == x.  */
10007   TEST_fi_f (ldexp, 1.0L, 0L, 1.0L);
10008
10009   END (ldexp);
10010 }
10011
10012
10013 static void
10014 lgamma_test (void)
10015 {
10016   errno = 0;
10017   FUNC(lgamma) (0);
10018   if (errno == ENOSYS)
10019     /* Function not implemented.  */
10020     return;
10021
10022   START (lgamma);
10023
10024   TEST_f_f1 (lgamma, plus_infty, plus_infty, 1);
10025   TEST_f_f1 (lgamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
10026   TEST_f_f1 (lgamma, minus_zero, plus_infty, -1, DIVIDE_BY_ZERO_EXCEPTION);
10027   TEST_f_f1 (lgamma, qnan_value, qnan_value, IGNORE);
10028
10029   /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0.  */
10030   TEST_f_f1 (lgamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
10031   TEST_f_f1 (lgamma, minus_infty, plus_infty, IGNORE);
10032   TEST_f_f1 (lgamma, -max_value, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
10033   TEST_f_f1 (lgamma, max_value, plus_infty, 1, OVERFLOW_EXCEPTION);
10034
10035   TEST_f_f1 (lgamma, 1, 0, 1);
10036
10037   TEST_f_f1 (lgamma, 3, M_LN2l, 1);
10038
10039   TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
10040   TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
10041   TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1);
10042   TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1);
10043
10044   END (lgamma);
10045 }
10046
10047
10048 static void
10049 lrint_test (void)
10050 {
10051   /* XXX this test is incomplete.  We need to have a way to specifiy
10052      the rounding method and test the critical cases.  So far, only
10053      unproblematic numbers are tested.  */
10054   /* TODO: missing +/-Inf as well as qNaN tests.  */
10055
10056   START (lrint);
10057
10058   TEST_f_l (lrint, 0.0, 0);
10059   TEST_f_l (lrint, minus_zero, 0);
10060   TEST_f_l (lrint, 0.2L, 0);
10061   TEST_f_l (lrint, -0.2L, 0);
10062
10063   TEST_f_l (lrint, 1.4L, 1);
10064   TEST_f_l (lrint, -1.4L, -1);
10065
10066   TEST_f_l (lrint, 8388600.3L, 8388600);
10067   TEST_f_l (lrint, -8388600.3L, -8388600);
10068
10069   TEST_f_l (lrint, 1071930.0008, 1071930);
10070 #ifndef TEST_FLOAT
10071   TEST_f_l (lrint, 1073741824.01, 1073741824);
10072 # if LONG_MAX > 281474976710656
10073   TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10074 # endif
10075 #endif
10076
10077   END (lrint);
10078 }
10079
10080
10081 static void
10082 lrint_test_tonearest (void)
10083 {
10084   int save_round_mode;
10085   START (lrint_tonearest);
10086
10087   save_round_mode = fegetround ();
10088
10089   if (!fesetround (FE_TONEAREST))
10090     {
10091       TEST_f_l (lrint, 0.0, 0);
10092       TEST_f_l (lrint, minus_zero, 0);
10093       TEST_f_l (lrint, 0.2L, 0);
10094       TEST_f_l (lrint, -0.2L, 0);
10095       TEST_f_l (lrint, 0.5L, 0);
10096       TEST_f_l (lrint, -0.5L, 0);
10097       TEST_f_l (lrint, 0.8L, 1);
10098       TEST_f_l (lrint, -0.8L, -1);
10099
10100       TEST_f_l (lrint, 1.4L, 1);
10101       TEST_f_l (lrint, -1.4L, -1);
10102
10103       TEST_f_l (lrint, 8388600.3L, 8388600);
10104       TEST_f_l (lrint, -8388600.3L, -8388600);
10105
10106       TEST_f_l (lrint, 1071930.0008, 1071930);
10107 #ifndef TEST_FLOAT
10108       TEST_f_l (lrint, 1073741824.01, 1073741824);
10109 # if LONG_MAX > 281474976710656
10110       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10111 # endif
10112 #endif
10113     }
10114
10115   fesetround (save_round_mode);
10116
10117   END (lrint_tonearest);
10118 }
10119
10120
10121 static void
10122 lrint_test_towardzero (void)
10123 {
10124   int save_round_mode;
10125   START (lrint_towardzero);
10126
10127   save_round_mode = fegetround ();
10128
10129   if (!fesetround (FE_TOWARDZERO))
10130     {
10131       TEST_f_l (lrint, 0.0, 0);
10132       TEST_f_l (lrint, minus_zero, 0);
10133       TEST_f_l (lrint, 0.2L, 0);
10134       TEST_f_l (lrint, -0.2L, 0);
10135       TEST_f_l (lrint, 0.5L, 0);
10136       TEST_f_l (lrint, -0.5L, 0);
10137       TEST_f_l (lrint, 0.8L, 0);
10138       TEST_f_l (lrint, -0.8L, 0);
10139
10140       TEST_f_l (lrint, 1.4L, 1);
10141       TEST_f_l (lrint, -1.4L, -1);
10142
10143       TEST_f_l (lrint, 8388600.3L, 8388600);
10144       TEST_f_l (lrint, -8388600.3L, -8388600);
10145
10146       TEST_f_l (lrint, 1071930.0008, 1071930);
10147 #ifndef TEST_FLOAT
10148       TEST_f_l (lrint, 1073741824.01, 1073741824);
10149 # if LONG_MAX > 281474976710656
10150       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10151 # endif
10152 #endif
10153     }
10154
10155   fesetround (save_round_mode);
10156
10157   END (lrint_towardzero);
10158 }
10159
10160
10161 static void
10162 lrint_test_downward (void)
10163 {
10164   int save_round_mode;
10165   START (lrint_downward);
10166
10167   save_round_mode = fegetround ();
10168
10169   if (!fesetround (FE_DOWNWARD))
10170     {
10171       TEST_f_l (lrint, 0.0, 0);
10172       TEST_f_l (lrint, minus_zero, 0);
10173       TEST_f_l (lrint, 0.2L, 0);
10174       TEST_f_l (lrint, -0.2L, -1);
10175       TEST_f_l (lrint, 0.5L, 0);
10176       TEST_f_l (lrint, -0.5L, -1);
10177       TEST_f_l (lrint, 0.8L, 0);
10178       TEST_f_l (lrint, -0.8L, -1);
10179
10180       TEST_f_l (lrint, 1.4L, 1);
10181       TEST_f_l (lrint, -1.4L, -2);
10182
10183       TEST_f_l (lrint, 8388600.3L, 8388600);
10184       TEST_f_l (lrint, -8388600.3L, -8388601);
10185
10186       TEST_f_l (lrint, 1071930.0008, 1071930);
10187 #ifndef TEST_FLOAT
10188       TEST_f_l (lrint, 1073741824.01, 1073741824);
10189 # if LONG_MAX > 281474976710656
10190       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10191 # endif
10192 #endif
10193     }
10194
10195   fesetround (save_round_mode);
10196
10197   END (lrint_downward);
10198 }
10199
10200
10201 static void
10202 lrint_test_upward (void)
10203 {
10204   int save_round_mode;
10205   START (lrint_upward);
10206
10207   save_round_mode = fegetround ();
10208
10209   if (!fesetround (FE_UPWARD))
10210     {
10211       TEST_f_l (lrint, 0.0, 0);
10212       TEST_f_l (lrint, minus_zero, 0);
10213       TEST_f_l (lrint, 0.2L, 1);
10214       TEST_f_l (lrint, -0.2L, 0);
10215       TEST_f_l (lrint, 0.5L, 1);
10216       TEST_f_l (lrint, -0.5L, 0);
10217       TEST_f_l (lrint, 0.8L, 1);
10218       TEST_f_l (lrint, -0.8L, 0);
10219
10220       TEST_f_l (lrint, 1.4L, 2);
10221       TEST_f_l (lrint, -1.4L, -1);
10222
10223       TEST_f_l (lrint, 8388600.3L, 8388601);
10224       TEST_f_l (lrint, -8388600.3L, -8388600);
10225
10226 #ifndef TEST_FLOAT
10227       TEST_f_l (lrint, 1071930.0008, 1071931);
10228       TEST_f_l (lrint, 1073741824.01, 1073741825);
10229 # if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
10230       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10231 # endif
10232 #endif
10233     }
10234
10235   fesetround (save_round_mode);
10236
10237   END (lrint_upward);
10238 }
10239
10240
10241 static void
10242 llrint_test (void)
10243 {
10244   /* XXX this test is incomplete.  We need to have a way to specifiy
10245      the rounding method and test the critical cases.  So far, only
10246      unproblematic numbers are tested.  */
10247   /* TODO: missing +/-Inf as well as qNaN tests.  */
10248
10249   START (llrint);
10250
10251   TEST_f_L (llrint, 0.0, 0);
10252   TEST_f_L (llrint, minus_zero, 0);
10253   TEST_f_L (llrint, 0.2L, 0);
10254   TEST_f_L (llrint, -0.2L, 0);
10255
10256   TEST_f_L (llrint, 1.4L, 1);
10257   TEST_f_L (llrint, -1.4L, -1);
10258
10259   TEST_f_L (llrint, 8388600.3L, 8388600);
10260   TEST_f_L (llrint, -8388600.3L, -8388600);
10261
10262   TEST_f_l (llrint, 1071930.0008, 1071930);
10263
10264   /* Test boundary conditions.  */
10265   /* 0x1FFFFF */
10266   TEST_f_L (llrint, 2097151.0,2097151LL);
10267   /* 0x800000 */
10268   TEST_f_L (llrint, 8388608.0, 8388608LL);
10269   /* 0x1000000 */
10270   TEST_f_L (llrint, 16777216.0, 16777216LL);
10271   /* 0x20000000000 */
10272   TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10273   /* 0x40000000000 */
10274   TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10275   /* 0x1000000000000 */
10276   TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10277   /* 0x10000000000000 */
10278   TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10279   /* 0x10000080000000 */
10280   TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10281   /* 0x20000000000000 */
10282   TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10283   /* 0x80000000000000 */
10284   TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10285   /* 0x100000000000000 */
10286   TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10287 #ifdef TEST_LDOUBLE
10288   /* The input can only be represented in long double.  */
10289   TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10290   TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10291   TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10292   TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10293   TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10294
10295   TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10296   TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10297   TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10298   TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10299   TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10300
10301 # if LDBL_MANT_DIG > 100
10302   TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10303   TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10304   TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10305   TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10306   TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10307   TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10308
10309   TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10310   TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10311   TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10312   TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10313   TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10314   TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10315 #endif
10316
10317   TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10318   TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10319   TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10320   TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10321   TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10322
10323   TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10324   TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10325   TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10326   TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10327   TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10328
10329 # if LDBL_MANT_DIG > 100
10330   TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10331   TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10332   TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10333   TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10334   TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10335   TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10336
10337   TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10338   TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10339   TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10340   TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10341   TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10342   TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10343 #endif
10344
10345   TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10346   TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10347   TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10348   TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10349   TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10350
10351   TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10352   TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10353   TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10354   TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10355   TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10356
10357 # if LDBL_MANT_DIG > 100
10358   TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10359   TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10360   TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10361   TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10362   TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10363   TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10364   TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10365   TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10366   TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10367   TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10368   TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10369   TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10370 # endif
10371 #endif
10372
10373   END (llrint);
10374 }
10375
10376 static void
10377 llrint_test_tonearest (void)
10378 {
10379   int save_round_mode;
10380   START (llrint_tonearest);
10381
10382   save_round_mode = fegetround ();
10383
10384   if (!fesetround (FE_TONEAREST))
10385     {
10386       TEST_f_L (llrint, 0.0, 0);
10387       TEST_f_L (llrint, minus_zero, 0);
10388       TEST_f_L (llrint, 0.2L, 0);
10389       TEST_f_L (llrint, -0.2L, 0);
10390
10391       TEST_f_L (llrint, 1.4L, 1);
10392       TEST_f_L (llrint, -1.4L, -1);
10393
10394       TEST_f_L (llrint, 8388600.3L, 8388600);
10395       TEST_f_L (llrint, -8388600.3L, -8388600);
10396
10397       TEST_f_l (llrint, 1071930.0008, 1071930);
10398
10399       /* Test boundary conditions.  */
10400       /* 0x1FFFFF */
10401       TEST_f_L (llrint, 2097151.0,2097151LL);
10402       /* 0x800000 */
10403       TEST_f_L (llrint, 8388608.0, 8388608LL);
10404       /* 0x1000000 */
10405       TEST_f_L (llrint, 16777216.0, 16777216LL);
10406       /* 0x20000000000 */
10407       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10408       /* 0x40000000000 */
10409       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10410       /* 0x1000000000000 */
10411       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10412       /* 0x10000000000000 */
10413       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10414       /* 0x10000080000000 */
10415       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10416       /* 0x20000000000000 */
10417       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10418       /* 0x80000000000000 */
10419       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10420       /* 0x100000000000000 */
10421       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10422 #ifdef TEST_LDOUBLE
10423       /* The input can only be represented in long double.  */
10424       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10425       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10426       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10427       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10428       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10429
10430       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10431       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10432       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10433       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10434       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10435
10436 # if LDBL_MANT_DIG > 100
10437       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10438       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10439       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10440       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10441       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10442       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10443
10444       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10445       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10446       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10447       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10448       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10449       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10450 #endif
10451
10452       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10453       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10454       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10455       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10456       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10457
10458       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10459       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10460       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10461       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10462       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10463
10464 # if LDBL_MANT_DIG > 100
10465       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10466       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10467       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10468       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10469       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10470       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10471
10472       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10473       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10474       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10475       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10476       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10477       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10478 #endif
10479
10480       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10481       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10482       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10483       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10484       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10485
10486       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10487       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10488       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10489       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10490       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10491
10492 # if LDBL_MANT_DIG > 100
10493       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10494       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10495       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10496       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10497       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10498       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10499       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10500       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10501       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10502       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10503       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10504       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10505 # endif
10506 #endif
10507     }
10508
10509   fesetround (save_round_mode);
10510
10511   END (llrint_tonearest);
10512 }
10513
10514 static void
10515 llrint_test_towardzero (void)
10516 {
10517   int save_round_mode;
10518   START (llrint_towardzero);
10519
10520   save_round_mode = fegetround ();
10521
10522   if (!fesetround (FE_TOWARDZERO))
10523     {
10524       TEST_f_L (llrint, 0.0, 0);
10525       TEST_f_L (llrint, minus_zero, 0);
10526       TEST_f_L (llrint, 0.2L, 0);
10527       TEST_f_L (llrint, -0.2L, 0);
10528
10529       TEST_f_L (llrint, 1.4L, 1);
10530       TEST_f_L (llrint, -1.4L, -1);
10531
10532       TEST_f_L (llrint, 8388600.3L, 8388600);
10533       TEST_f_L (llrint, -8388600.3L, -8388600);
10534
10535       TEST_f_l (llrint, 1071930.0008, 1071930);
10536
10537       /* Test boundary conditions.  */
10538       /* 0x1FFFFF */
10539       TEST_f_L (llrint, 2097151.0,2097151LL);
10540       /* 0x800000 */
10541       TEST_f_L (llrint, 8388608.0, 8388608LL);
10542       /* 0x1000000 */
10543       TEST_f_L (llrint, 16777216.0, 16777216LL);
10544       /* 0x20000000000 */
10545       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10546       /* 0x40000000000 */
10547       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10548       /* 0x1000000000000 */
10549       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10550       /* 0x10000000000000 */
10551       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10552       /* 0x10000080000000 */
10553       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10554       /* 0x20000000000000 */
10555       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10556       /* 0x80000000000000 */
10557       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10558       /* 0x100000000000000 */
10559       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10560 #ifdef TEST_LDOUBLE
10561       /* The input can only be represented in long double.  */
10562       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10563       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10564       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10565       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10566       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10567
10568       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10569       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10570       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10571       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10572       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10573
10574 # if LDBL_MANT_DIG > 100
10575       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10576       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10577       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10578       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10579       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10580       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10581
10582       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10583       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10584       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10585       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10586       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10587       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10588 #endif
10589
10590       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10591       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10592       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10593       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10594       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10595
10596       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10597       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10598       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10599       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10600       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10601
10602 # if LDBL_MANT_DIG > 100
10603       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10604       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10605       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10606       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10607       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10608       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10609
10610       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10611       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10612       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10613       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10614       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10615       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10616 #endif
10617
10618       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10619       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10620       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10621       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10622       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10623
10624       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10625       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10626       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10627       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10628       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10629
10630 # if LDBL_MANT_DIG > 100
10631       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10632       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10633       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10634       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10635       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10636       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10637       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10638       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10639       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10640       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10641       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10642       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10643 # endif
10644 #endif
10645     }
10646
10647   fesetround (save_round_mode);
10648
10649   END (llrint_towardzero);
10650 }
10651
10652 static void
10653 llrint_test_downward (void)
10654 {
10655   int save_round_mode;
10656   START (llrint_downward);
10657
10658   save_round_mode = fegetround ();
10659
10660   if (!fesetround (FE_DOWNWARD))
10661     {
10662       TEST_f_L (llrint, 0.0, 0);
10663       TEST_f_L (llrint, minus_zero, 0);
10664       TEST_f_L (llrint, 0.2L, 0);
10665       TEST_f_L (llrint, -0.2L, -1);
10666
10667       TEST_f_L (llrint, 1.4L, 1);
10668       TEST_f_L (llrint, -1.4L, -2);
10669
10670       TEST_f_L (llrint, 8388600.3L, 8388600);
10671       TEST_f_L (llrint, -8388600.3L, -8388601);
10672
10673       TEST_f_l (llrint, 1071930.0008, 1071930);
10674
10675       /* Test boundary conditions.  */
10676       /* 0x1FFFFF */
10677       TEST_f_L (llrint, 2097151.0,2097151LL);
10678       /* 0x800000 */
10679       TEST_f_L (llrint, 8388608.0, 8388608LL);
10680       /* 0x1000000 */
10681       TEST_f_L (llrint, 16777216.0, 16777216LL);
10682       /* 0x20000000000 */
10683       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10684       /* 0x40000000000 */
10685       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10686       /* 0x1000000000000 */
10687       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10688       /* 0x10000000000000 */
10689       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10690       /* 0x10000080000000 */
10691       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10692       /* 0x20000000000000 */
10693       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10694       /* 0x80000000000000 */
10695       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10696       /* 0x100000000000000 */
10697       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10698 #ifdef TEST_LDOUBLE
10699       /* The input can only be represented in long double.  */
10700       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10701       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10702       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10703       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10704       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10705
10706       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10707       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10708       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10709       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10710       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10711       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10712
10713       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10714       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370497LL);
10715       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370497LL);
10716       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10717       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10718
10719       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370496LL);
10720       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370497LL);
10721       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370498LL);
10722       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10723       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10724       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10725
10726       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10727       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10728       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10729       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10730       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10731
10732       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10733       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10734       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10735       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10736       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10737       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10738
10739       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10740       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740993LL);
10741       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740993LL);
10742       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10743       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10744
10745       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740992LL);
10746       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740993LL);
10747       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740994LL);
10748       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10749       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10750       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10751
10752       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10753       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10754       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10755       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10756       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10757
10758       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10759       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927937LL);
10760       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927937LL);
10761       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10762       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10763
10764 # if LDBL_MANT_DIG > 100
10765       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10766       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10767       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10768       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10769       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10770       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775807LL);
10771       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10772       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775807LL);
10773       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10774       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10775       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10776       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10777 # endif
10778 #endif
10779     }
10780
10781   fesetround (save_round_mode);
10782
10783   END (llrint_downward);
10784 }
10785
10786 static void
10787 llrint_test_upward (void)
10788 {
10789   int save_round_mode;
10790   START (llrint_upward);
10791
10792   save_round_mode = fegetround ();
10793
10794   if (!fesetround (FE_UPWARD))
10795     {
10796       TEST_f_L (llrint, 0.0, 0);
10797       TEST_f_L (llrint, minus_zero, 0);
10798       TEST_f_L (llrint, 0.2L, 1);
10799       TEST_f_L (llrint, -0.2L, 0);
10800
10801       TEST_f_L (llrint, 1.4L, 2);
10802       TEST_f_L (llrint, -1.4L, -1);
10803
10804       TEST_f_L (llrint, 8388600.3L, 8388601);
10805       TEST_f_L (llrint, -8388600.3L, -8388600);
10806 #ifndef TEST_FLOAT
10807       TEST_f_l (llrint, 1071930.0008, 1071931);
10808 #endif
10809       /* Test boundary conditions.  */
10810       /* 0x1FFFFF */
10811       TEST_f_L (llrint, 2097151.0,2097151LL);
10812       /* 0x800000 */
10813       TEST_f_L (llrint, 8388608.0, 8388608LL);
10814       /* 0x1000000 */
10815       TEST_f_L (llrint, 16777216.0, 16777216LL);
10816       /* 0x20000000000 */
10817       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10818       /* 0x40000000000 */
10819       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10820       /* 0x1000000000000 */
10821       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10822       /* 0x10000000000000 */
10823       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10824       /* 0x10000080000000 */
10825       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10826       /* 0x20000000000000 */
10827       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10828       /* 0x80000000000000 */
10829       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10830       /* 0x100000000000000 */
10831       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10832 #ifdef TEST_LDOUBLE
10833       /* The input can only be represented in long double.  */
10834       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10835       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370497LL);
10836       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370497LL);
10837       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10838       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10839
10840       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370496LL);
10841       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370497LL);
10842       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370498LL);
10843       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10844       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10845       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10846
10847       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10848       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10849       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10850       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10851       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10852
10853       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10854       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10855       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10856       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10857       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10858       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10859
10860       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10861       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740993LL);
10862       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740993LL);
10863       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10864       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10865
10866       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740992LL);
10867       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740993LL);
10868       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740994LL);
10869       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10870       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10871       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10872
10873       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10874       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10875       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10876       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10877       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10878
10879       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10880       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10881       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10882       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10883       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10884       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10885
10886       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10887       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927937LL);
10888       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927937LL);
10889       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10890       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10891
10892       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10893       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10894       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10895       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10896       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10897
10898 # if LDBL_MANT_DIG > 100
10899       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10900       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10901       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10902       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10903       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775807LL);
10904       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10905       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775807L);
10906       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10907       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10908       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10909       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10910       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10911 # endif
10912 #endif
10913     }
10914
10915   fesetround (save_round_mode);
10916
10917   END (llrint_upward);
10918 }
10919
10920
10921 static const struct test_f_f_data log_test_data[] =
10922   {
10923     START_DATA (log),
10924     TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
10925     TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
10926
10927     TEST_f_f (log, 1, 0),
10928
10929     TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION),
10930     TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION),
10931     TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION),
10932     TEST_f_f (log, plus_infty, plus_infty),
10933     TEST_f_f (log, qnan_value, qnan_value),
10934
10935     TEST_f_f (log, M_El, 1),
10936     TEST_f_f (log, M_1_DIV_El, -1),
10937     TEST_f_f (log, 2, M_LN2l),
10938     TEST_f_f (log, 10, M_LN10l),
10939     TEST_f_f (log, 0.75L, -0.287682072451780927439219005993827432L),
10940     END_DATA (log)
10941   };
10942
10943 static void
10944 log_test (void)
10945 {
10946   errno = 0;
10947   FUNC(log) (1);
10948   if (errno == ENOSYS)
10949     /* Function not implemented.  */
10950     return;
10951   START (log);
10952   RUN_TEST_LOOP_f_f (log, log_test_data, );
10953   END (log);
10954 }
10955
10956
10957 static const struct test_f_f_data log10_test_data[] =
10958   {
10959     START_DATA (log10),
10960     TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
10961     TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
10962
10963     TEST_f_f (log10, 1, 0),
10964
10965     /* log10 (x) == qNaN plus invalid exception if x < 0.  */
10966     TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION),
10967     TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION),
10968     TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION),
10969
10970     TEST_f_f (log10, plus_infty, plus_infty),
10971     TEST_f_f (log10, qnan_value, qnan_value),
10972
10973     TEST_f_f (log10, 0.1L, -1),
10974     TEST_f_f (log10, 10.0, 1),
10975     TEST_f_f (log10, 100.0, 2),
10976     TEST_f_f (log10, 10000.0, 4),
10977     TEST_f_f (log10, M_El, M_LOG10El),
10978     TEST_f_f (log10, 0.75L, -0.124938736608299953132449886193870744L),
10979     END_DATA (log10)
10980   };
10981
10982 static void
10983 log10_test (void)
10984 {
10985   errno = 0;
10986   FUNC(log10) (1);
10987   if (errno == ENOSYS)
10988     /* Function not implemented.  */
10989     return;
10990
10991   START (log10);
10992   RUN_TEST_LOOP_f_f (log10, log10_test_data, );
10993   END (log10);
10994 }
10995
10996
10997 static const struct test_f_f_data log1p_test_data[] =
10998   {
10999     START_DATA (log1p),
11000     TEST_f_f (log1p, 0, 0),
11001     TEST_f_f (log1p, minus_zero, minus_zero),
11002
11003     TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11004     TEST_f_f (log1p, -2, qnan_value, INVALID_EXCEPTION),
11005     TEST_f_f (log1p, -max_value, qnan_value, INVALID_EXCEPTION),
11006     TEST_f_f (log1p, minus_infty, qnan_value, INVALID_EXCEPTION),
11007
11008     TEST_f_f (log1p, plus_infty, plus_infty),
11009     TEST_f_f (log1p, qnan_value, qnan_value),
11010
11011     TEST_f_f (log1p, M_El - 1.0, 1),
11012
11013     TEST_f_f (log1p, -0.25L, -0.287682072451780927439219005993827432L),
11014     TEST_f_f (log1p, -0.875, -2.07944154167983592825169636437452970L),
11015     END_DATA (log1p)
11016   };
11017
11018 static void
11019 log1p_test (void)
11020 {
11021   errno = 0;
11022   FUNC(log1p) (0);
11023   if (errno == ENOSYS)
11024     /* Function not implemented.  */
11025     return;
11026
11027   START (log1p);
11028   RUN_TEST_LOOP_f_f (log1p, log1p_test_data, );
11029   END (log1p);
11030 }
11031
11032
11033 static const struct test_f_f_data log2_test_data[] =
11034   {
11035     START_DATA (log2),
11036     TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11037     TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11038
11039     TEST_f_f (log2, 1, 0),
11040
11041     TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION),
11042     TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION),
11043     TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION),
11044
11045     TEST_f_f (log2, plus_infty, plus_infty),
11046     TEST_f_f (log2, qnan_value, qnan_value),
11047
11048     TEST_f_f (log2, M_El, M_LOG2El),
11049     TEST_f_f (log2, 2.0, 1),
11050     TEST_f_f (log2, 16.0, 4),
11051     TEST_f_f (log2, 256.0, 8),
11052     TEST_f_f (log2, 0.75L, -.415037499278843818546261056052183492L),
11053     END_DATA (log2)
11054   };
11055
11056 static void
11057 log2_test (void)
11058 {
11059   errno = 0;
11060   FUNC(log2) (1);
11061   if (errno == ENOSYS)
11062     /* Function not implemented.  */
11063     return;
11064
11065   START (log2);
11066   RUN_TEST_LOOP_f_f (log2, log2_test_data, );
11067   END (log2);
11068 }
11069
11070
11071 static const struct test_f_f_data logb_test_data[] =
11072   {
11073     START_DATA (logb),
11074     TEST_f_f (logb, plus_infty, plus_infty),
11075     TEST_f_f (logb, minus_infty, plus_infty),
11076
11077     TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11078
11079     TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11080     TEST_f_f (logb, qnan_value, qnan_value),
11081
11082     TEST_f_f (logb, 1, 0),
11083     TEST_f_f (logb, M_El, 1),
11084     TEST_f_f (logb, 1024, 10),
11085     TEST_f_f (logb, -2000, 10),
11086
11087     TEST_f_f (logb, 0x0.1p-127, -131),
11088     TEST_f_f (logb, 0x0.01p-127, -135),
11089     TEST_f_f (logb, 0x0.011p-127, -135),
11090 #ifndef TEST_FLOAT
11091     TEST_f_f (logb, 0x0.8p-1022, -1023),
11092     TEST_f_f (logb, 0x0.1p-1022, -1026),
11093     TEST_f_f (logb, 0x0.00111p-1022, -1034),
11094     TEST_f_f (logb, 0x0.00001p-1022, -1042),
11095     TEST_f_f (logb, 0x0.000011p-1022, -1042),
11096     TEST_f_f (logb, 0x0.0000000000001p-1022, -1074),
11097 #endif
11098 #if defined TEST_LDOUBLE && LDBL_MIN_EXP - LDBL_MANT_DIG <= -16400
11099     TEST_f_f (logb, 0x1p-16400L, -16400),
11100     TEST_f_f (logb, 0x.00000000001p-16382L, -16426),
11101 #endif
11102     END_DATA (logb)
11103   };
11104
11105 static void
11106 logb_test (void)
11107 {
11108   START (logb);
11109   RUN_TEST_LOOP_f_f (logb, logb_test_data, );
11110   END (logb);
11111 }
11112
11113 static const struct test_f_f_data logb_downward_test_data[] =
11114   {
11115     START_DATA (logb_downward),
11116     /* IEEE 754-2008 says (section 5.3.3) that "logB(1) is +0.".  Libm
11117        should not return -0 from logb in any rounding mode.  PowerPC32 has
11118        failed with this test for power4 logb (and logbl on all PowerPC
11119        platforms) in the past due to instruction selection.  GCC PR 52775
11120        provides the availability of the fcfid insn in 32-bit mode which
11121        eliminates the use of fsub in this instance and prevents the negative
11122        signed 0.0.  */
11123
11124     /* BZ #887  */
11125     TEST_f_f (logb, 1.000e+0, plus_zero),
11126     END_DATA (logb_downward)
11127   };
11128
11129 static void
11130 logb_test_downward (void)
11131 {
11132   errno = 0;
11133
11134   FUNC(logb) (0);
11135   if (errno == ENOSYS)
11136     /* Function not implemented.  */
11137     return;
11138
11139   START (logb_downward);
11140   RUN_TEST_LOOP_f_f (logb, logb_downward_test_data, FE_DOWNWARD);
11141   END (logb_downward);
11142 }
11143
11144 static void
11145 lround_test (void)
11146 {
11147   /* TODO: missing +/-Inf as well as qNaN tests.  */
11148
11149   START (lround);
11150
11151   TEST_f_l (lround, 0, 0);
11152   TEST_f_l (lround, minus_zero, 0);
11153   TEST_f_l (lround, 0.2L, 0.0);
11154   TEST_f_l (lround, -0.2L, 0);
11155   TEST_f_l (lround, 0.5, 1);
11156   TEST_f_l (lround, -0.5, -1);
11157   TEST_f_l (lround, 0.8L, 1);
11158   TEST_f_l (lround, -0.8L, -1);
11159   TEST_f_l (lround, 1.5, 2);
11160   TEST_f_l (lround, -1.5, -2);
11161   TEST_f_l (lround, 22514.5, 22515);
11162   TEST_f_l (lround, -22514.5, -22515);
11163   TEST_f_l (lround, 1071930.0008, 1071930);
11164 #ifndef TEST_FLOAT
11165   TEST_f_l (lround, 1073741824.01, 1073741824);
11166 # if LONG_MAX > 281474976710656
11167   TEST_f_l (lround, 281474976710656.025, 281474976710656);
11168   TEST_f_l (lround, 18014398509481974, 18014398509481974);
11169 # endif
11170   TEST_f_l (lround, 2097152.5, 2097153);
11171   TEST_f_l (lround, -2097152.5, -2097153);
11172   /* nextafter(0.5,-1)  */
11173   TEST_f_l (lround, 0x1.fffffffffffffp-2, 0);
11174   /* nextafter(-0.5,1)  */
11175   TEST_f_l (lround, -0x1.fffffffffffffp-2, 0);
11176 #else
11177   /* nextafter(0.5,-1)  */
11178   TEST_f_l (lround, 0x1.fffffp-2, 0);
11179   /* nextafter(-0.5,1)  */
11180   TEST_f_l (lround, -0x1.fffffp-2, 0);
11181   TEST_f_l (lround, 0x1.fffffep+23, 16777215);
11182   TEST_f_l (lround, -0x1.fffffep+23, -16777215);
11183 #endif
11184   END (lround);
11185 }
11186
11187
11188 static void
11189 llround_test (void)
11190 {
11191   /* TODO: missing +/-Inf as well as qNaN tests.  */
11192
11193   START (llround);
11194
11195   TEST_f_L (llround, 0, 0);
11196   TEST_f_L (llround, minus_zero, 0);
11197   TEST_f_L (llround, 0.2L, 0.0);
11198   TEST_f_L (llround, -0.2L, 0);
11199   TEST_f_L (llround, 0.5, 1);
11200   TEST_f_L (llround, -0.5, -1);
11201   TEST_f_L (llround, 0.8L, 1);
11202   TEST_f_L (llround, -0.8L, -1);
11203   TEST_f_L (llround, 1.5, 2);
11204   TEST_f_L (llround, -1.5, -2);
11205   TEST_f_L (llround, 22514.5, 22515);
11206   TEST_f_L (llround, -22514.5, -22515);
11207   TEST_f_l (llround, 1071930.0008, 1071930);
11208 #ifndef TEST_FLOAT
11209   TEST_f_L (llround, 2097152.5, 2097153);
11210   TEST_f_L (llround, -2097152.5, -2097153);
11211   TEST_f_L (llround, 34359738368.5, 34359738369ll);
11212   TEST_f_L (llround, -34359738368.5, -34359738369ll);
11213   TEST_f_L (llround, -3.65309740835E17, -365309740835000000LL);
11214 #endif
11215
11216   /* Test boundary conditions.  */
11217   /* 0x1FFFFF */
11218   TEST_f_L (llround, 2097151.0, 2097151LL);
11219   /* 0x800000 */
11220   TEST_f_L (llround, 8388608.0, 8388608LL);
11221   /* 0x1000000 */
11222   TEST_f_L (llround, 16777216.0, 16777216LL);
11223   /* 0x20000000000 */
11224   TEST_f_L (llround, 2199023255552.0, 2199023255552LL);
11225   /* 0x40000000000 */
11226   TEST_f_L (llround, 4398046511104.0, 4398046511104LL);
11227   /* 0x1000000000000 */
11228   TEST_f_L (llround, 281474976710656.0, 281474976710656LL);
11229   /* 0x10000000000000 */
11230   TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL);
11231   /* 0x10000080000000 */
11232   TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL);
11233   /* 0x20000000000000 */
11234   TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL);
11235   /* 0x80000000000000 */
11236   TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL);
11237   /* 0x100000000000000 */
11238   TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL);
11239
11240 #ifndef TEST_FLOAT
11241   /* 0x100000000 */
11242   TEST_f_L (llround, 4294967295.5, 4294967296LL);
11243   /* 0x200000000 */
11244   TEST_f_L (llround, 8589934591.5, 8589934592LL);
11245
11246   /* nextafter(0.5,-1)  */
11247   TEST_f_L (llround, 0x1.fffffffffffffp-2, 0);
11248   /* nextafter(-0.5,1)  */
11249   TEST_f_L (llround, -0x1.fffffffffffffp-2, 0);
11250   /* On PowerPC an exponent of '52' is the largest incrementally
11251    * representable sequence of whole-numbers in the 'double' range.  We test
11252    * lround to make sure that a guard bit set during the lround operation
11253    * hasn't forced an erroneous shift giving us an incorrect result.  The odd
11254    * numbers between +-(2^52+1 and 2^53-1) are affected since they have the
11255    * rightmost bit set.  */
11256   /* +-(2^52+1)  */
11257   TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL);
11258   TEST_f_L (llround, -0x1.0000000000001p+52,-4503599627370497LL);
11259   /* +-(2^53-1): Input is the last (positive and negative) incrementally
11260    * representable whole-number in the 'double' range that might round
11261    * erroneously.  */
11262   TEST_f_L (llround, 0x1.fffffffffffffp+52, 9007199254740991LL);
11263   TEST_f_L (llround, -0x1.fffffffffffffp+52, -9007199254740991LL);
11264 #else
11265   /* nextafter(0.5,-1)  */
11266   TEST_f_L (llround, 0x1.fffffep-2, 0);
11267   /* nextafter(-0.5,1)  */
11268   TEST_f_L (llround, -0x1.fffffep-2, 0);
11269   /* As above, on PowerPC an exponent of '23' is the largest incrementally
11270    * representable sequence of whole-numbers in the 'float' range.
11271    * Likewise, numbers between +-(2^23+1 and 2^24-1) are affected.  */
11272   TEST_f_L (llround, 0x1.000002p+23,8388609);
11273   TEST_f_L (llround, -0x1.000002p+23,-8388609);
11274   TEST_f_L (llround, 0x1.fffffep+23, 16777215);
11275   TEST_f_L (llround, -0x1.fffffep+23, -16777215);
11276 #endif
11277
11278
11279 #ifdef TEST_LDOUBLE
11280   /* The input can only be represented in long double.  */
11281   TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL);
11282   TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL);
11283   TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL);
11284   TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL);
11285   TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL);
11286
11287 # if LDBL_MANT_DIG > 100
11288   TEST_f_L (llround, 4503599627370495.4999999999999L, 4503599627370495LL);
11289   TEST_f_L (llround, 4503599627370496.4999999999999L, 4503599627370496LL);
11290   TEST_f_L (llround, 4503599627370497.4999999999999L, 4503599627370497LL);
11291   TEST_f_L (llround, 4503599627370494.5000000000001L, 4503599627370495LL);
11292   TEST_f_L (llround, 4503599627370495.5000000000001L, 4503599627370496LL);
11293   TEST_f_L (llround, 4503599627370496.5000000000001L, 4503599627370497LL);
11294
11295   TEST_f_L (llround, -4503599627370495.4999999999999L, -4503599627370495LL);
11296   TEST_f_L (llround, -4503599627370496.4999999999999L, -4503599627370496LL);
11297   TEST_f_L (llround, -4503599627370497.4999999999999L, -4503599627370497LL);
11298   TEST_f_L (llround, -4503599627370494.5000000000001L, -4503599627370495LL);
11299   TEST_f_L (llround, -4503599627370495.5000000000001L, -4503599627370496LL);
11300   TEST_f_L (llround, -4503599627370496.5000000000001L, -4503599627370497LL);
11301 # endif
11302
11303   TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL);
11304   TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL);
11305   TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL);
11306   TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL);
11307   TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL);
11308
11309   TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL);
11310   TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL);
11311   TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL);
11312   TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL);
11313   TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL);
11314
11315 # if LDBL_MANT_DIG > 100
11316   TEST_f_L (llround, 9007199254740991.4999999999999L, 9007199254740991LL);
11317   TEST_f_L (llround, 9007199254740992.4999999999999L, 9007199254740992LL);
11318   TEST_f_L (llround, 9007199254740993.4999999999999L, 9007199254740993LL);
11319   TEST_f_L (llround, 9007199254740991.5000000000001L, 9007199254740992LL);
11320   TEST_f_L (llround, 9007199254740992.5000000000001L, 9007199254740993LL);
11321   TEST_f_L (llround, 9007199254740993.5000000000001L, 9007199254740994LL);
11322
11323   TEST_f_L (llround, -9007199254740991.4999999999999L, -9007199254740991LL);
11324   TEST_f_L (llround, -9007199254740992.4999999999999L, -9007199254740992LL);
11325   TEST_f_L (llround, -9007199254740993.4999999999999L, -9007199254740993LL);
11326   TEST_f_L (llround, -9007199254740991.5000000000001L, -9007199254740992LL);
11327   TEST_f_L (llround, -9007199254740992.5000000000001L, -9007199254740993LL);
11328   TEST_f_L (llround, -9007199254740993.5000000000001L, -9007199254740994LL);
11329 # endif
11330
11331   TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL);
11332   TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL);
11333   TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL);
11334   TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL);
11335   TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL);
11336
11337   TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL);
11338   TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL);
11339   TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL);
11340   TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL);
11341   TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL);
11342
11343   TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL);
11344   TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL);
11345   TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL);
11346   TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL);
11347   TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL);
11348
11349   TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL);
11350   TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL);
11351   TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL);
11352   TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL);
11353   TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL);
11354   TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL);
11355 #endif
11356
11357   END (llround);
11358 }
11359
11360 static void
11361 modf_test (void)
11362 {
11363   FLOAT x;
11364
11365   START (modf);
11366
11367   TEST_fF_f1 (modf, plus_infty, 0, plus_infty);
11368   TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty);
11369   TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value);
11370   TEST_fF_f1 (modf, 0, 0, 0);
11371   TEST_fF_f1 (modf, 1.5, 0.5, 1);
11372   TEST_fF_f1 (modf, 2.5, 0.5, 2);
11373   TEST_fF_f1 (modf, -2.5, -0.5, -2);
11374   TEST_fF_f1 (modf, 20, 0, 20);
11375   TEST_fF_f1 (modf, 21, 0, 21);
11376   TEST_fF_f1 (modf, 89.5, 0.5, 89);
11377
11378   END (modf);
11379 }
11380
11381
11382 static const struct test_f_f_data nearbyint_test_data[] =
11383   {
11384     START_DATA (nearbyint),
11385
11386     TEST_f_f (nearbyint, 0.0, 0.0),
11387     TEST_f_f (nearbyint, minus_zero, minus_zero),
11388     TEST_f_f (nearbyint, plus_infty, plus_infty),
11389     TEST_f_f (nearbyint, minus_infty, minus_infty),
11390     TEST_f_f (nearbyint, qnan_value, qnan_value),
11391
11392     /* Subnormal values */
11393     TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307),
11394     TEST_f_f (nearbyint, -4.45015e-308, minus_zero),
11395
11396     /* Default rounding mode is round to nearest.  */
11397     TEST_f_f (nearbyint, 0.5, 0.0),
11398     TEST_f_f (nearbyint, 1.5, 2.0),
11399     TEST_f_f (nearbyint, -0.5, minus_zero),
11400     TEST_f_f (nearbyint, -1.5, -2.0),
11401
11402     TEST_f_f (nearbyint, 262144.75, 262145.0),
11403     TEST_f_f (nearbyint, 262142.75, 262143.0),
11404     TEST_f_f (nearbyint, 524286.75, 524287.0),
11405     TEST_f_f (nearbyint, 524288.75, 524289.0),
11406
11407     TEST_f_f (nearbyint, 1048576.75, 1048577.0),
11408     TEST_f_f (nearbyint, 2097152.75, 2097153.0),
11409     TEST_f_f (nearbyint, 2492472.75, 2492473.0),
11410     TEST_f_f (nearbyint, 2886220.75, 2886221.0),
11411     TEST_f_f (nearbyint, 3058792.75, 3058793.0),
11412     TEST_f_f (nearbyint, -1048576.75, -1048577.0),
11413     TEST_f_f (nearbyint, -2097152.75, -2097153.0),
11414     TEST_f_f (nearbyint, -2492472.75, -2492473.0),
11415     TEST_f_f (nearbyint, -2886220.75, -2886221.0),
11416     TEST_f_f (nearbyint, -3058792.75, -3058793.0),
11417 #ifndef TEST_FLOAT
11418     TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0),
11419     TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0),
11420     TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0),
11421     TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0),
11422     TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0),
11423     TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0),
11424     TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0),
11425     TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0),
11426     TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0),
11427     TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0),
11428 #endif
11429
11430     END_DATA (nearbyint)
11431   };
11432
11433 static void
11434 nearbyint_test (void)
11435 {
11436   START (nearbyint);
11437   RUN_TEST_LOOP_f_f (nearbyint, nearbyint_test_data, );
11438   END (nearbyint);
11439 }
11440
11441 static const struct test_ff_f_data nextafter_test_data[] =
11442   {
11443     START_DATA (nextafter),
11444
11445     TEST_ff_f (nextafter, 0, 0, 0),
11446     TEST_ff_f (nextafter, minus_zero, 0, 0),
11447     TEST_ff_f (nextafter, 0, minus_zero, minus_zero),
11448     TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero),
11449
11450     TEST_ff_f (nextafter, 9, 9, 9),
11451     TEST_ff_f (nextafter, -9, -9, -9),
11452     TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty),
11453     TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty),
11454
11455     TEST_ff_f (nextafter, qnan_value, 1.1L, qnan_value),
11456     TEST_ff_f (nextafter, 1.1L, qnan_value, qnan_value),
11457     TEST_ff_f (nextafter, qnan_value, qnan_value, qnan_value),
11458
11459     TEST_ff_f (nextafter, max_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
11460     TEST_ff_f (nextafter, -max_value, minus_infty, minus_infty, OVERFLOW_EXCEPTION),
11461
11462 #ifdef TEST_LDOUBLE
11463     // XXX Enable once gcc is fixed.
11464     //TEST_ff_f (nextafter, 0x0.00000040000000000000p-16385L, -0.1L, 0x0.0000003ffffffff00000p-16385L),
11465 #endif
11466
11467     /* XXX We need the hexadecimal FP number representation here for further
11468        tests.  */
11469     END_DATA (nextafter)
11470   };
11471
11472 static void
11473 nextafter_test (void)
11474 {
11475
11476   START (nextafter);
11477   RUN_TEST_LOOP_ff_f (nextafter, nextafter_test_data, );
11478   END (nextafter);
11479 }
11480
11481
11482 static const struct test_ff_f_data_nexttoward nexttoward_test_data[] =
11483   {
11484     START_DATA (nexttoward),
11485     TEST_ff_f (nexttoward, 0, 0, 0),
11486     TEST_ff_f (nexttoward, minus_zero, 0, 0),
11487     TEST_ff_f (nexttoward, 0, minus_zero, minus_zero),
11488     TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero),
11489
11490     TEST_ff_f (nexttoward, 9, 9, 9),
11491     TEST_ff_f (nexttoward, -9, -9, -9),
11492     TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty),
11493     TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty),
11494
11495     TEST_ff_f (nexttoward, qnan_value, 1.1L, qnan_value),
11496     TEST_ff_f (nexttoward, 1.1L, qnan_value, qnan_value),
11497     TEST_ff_f (nexttoward, qnan_value, qnan_value, qnan_value),
11498
11499 #ifdef TEST_FLOAT
11500     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.000002p0),
11501     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.000002p0),
11502     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.000002p0),
11503     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.ffffffp0),
11504     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.ffffffp0),
11505     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.ffffffp0),
11506     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.000002p0),
11507     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.000002p0),
11508     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.000002p0),
11509     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.ffffffp0),
11510     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.ffffffp0),
11511     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.ffffffp0),
11512     TEST_ff_f (nexttoward, -0x1.3p-145, -0xap-148L, -0x1.4p-145, UNDERFLOW_EXCEPTION),
11513 # if LDBL_MANT_DIG >= 64
11514     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.000002p0),
11515     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.ffffffp0),
11516     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.000002p0),
11517     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.ffffffp0),
11518 # endif
11519 # if LDBL_MANT_DIG >= 106
11520     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.000002p0),
11521     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.ffffffp0),
11522     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.000002p0),
11523     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.ffffffp0),
11524 # endif
11525 # if LDBL_MANT_DIG >= 113
11526     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.000002p0),
11527     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffp0),
11528     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.000002p0),
11529     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffp0),
11530 # endif
11531 #endif
11532 #ifdef TEST_DOUBLE
11533     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.0000000000001p0),
11534     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.0000000000001p0),
11535     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.0000000000001p0),
11536     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.fffffffffffff8p0),
11537     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.fffffffffffff8p0),
11538     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0),
11539     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.0000000000001p0),
11540     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.0000000000001p0),
11541     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.0000000000001p0),
11542     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.fffffffffffff8p0),
11543     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.fffffffffffff8p0),
11544     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0),
11545     TEST_ff_f (nexttoward, -1.0, -0x8.00346dc5d6388p-3L, -0x1.0000000000001p0),
11546     TEST_ff_f (nexttoward, 0x1p-1074, 0x1p-1073L, 0x1p-1073, UNDERFLOW_EXCEPTION),
11547 # if LDBL_MANT_DIG >= 64
11548     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.0000000000001p0),
11549     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffff8p0),
11550     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.0000000000001p0),
11551     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffff8p0),
11552 # endif
11553 # if LDBL_MANT_DIG >= 106
11554     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.0000000000001p0),
11555     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.fffffffffffff8p0),
11556     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.0000000000001p0),
11557     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.fffffffffffff8p0),
11558 # endif
11559 # if LDBL_MANT_DIG >= 113
11560     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.0000000000001p0),
11561     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.fffffffffffff8p0),
11562     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.0000000000001p0),
11563     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.fffffffffffff8p0),
11564 # endif
11565 #endif
11566     END_DATA (nexttoward)
11567   };
11568
11569 static void
11570 nexttoward_test (void)
11571 {
11572   START (nexttoward);
11573   RUN_TEST_LOOP_ff_f (nexttoward, nexttoward_test_data, );
11574   END (nexttoward);
11575 }
11576
11577
11578 static const struct test_ff_f_data pow_test_data[] =
11579   {
11580     START_DATA (pow),
11581     TEST_ff_f (pow, 0, 0, 1),
11582     TEST_ff_f (pow, 0, minus_zero, 1),
11583     TEST_ff_f (pow, minus_zero, 0, 1),
11584     TEST_ff_f (pow, minus_zero, minus_zero, 1),
11585
11586     TEST_ff_f (pow, 10, 0, 1),
11587     TEST_ff_f (pow, 10, minus_zero, 1),
11588     TEST_ff_f (pow, -10, 0, 1),
11589     TEST_ff_f (pow, -10, minus_zero, 1),
11590
11591     TEST_ff_f (pow, qnan_value, 0, 1),
11592     TEST_ff_f (pow, qnan_value, minus_zero, 1),
11593
11594 #ifndef TEST_INLINE
11595     TEST_ff_f (pow, 1.1L, plus_infty, plus_infty),
11596     TEST_ff_f (pow, plus_infty, plus_infty, plus_infty),
11597     TEST_ff_f (pow, -1.1L, plus_infty, plus_infty),
11598     TEST_ff_f (pow, minus_infty, plus_infty, plus_infty),
11599
11600     TEST_ff_f (pow, 0.9L, plus_infty, 0),
11601     TEST_ff_f (pow, 1e-7L, plus_infty, 0),
11602     TEST_ff_f (pow, -0.9L, plus_infty, 0),
11603     TEST_ff_f (pow, -1e-7L, plus_infty, 0),
11604
11605     TEST_ff_f (pow, 1.1L, minus_infty, 0),
11606     TEST_ff_f (pow, plus_infty, minus_infty, 0),
11607     TEST_ff_f (pow, -1.1L, minus_infty, 0),
11608     TEST_ff_f (pow, minus_infty, minus_infty, 0),
11609
11610     TEST_ff_f (pow, 0.9L, minus_infty, plus_infty),
11611     TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty),
11612     TEST_ff_f (pow, -0.9L, minus_infty, plus_infty),
11613     TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty),
11614
11615     TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty),
11616     TEST_ff_f (pow, plus_infty, 1, plus_infty),
11617     TEST_ff_f (pow, plus_infty, 1e7L, plus_infty),
11618     TEST_ff_f (pow, plus_infty, min_subnorm_value, plus_infty),
11619
11620     TEST_ff_f (pow, plus_infty, -1e-7L, 0),
11621     TEST_ff_f (pow, plus_infty, -1, 0),
11622     TEST_ff_f (pow, plus_infty, -1e7L, 0),
11623     TEST_ff_f (pow, plus_infty, -min_subnorm_value, 0),
11624
11625     TEST_ff_f (pow, minus_infty, 1, minus_infty),
11626     TEST_ff_f (pow, minus_infty, 11, minus_infty),
11627     TEST_ff_f (pow, minus_infty, 1001, minus_infty),
11628
11629     TEST_ff_f (pow, minus_infty, 2, plus_infty),
11630     TEST_ff_f (pow, minus_infty, 12, plus_infty),
11631     TEST_ff_f (pow, minus_infty, 1002, plus_infty),
11632     TEST_ff_f (pow, minus_infty, 0.1L, plus_infty),
11633     TEST_ff_f (pow, minus_infty, 1.1L, plus_infty),
11634     TEST_ff_f (pow, minus_infty, 11.1L, plus_infty),
11635     TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty),
11636     TEST_ff_f (pow, minus_infty, min_subnorm_value, plus_infty),
11637
11638     TEST_ff_f (pow, minus_infty, -1, minus_zero),
11639     TEST_ff_f (pow, minus_infty, -11, minus_zero),
11640     TEST_ff_f (pow, minus_infty, -1001, minus_zero),
11641
11642     TEST_ff_f (pow, minus_infty, -2, 0),
11643     TEST_ff_f (pow, minus_infty, -12, 0),
11644     TEST_ff_f (pow, minus_infty, -1002, 0),
11645     TEST_ff_f (pow, minus_infty, -0.1L, 0),
11646     TEST_ff_f (pow, minus_infty, -1.1L, 0),
11647     TEST_ff_f (pow, minus_infty, -11.1L, 0),
11648     TEST_ff_f (pow, minus_infty, -1001.1L, 0),
11649     TEST_ff_f (pow, minus_infty, -min_subnorm_value, 0),
11650 #endif
11651
11652     TEST_ff_f (pow, qnan_value, qnan_value, qnan_value),
11653     TEST_ff_f (pow, 0, qnan_value, qnan_value),
11654     TEST_ff_f (pow, 1, qnan_value, 1),
11655     TEST_ff_f (pow, -1, qnan_value, qnan_value),
11656     TEST_ff_f (pow, qnan_value, 1, qnan_value),
11657     TEST_ff_f (pow, qnan_value, -1, qnan_value),
11658
11659     /* pow (x, qNaN) == qNaN.  */
11660     TEST_ff_f (pow, 3.0, qnan_value, qnan_value),
11661     TEST_ff_f (pow, minus_zero, qnan_value, qnan_value),
11662     TEST_ff_f (pow, plus_infty, qnan_value, qnan_value),
11663     TEST_ff_f (pow, -3.0, qnan_value, qnan_value),
11664     TEST_ff_f (pow, minus_infty, qnan_value, qnan_value),
11665
11666     TEST_ff_f (pow, qnan_value, 3.0, qnan_value),
11667     TEST_ff_f (pow, qnan_value, -3.0, qnan_value),
11668     TEST_ff_f (pow, qnan_value, plus_infty, qnan_value),
11669     TEST_ff_f (pow, qnan_value, minus_infty, qnan_value),
11670     TEST_ff_f (pow, qnan_value, 2.5, qnan_value),
11671     TEST_ff_f (pow, qnan_value, -2.5, qnan_value),
11672     TEST_ff_f (pow, qnan_value, min_subnorm_value, qnan_value),
11673     TEST_ff_f (pow, qnan_value, -min_subnorm_value, qnan_value),
11674
11675     TEST_ff_f (pow, 1, plus_infty, 1),
11676     TEST_ff_f (pow, -1, plus_infty, 1),
11677     TEST_ff_f (pow, 1, minus_infty, 1),
11678     TEST_ff_f (pow, -1, minus_infty, 1),
11679     TEST_ff_f (pow, 1, 1, 1),
11680     TEST_ff_f (pow, 1, -1, 1),
11681     TEST_ff_f (pow, 1, 1.25, 1),
11682     TEST_ff_f (pow, 1, -1.25, 1),
11683     TEST_ff_f (pow, 1, 0x1p62L, 1),
11684     TEST_ff_f (pow, 1, 0x1p63L, 1),
11685     TEST_ff_f (pow, 1, 0x1p64L, 1),
11686     TEST_ff_f (pow, 1, 0x1p72L, 1),
11687     TEST_ff_f (pow, 1, min_subnorm_value, 1),
11688     TEST_ff_f (pow, 1, -min_subnorm_value, 1),
11689
11690     /* pow (x, +-0) == 1.  */
11691     TEST_ff_f (pow, plus_infty, 0, 1),
11692     TEST_ff_f (pow, plus_infty, minus_zero, 1),
11693     TEST_ff_f (pow, minus_infty, 0, 1),
11694     TEST_ff_f (pow, minus_infty, minus_zero, 1),
11695     TEST_ff_f (pow, 32.75L, 0, 1),
11696     TEST_ff_f (pow, 32.75L, minus_zero, 1),
11697     TEST_ff_f (pow, -32.75L, 0, 1),
11698     TEST_ff_f (pow, -32.75L, minus_zero, 1),
11699     TEST_ff_f (pow, 0x1p72L, 0, 1),
11700     TEST_ff_f (pow, 0x1p72L, minus_zero, 1),
11701     TEST_ff_f (pow, 0x1p-72L, 0, 1),
11702     TEST_ff_f (pow, 0x1p-72L, minus_zero, 1),
11703
11704     TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11705     TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11706     TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11707     TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11708     TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11709     TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11710     TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11711     TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11712
11713     TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11714     TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11715     TEST_ff_f (pow, 0, -0xffffff, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11716 #ifndef TEST_FLOAT
11717     TEST_ff_f (pow, 0, -0x1.fffffffffffffp+52L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11718 #endif
11719 #ifdef TEST_LDOUBLE
11720 # if LDBL_MANT_DIG >= 64
11721     TEST_ff_f (pow, 0, -0x1.fffffffffffffffep+63L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11722 # endif
11723 # if LDBL_MANT_DIG >= 106
11724     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffff8p+105L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11725 # endif
11726 # if LDBL_MANT_DIG >= 113
11727     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffffffp+112L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11728 # endif
11729 #endif
11730     TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11731     TEST_ff_f (pow, minus_zero, -11L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11732     TEST_ff_f (pow, minus_zero, -0xffffff, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11733     TEST_ff_f (pow, minus_zero, -0x1fffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11734 #ifndef TEST_FLOAT
11735     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+52L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11736     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+53L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11737 #endif
11738 #ifdef TEST_LDOUBLE
11739 # if LDBL_MANT_DIG >= 64
11740     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+63L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11741     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+64L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11742 # endif
11743 # if LDBL_MANT_DIG >= 106
11744     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11745     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11746 # endif
11747 # if LDBL_MANT_DIG >= 113
11748     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11749     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11750 # endif
11751 #endif
11752
11753     TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11754     TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11755     TEST_ff_f (pow, 0, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11756     TEST_ff_f (pow, 0, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11757     TEST_ff_f (pow, 0, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11758     TEST_ff_f (pow, 0, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11759     TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11760     TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11761     TEST_ff_f (pow, minus_zero, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11762     TEST_ff_f (pow, minus_zero, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11763     TEST_ff_f (pow, minus_zero, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11764     TEST_ff_f (pow, minus_zero, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11765
11766     TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty, OVERFLOW_EXCEPTION),
11767     TEST_ff_f (pow, 10, -0x1p72L, 0, UNDERFLOW_EXCEPTION),
11768     TEST_ff_f (pow, max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
11769     TEST_ff_f (pow, 10, -max_value, 0, UNDERFLOW_EXCEPTION),
11770
11771     TEST_ff_f (pow, 0, 1, 0),
11772     TEST_ff_f (pow, 0, 11, 0),
11773
11774     TEST_ff_f (pow, minus_zero, 1, minus_zero),
11775     TEST_ff_f (pow, minus_zero, 11, minus_zero),
11776
11777     TEST_ff_f (pow, 0, 2, 0),
11778     TEST_ff_f (pow, 0, 11.1L, 0),
11779
11780     TEST_ff_f (pow, minus_zero, 2, 0),
11781     TEST_ff_f (pow, minus_zero, 11.1L, 0),
11782     TEST_ff_f (pow, 0, plus_infty, 0),
11783     TEST_ff_f (pow, minus_zero, plus_infty, 0),
11784     TEST_ff_f (pow, 0, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11785     TEST_ff_f (pow, minus_zero, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11786
11787 #ifndef TEST_INLINE
11788     /* pow (x, +inf) == +inf for |x| > 1.  */
11789     TEST_ff_f (pow, 1.5, plus_infty, plus_infty),
11790
11791     /* pow (x, +inf) == +0 for |x| < 1.  */
11792     TEST_ff_f (pow, 0.5, plus_infty, 0.0),
11793
11794     /* pow (x, -inf) == +0 for |x| > 1.  */
11795     TEST_ff_f (pow, 1.5, minus_infty, 0.0),
11796
11797     /* pow (x, -inf) == +inf for |x| < 1.  */
11798     TEST_ff_f (pow, 0.5, minus_infty, plus_infty),
11799 #endif
11800
11801     /* pow (+inf, y) == +inf for y > 0.  */
11802     TEST_ff_f (pow, plus_infty, 2, plus_infty),
11803     TEST_ff_f (pow, plus_infty, 0xffffff, plus_infty),
11804 #ifndef TEST_FLOAT
11805     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffp+52L, plus_infty),
11806 #endif
11807 #ifdef TEST_LDOUBLE
11808 # if LDBL_MANT_DIG >= 64
11809     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffffep+63L, plus_infty),
11810 # endif
11811 # if LDBL_MANT_DIG >= 106
11812     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, plus_infty),
11813 # endif
11814 # if LDBL_MANT_DIG >= 113
11815     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, plus_infty),
11816 # endif
11817 #endif
11818     TEST_ff_f (pow, plus_infty, 0x1p24, plus_infty),
11819     TEST_ff_f (pow, plus_infty, 0x1p127, plus_infty),
11820     TEST_ff_f (pow, plus_infty, max_value, plus_infty),
11821
11822     /* pow (+inf, y) == +0 for y < 0.  */
11823     TEST_ff_f (pow, plus_infty, -1, 0.0),
11824     TEST_ff_f (pow, plus_infty, -0xffffff, 0.0),
11825 #ifndef TEST_FLOAT
11826     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffp+52L, 0.0),
11827 #endif
11828 #ifdef TEST_LDOUBLE
11829 # if LDBL_MANT_DIG >= 64
11830     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffffep+63L, 0.0),
11831 # endif
11832 # if LDBL_MANT_DIG >= 106
11833     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
11834 # endif
11835 # if LDBL_MANT_DIG >= 113
11836     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
11837 # endif
11838 #endif
11839     TEST_ff_f (pow, plus_infty, -0x1p24, 0.0),
11840     TEST_ff_f (pow, plus_infty, -0x1p127, 0.0),
11841     TEST_ff_f (pow, plus_infty, -max_value, 0.0),
11842
11843     /* pow (-inf, y) == -inf for y an odd integer > 0.  */
11844     TEST_ff_f (pow, minus_infty, 27, minus_infty),
11845     TEST_ff_f (pow, minus_infty, 0xffffff, minus_infty),
11846     TEST_ff_f (pow, minus_infty, 0x1fffffe, plus_infty),
11847 #ifndef TEST_FLOAT
11848     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+52L, minus_infty),
11849     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+53L, plus_infty),
11850 #endif
11851 #ifdef TEST_LDOUBLE
11852 # if LDBL_MANT_DIG >= 64
11853     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+63L, minus_infty),
11854     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+64L, plus_infty),
11855 # endif
11856 # if LDBL_MANT_DIG >= 106
11857     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty),
11858     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty),
11859 # endif
11860 # if LDBL_MANT_DIG >= 113
11861     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty),
11862     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty),
11863 # endif
11864 #endif
11865
11866     /* pow (-inf, y) == +inf for y > 0 and not an odd integer.  */
11867     TEST_ff_f (pow, minus_infty, 28, plus_infty),
11868     TEST_ff_f (pow, minus_infty, 0x1p24, plus_infty),
11869     TEST_ff_f (pow, minus_infty, 0x1p127, plus_infty),
11870     TEST_ff_f (pow, minus_infty, max_value, plus_infty),
11871
11872     /* pow (-inf, y) == -0 for y an odd integer < 0. */
11873     TEST_ff_f (pow, minus_infty, -3, minus_zero),
11874     TEST_ff_f (pow, minus_infty, -0xffffff, minus_zero),
11875     TEST_ff_f (pow, minus_infty, -0x1fffffe, plus_zero),
11876 #ifndef TEST_FLOAT
11877     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+52L, minus_zero),
11878     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+53L, plus_zero),
11879 #endif
11880 #ifdef TEST_LDOUBLE
11881 # if LDBL_MANT_DIG >= 64
11882     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+63L, minus_zero),
11883     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+64L, plus_zero),
11884 # endif
11885 # if LDBL_MANT_DIG >= 106
11886     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
11887     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
11888 # endif
11889 # if LDBL_MANT_DIG >= 113
11890     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
11891     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
11892 # endif
11893 #endif
11894     /* pow (-inf, y) == +0 for y < 0 and not an odd integer.  */
11895     TEST_ff_f (pow, minus_infty, -2.0, 0.0),
11896     TEST_ff_f (pow, minus_infty, -0x1p24, 0.0),
11897     TEST_ff_f (pow, minus_infty, -0x1p127, 0.0),
11898     TEST_ff_f (pow, minus_infty, -max_value, 0.0),
11899
11900     /* pow (+0, y) == +0 for y an odd integer > 0.  */
11901     TEST_ff_f (pow, 0.0, 27, 0.0),
11902     TEST_ff_f (pow, 0.0, 0xffffff, 0.0),
11903 #ifndef TEST_FLOAT
11904     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffp+52L, 0.0),
11905 #endif
11906 #ifdef TEST_LDOUBLE
11907 # if LDBL_MANT_DIG >= 64
11908     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffffep+63L, 0.0),
11909 # endif
11910 # if LDBL_MANT_DIG >= 106
11911     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
11912 # endif
11913 # if LDBL_MANT_DIG >= 113
11914     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
11915 # endif
11916 #endif
11917
11918     /* pow (-0, y) == -0 for y an odd integer > 0.  */
11919     TEST_ff_f (pow, minus_zero, 27, minus_zero),
11920     TEST_ff_f (pow, minus_zero, 0xffffff, minus_zero),
11921     TEST_ff_f (pow, minus_zero, 0x1fffffe, plus_zero),
11922 #ifndef TEST_FLOAT
11923     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+52L, minus_zero),
11924     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+53L, plus_zero),
11925 #endif
11926 #ifdef TEST_LDOUBLE
11927 # if LDBL_MANT_DIG >= 64
11928     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+63L, minus_zero),
11929     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+64L, plus_zero),
11930 # endif
11931 # if LDBL_MANT_DIG >= 106
11932     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
11933     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
11934 # endif
11935 # if LDBL_MANT_DIG >= 113
11936     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
11937     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
11938 # endif
11939 #endif
11940
11941     /* pow (+0, y) == +0 for y > 0 and not an odd integer.  */
11942     TEST_ff_f (pow, 0.0, 4, 0.0),
11943     TEST_ff_f (pow, 0.0, 0x1p24, 0.0),
11944     TEST_ff_f (pow, 0.0, 0x1p127, 0.0),
11945     TEST_ff_f (pow, 0.0, max_value, 0.0),
11946     TEST_ff_f (pow, 0.0, min_subnorm_value, 0.0),
11947
11948     /* pow (-0, y) == +0 for y > 0 and not an odd integer.  */
11949     TEST_ff_f (pow, minus_zero, 4, 0.0),
11950     TEST_ff_f (pow, minus_zero, 0x1p24, 0.0),
11951     TEST_ff_f (pow, minus_zero, 0x1p127, 0.0),
11952     TEST_ff_f (pow, minus_zero, max_value, 0.0),
11953     TEST_ff_f (pow, minus_zero, min_subnorm_value, 0.0),
11954
11955     TEST_ff_f (pow, 16, 0.25L, 2),
11956     TEST_ff_f (pow, 0x1p64L, 0.125L, 256),
11957     TEST_ff_f (pow, 2, 4, 16),
11958     TEST_ff_f (pow, 256, 8, 0x1p64L),
11959
11960     TEST_ff_f (pow, 0.75L, 1.25L, 0.697953644326574699205914060237425566L),
11961
11962 #if defined TEST_DOUBLE || defined TEST_LDOUBLE
11963     TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0, UNDERFLOW_EXCEPTION),
11964 #endif
11965
11966     TEST_ff_f (pow, -1.0, -0xffffff, -1.0),
11967     TEST_ff_f (pow, -1.0, -0x1fffffe, 1.0),
11968 #ifndef TEST_FLOAT
11969     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+52L, -1.0),
11970     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+53L, 1.0),
11971 #endif
11972 #ifdef TEST_LDOUBLE
11973 # if LDBL_MANT_DIG >= 64
11974     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+63L, -1.0),
11975     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+64L, 1.0),
11976 # endif
11977 # if LDBL_MANT_DIG >= 106
11978     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
11979     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
11980 # endif
11981 # if LDBL_MANT_DIG >= 113
11982     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
11983     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
11984 # endif
11985 #endif
11986     TEST_ff_f (pow, -1.0, -max_value, 1.0),
11987
11988     TEST_ff_f (pow, -1.0, 0xffffff, -1.0),
11989     TEST_ff_f (pow, -1.0, 0x1fffffe, 1.0),
11990 #ifndef TEST_FLOAT
11991     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+52L, -1.0),
11992     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+53L, 1.0),
11993 #endif
11994 #ifdef TEST_LDOUBLE
11995 # if LDBL_MANT_DIG >= 64
11996     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+63L, -1.0),
11997     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+64L, 1.0),
11998 # endif
11999 # if LDBL_MANT_DIG >= 106
12000     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
12001     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
12002 # endif
12003 # if LDBL_MANT_DIG >= 113
12004     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
12005     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
12006 # endif
12007 #endif
12008     TEST_ff_f (pow, -1.0, max_value, 1.0),
12009
12010     TEST_ff_f (pow, -2.0, 126, 0x1p126),
12011     TEST_ff_f (pow, -2.0, 127, -0x1p127),
12012     /* Allow inexact results for float to be considered to underflow.  */
12013     TEST_ff_f (pow, -2.0, -126, 0x1p-126, UNDERFLOW_EXCEPTION_OK_FLOAT),
12014     TEST_ff_f (pow, -2.0, -127, -0x1p-127, UNDERFLOW_EXCEPTION_OK_FLOAT),
12015
12016     TEST_ff_f (pow, -2.0, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12017     TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12018 #ifndef TEST_FLOAT
12019     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12020     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12021 #endif
12022 #ifdef TEST_LDOUBLE
12023 # if LDBL_MANT_DIG >= 64
12024     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12025     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12026 # endif
12027 # if LDBL_MANT_DIG >= 106
12028     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12029     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12030 # endif
12031 # if LDBL_MANT_DIG >= 113
12032     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12033     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12034 # endif
12035 #endif
12036     TEST_ff_f (pow, -2.0, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12037
12038     TEST_ff_f (pow, -2.0, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12039     TEST_ff_f (pow, -2.0, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12040 #ifndef TEST_FLOAT
12041     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12042     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12043 #endif
12044 #ifdef TEST_LDOUBLE
12045 # if LDBL_MANT_DIG >= 64
12046     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12047     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12048 # endif
12049 # if LDBL_MANT_DIG >= 106
12050     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12051     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12052 # endif
12053 # if LDBL_MANT_DIG >= 113
12054     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12055     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12056 # endif
12057 #endif
12058     TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION),
12059
12060     TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION),
12061     TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION),
12062     TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12063     TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION),
12064     TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION),
12065     TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION),
12066     TEST_ff_f (pow, -max_value, 3, minus_infty, OVERFLOW_EXCEPTION),
12067
12068     TEST_ff_f (pow, -max_value, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12069     TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12070 #ifndef TEST_FLOAT
12071     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12072     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12073 #endif
12074 #ifdef TEST_LDOUBLE
12075 # if LDBL_MANT_DIG >= 64
12076     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12077     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12078 # endif
12079 # if LDBL_MANT_DIG >= 106
12080     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12081     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12082 # endif
12083 # if LDBL_MANT_DIG >= 113
12084     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12085     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12086 # endif
12087 #endif
12088     TEST_ff_f (pow, -max_value, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12089
12090     TEST_ff_f (pow, -max_value, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12091     TEST_ff_f (pow, -max_value, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12092 #ifndef TEST_FLOAT
12093     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12094     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12095 #endif
12096 #ifdef TEST_LDOUBLE
12097 # if LDBL_MANT_DIG >= 64
12098     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12099     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12100 # endif
12101 # if LDBL_MANT_DIG >= 106
12102     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12103     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12104 # endif
12105 # if LDBL_MANT_DIG >= 113
12106     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12107     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12108 # endif
12109 #endif
12110     TEST_ff_f (pow, -max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
12111
12112     TEST_ff_f (pow, -0.5, 126, 0x1p-126),
12113     TEST_ff_f (pow, -0.5, 127, -0x1p-127),
12114     TEST_ff_f (pow, -0.5, -126, 0x1p126),
12115     TEST_ff_f (pow, -0.5, -127, -0x1p127),
12116
12117     TEST_ff_f (pow, -0.5, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12118     TEST_ff_f (pow, -0.5, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12119 #ifndef TEST_FLOAT
12120     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12121     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12122 #endif
12123 #ifdef TEST_LDOUBLE
12124 # if LDBL_MANT_DIG >= 64
12125     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12126     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12127 # endif
12128 # if LDBL_MANT_DIG >= 106
12129     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12130     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12131 # endif
12132 # if LDBL_MANT_DIG >= 113
12133     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12134     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12135 # endif
12136 #endif
12137     TEST_ff_f (pow, -0.5, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12138
12139     TEST_ff_f (pow, -0.5, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12140     TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12141 #ifndef TEST_FLOAT
12142     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12143     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12144 #endif
12145 #ifdef TEST_LDOUBLE
12146 # if LDBL_MANT_DIG >= 64
12147     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12148     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12149 # endif
12150 # if LDBL_MANT_DIG >= 106
12151     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12152     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12153 # endif
12154 # if LDBL_MANT_DIG >= 113
12155     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12156     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12157 # endif
12158 #endif
12159     TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12160
12161     TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION),
12162     TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION),
12163     TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12164     TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION),
12165     TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION),
12166     /* Allow inexact results to be considered to underflow.  */
12167     TEST_ff_f (pow, -min_value, 1, -min_value, UNDERFLOW_EXCEPTION_OK),
12168     TEST_ff_f (pow, -min_value, 2, plus_zero, UNDERFLOW_EXCEPTION),
12169     TEST_ff_f (pow, -min_value, 3, minus_zero, UNDERFLOW_EXCEPTION),
12170
12171     TEST_ff_f (pow, -min_value, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12172     TEST_ff_f (pow, -min_value, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12173 #ifndef TEST_FLOAT
12174     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12175     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12176 #endif
12177 #ifdef TEST_LDOUBLE
12178 # if LDBL_MANT_DIG >= 64
12179     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12180     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12181 # endif
12182 # if LDBL_MANT_DIG >= 106
12183     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12184     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12185 # endif
12186 # if LDBL_MANT_DIG >= 113
12187     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12188     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12189 # endif
12190 #endif
12191     TEST_ff_f (pow, -min_value, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12192
12193     TEST_ff_f (pow, -min_value, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12194     TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12195 #ifndef TEST_FLOAT
12196     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12197     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12198 #endif
12199 #ifdef TEST_LDOUBLE
12200 # if LDBL_MANT_DIG >= 64
12201     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12202     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12203 # endif
12204 # if LDBL_MANT_DIG >= 106
12205     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12206     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12207 # endif
12208 # if LDBL_MANT_DIG >= 113
12209     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12210     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12211 # endif
12212 #endif
12213     TEST_ff_f (pow, -min_value, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12214
12215     TEST_ff_f (pow, 0x0.ffffffp0, 10, 0.999999403953712118183885036774764444747L),
12216     TEST_ff_f (pow, 0x0.ffffffp0, 100, 0.999994039553108359406305079606228341585L),
12217     TEST_ff_f (pow, 0x0.ffffffp0, 1000, 0.9999403971297699052276650144650733772182L),
12218     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p24, 0.3678794302077803437135155590023422899744L),
12219     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p30, 1.603807831524924233828134753069728224044e-28L),
12220     TEST_ff_f (pow, 0x0.ffffffp0, 0x1.234566p30, 2.374884712135295099971443365381007297732e-32L),
12221     TEST_ff_f (pow, 0x0.ffffffp0, -10, 1.000000596046643153205170848674671339688L),
12222     TEST_ff_f (pow, 0x0.ffffffp0, -100, 1.000005960482418779499387594989252621451L),
12223     TEST_ff_f (pow, 0x0.ffffffp0, -1000, 1.000059606422943986382898964231519867906L),
12224     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p24, 2.7182819094701610539628664526874952929416L),
12225     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p30, 6.2351609734265057988914412331288163636075e+27L),
12226     TEST_ff_f (pow, 0x0.ffffffp0, -0x1.234566p30, 4.2107307141696353498921307077142537353515e+31L),
12227     TEST_ff_f (pow, 0x1.000002p0, 0x1p24, 7.3890552180866447284268641248075832310141L),
12228     TEST_ff_f (pow, 0x1.000002p0, 0x1.234566p29, 4.2107033006507495188536371520637025716256e+31L),
12229     TEST_ff_f (pow, 0x1.000002p0, -0x1.234566p29, 2.3749001736727769098946062325205705312166e-32L),
12230
12231 #if !defined TEST_FLOAT
12232     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, 0x1.23456789abcdfp62L, 1.0118762747827252817436395051178295138220e-253L),
12233     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, -0x1.23456789abcdfp62L, 9.8826311568054561811190162420900667121992e+252L),
12234     TEST_ff_f (pow, 0x1.0000000000001p0L, 0x1.23456789abcdfp61L, 9.8826311568044974397135026217687399395481e+252L),
12235     TEST_ff_f (pow, 0x1.0000000000001p0L, -0x1.23456789abcdfp61L, 1.0118762747828234466621210689458255908670e-253L),
12236 #endif
12237
12238 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 && LDBL_MAX_EXP >= 16384
12239     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, 0x1.23456789abcdef0ep77L, 1.2079212226420368189981778807634890018840e-4048L),
12240     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, -0x1.23456789abcdef0ep77L, 8.2786855736563746280496724205839522148001e+4047L),
12241     TEST_ff_f (pow, 0x1.0000000000000002p0L, 0x1.23456789abcdef0ep76L, 8.2786855736563683535324500168799315131570e+4047L),
12242     TEST_ff_f (pow, 0x1.0000000000000002p0L, -0x1.23456789abcdef0ep76L, 1.2079212226420377344964713407722652880280e-4048L),
12243 #endif
12244
12245 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
12246     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.23456789abcdef0123456789abcdp126L, 1.2079212226420440237790185999151440179953e-4048L),
12247     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.23456789abcdef0123456789abcdp126L, 8.2786855736563252489063231915535105363602e+4047L),
12248     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, 0x1.23456789abcdef0123456789abcdp125L, 8.2786855736563252489063231915423647547782e+4047L),
12249     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, -0x1.23456789abcdef0123456789abcdp125L, 1.2079212226420440237790185999167702696503e-4048L),
12250 #endif
12251
12252 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
12253     TEST_ff_f (pow, 1e4932L, 0.75L, 1e3699L),
12254     TEST_ff_f (pow, 1e4928L, 0.75L, 1e3696L),
12255     TEST_ff_f (pow, 1e4924L, 0.75L, 1e3693L),
12256     TEST_ff_f (pow, 1e4920L, 0.75L, 1e3690L),
12257     TEST_ff_f (pow, 10.0L, 4932.0L, 1e4932L),
12258     TEST_ff_f (pow, 10.0L, 4931.0L, 1e4931L),
12259     TEST_ff_f (pow, 10.0L, 4930.0L, 1e4930L),
12260     TEST_ff_f (pow, 10.0L, 4929.0L, 1e4929L),
12261     TEST_ff_f (pow, 10.0L, -4931.0L, 1e-4931L),
12262     TEST_ff_f (pow, 10.0L, -4930.0L, 1e-4930L),
12263     TEST_ff_f (pow, 10.0L, -4929.0L, 1e-4929L),
12264     TEST_ff_f (pow, 1e27L, 182.0L, 1e4914L),
12265     TEST_ff_f (pow, 1e27L, -182.0L, 1e-4914L),
12266 #endif
12267
12268     TEST_ff_f (pow, min_subnorm_value, min_subnorm_value, 1.0L),
12269     TEST_ff_f (pow, min_subnorm_value, -min_subnorm_value, 1.0L),
12270     TEST_ff_f (pow, max_value, min_subnorm_value, 1.0L),
12271     TEST_ff_f (pow, max_value, -min_subnorm_value, 1.0L),
12272     TEST_ff_f (pow, 0.99L, min_subnorm_value, 1.0L),
12273     TEST_ff_f (pow, 0.99L, -min_subnorm_value, 1.0L),
12274     TEST_ff_f (pow, 1.01L, min_subnorm_value, 1.0L),
12275     TEST_ff_f (pow, 1.01L, -min_subnorm_value, 1.0L),
12276
12277     TEST_ff_f (pow, 2.0L, -100000.0L, plus_zero, UNDERFLOW_EXCEPTION),
12278     END_DATA (pow)
12279   };
12280
12281 static void
12282 pow_test (void)
12283 {
12284
12285   errno = 0;
12286   FUNC(pow) (0, 0);
12287   if (errno == ENOSYS)
12288     /* Function not implemented.  */
12289     return;
12290
12291   START (pow);
12292   RUN_TEST_LOOP_ff_f (pow, pow_test_data, );
12293   END (pow);
12294 }
12295
12296
12297 static const struct test_ff_f_data pow_tonearest_test_data[] =
12298   {
12299     START_DATA (pow_tonearest),
12300     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12301     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12302     END_DATA (pow_tonearest)
12303   };
12304
12305 static void
12306 pow_test_tonearest (void)
12307 {
12308   errno = 0;
12309   FUNC(pow) (0, 0);
12310   if (errno == ENOSYS)
12311     /* Function not implemented.  */
12312     return;
12313
12314   START (pow_tonearest);
12315   RUN_TEST_LOOP_ff_f (pow, pow_tonearest_test_data, FE_TONEAREST);
12316   END (pow_tonearest);
12317 }
12318
12319
12320 static const struct test_ff_f_data pow_towardzero_test_data[] =
12321   {
12322     START_DATA (pow_towardzero),
12323     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12324     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12325     END_DATA (pow_towardzero)
12326   };
12327
12328 static void
12329 pow_test_towardzero (void)
12330 {
12331   errno = 0;
12332   FUNC(pow) (0, 0);
12333   if (errno == ENOSYS)
12334     /* Function not implemented.  */
12335     return;
12336
12337   START (pow_towardzero);
12338   RUN_TEST_LOOP_ff_f (pow, pow_towardzero_test_data, FE_TOWARDZERO);
12339   END (pow_towardzero);
12340 }
12341
12342
12343 static const struct test_ff_f_data pow_downward_test_data[] =
12344   {
12345     START_DATA (pow_downward),
12346     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12347     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12348     END_DATA (pow_downward)
12349   };
12350
12351 static void
12352 pow_test_downward (void)
12353 {
12354   errno = 0;
12355   FUNC(pow) (0, 0);
12356   if (errno == ENOSYS)
12357     /* Function not implemented.  */
12358     return;
12359
12360   START (pow_downward);
12361   RUN_TEST_LOOP_ff_f (pow, pow_downward_test_data, FE_DOWNWARD);
12362   END (pow_downward);
12363 }
12364
12365
12366 static const struct test_ff_f_data pow_upward_test_data[] =
12367   {
12368     START_DATA (pow_upward),
12369     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12370     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12371     END_DATA (pow_upward)
12372   };
12373
12374 static void
12375 pow_test_upward (void)
12376 {
12377   errno = 0;
12378   FUNC(pow) (0, 0);
12379   if (errno == ENOSYS)
12380     /* Function not implemented.  */
12381     return;
12382
12383   START (pow_upward);
12384   RUN_TEST_LOOP_ff_f (pow, pow_upward_test_data, FE_UPWARD);
12385   END (pow_upward);
12386 }
12387
12388
12389 static const struct test_ff_f_data remainder_test_data[] =
12390   {
12391     START_DATA (remainder),
12392     TEST_ff_f (remainder, 1, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12393     TEST_ff_f (remainder, 1, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12394     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12395     TEST_ff_f (remainder, plus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12396     TEST_ff_f (remainder, plus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12397     TEST_ff_f (remainder, plus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12398     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12399     TEST_ff_f (remainder, minus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12400     TEST_ff_f (remainder, minus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12401     TEST_ff_f (remainder, minus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12402     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, ERRNO_UNCHANGED),
12403     TEST_ff_f (remainder, 0, qnan_value, qnan_value, ERRNO_UNCHANGED),
12404     TEST_ff_f (remainder, qnan_value, 0, qnan_value, ERRNO_UNCHANGED),
12405
12406     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, ERRNO_UNCHANGED),
12407     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, ERRNO_UNCHANGED),
12408
12409     TEST_ff_f (remainder, 1.625, 1.0, -0.375),
12410     TEST_ff_f (remainder, -1.625, 1.0, 0.375),
12411     TEST_ff_f (remainder, 1.625, -1.0, -0.375),
12412     TEST_ff_f (remainder, -1.625, -1.0, 0.375),
12413     TEST_ff_f (remainder, 5.0, 2.0, 1.0),
12414     TEST_ff_f (remainder, 3.0, 2.0, -1.0),
12415     END_DATA (remainder)
12416   };
12417
12418 static void
12419 remainder_test (void)
12420 {
12421   errno = 0;
12422   FUNC(remainder) (1.625, 1.0);
12423   if (errno == ENOSYS)
12424     /* Function not implemented.  */
12425     return;
12426
12427   START (remainder);
12428   RUN_TEST_LOOP_ff_f (remainder, remainder_test_data, );
12429   END (remainder);
12430 }
12431
12432 static void
12433 remquo_test (void)
12434 {
12435   /* x is needed.  */
12436   int x;
12437
12438   errno = 0;
12439   FUNC(remquo) (1.625, 1.0, &x);
12440   if (errno == ENOSYS)
12441     /* Function not implemented.  */
12442     return;
12443
12444   START (remquo);
12445
12446   TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, INVALID_EXCEPTION);
12447   TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, INVALID_EXCEPTION);
12448   TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
12449   TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
12450   TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE);
12451
12452   TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2);
12453   TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2);
12454   TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2);
12455   TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2);
12456
12457   TEST_ffI_f1 (remquo, 5, 2, 1, 2);
12458   TEST_ffI_f1 (remquo, 3, 2, -1, 2);
12459
12460   END (remquo);
12461 }
12462
12463 static const struct test_f_f_data rint_test_data[] =
12464   {
12465     START_DATA (rint),
12466     /* TODO: missing qNaN tests.  */
12467
12468     TEST_f_f (rint, 0.0, 0.0),
12469     TEST_f_f (rint, minus_zero, minus_zero),
12470     TEST_f_f (rint, plus_infty, plus_infty),
12471     TEST_f_f (rint, minus_infty, minus_infty),
12472
12473     /* Default rounding mode is round to even.  */
12474     TEST_f_f (rint, 0.5, 0.0),
12475     TEST_f_f (rint, 1.5, 2.0),
12476     TEST_f_f (rint, 2.5, 2.0),
12477     TEST_f_f (rint, 3.5, 4.0),
12478     TEST_f_f (rint, 4.5, 4.0),
12479     TEST_f_f (rint, -0.5, -0.0),
12480     TEST_f_f (rint, -1.5, -2.0),
12481     TEST_f_f (rint, -2.5, -2.0),
12482     TEST_f_f (rint, -3.5, -4.0),
12483     TEST_f_f (rint, -4.5, -4.0),
12484     TEST_f_f (rint, 0.1, 0.0),
12485     TEST_f_f (rint, 0.25, 0.0),
12486     TEST_f_f (rint, 0.625, 1.0),
12487     TEST_f_f (rint, -0.1, -0.0),
12488     TEST_f_f (rint, -0.25, -0.0),
12489     TEST_f_f (rint, -0.625, -1.0),
12490     TEST_f_f (rint, 262144.75, 262145.0),
12491     TEST_f_f (rint, 262142.75, 262143.0),
12492     TEST_f_f (rint, 524286.75, 524287.0),
12493     TEST_f_f (rint, 524288.75, 524289.0),
12494     TEST_f_f (rint, 1048576.75, 1048577.0),
12495     TEST_f_f (rint, 2097152.75, 2097153.0),
12496     TEST_f_f (rint, -1048576.75, -1048577.0),
12497     TEST_f_f (rint, -2097152.75, -2097153.0),
12498 #ifndef TEST_FLOAT
12499     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12500     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12501     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12502     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12503     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12504     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12505     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12506     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12507     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12508     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12509 #endif
12510 #ifdef TEST_LDOUBLE
12511     /* The result can only be represented in long double.  */
12512     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12513     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12514     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12515     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12516     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12517
12518 # if LDBL_MANT_DIG > 100
12519     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12520     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12521     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12522 # endif
12523
12524     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12525     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12526     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12527     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12528     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12529
12530 # if LDBL_MANT_DIG > 100
12531     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12532     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12533     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12534
12535     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12536     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12537     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12538     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12539     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12540     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12541
12542     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12543     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12544     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12545     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12546     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12547     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12548 # endif
12549
12550     TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L),
12551     TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L),
12552     TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L),
12553     TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L),
12554     TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L),
12555
12556     TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L),
12557     TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L),
12558     TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L),
12559     TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L),
12560     TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L),
12561
12562     TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L),
12563     TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L),
12564     TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L),
12565     TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L),
12566     TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L),
12567
12568     TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L),
12569     TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L),
12570     TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L),
12571     TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L),
12572     TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L),
12573
12574     TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
12575     TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
12576     TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
12577     TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
12578     TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
12579 #endif
12580     END_DATA (rint)
12581   };
12582
12583 static void
12584 rint_test (void)
12585 {
12586   START (rint);
12587   RUN_TEST_LOOP_f_f (rint, rint_test_data, );
12588   END (rint);
12589 }
12590
12591 static const struct test_f_f_data rint_tonearest_test_data[] =
12592   {
12593     START_DATA (rint_tonearest),
12594     TEST_f_f (rint, 2.0, 2.0),
12595     TEST_f_f (rint, 1.5, 2.0),
12596     TEST_f_f (rint, 1.0, 1.0),
12597     TEST_f_f (rint, 0.5, 0.0),
12598     TEST_f_f (rint, 0.0, 0.0),
12599     TEST_f_f (rint, minus_zero, minus_zero),
12600     TEST_f_f (rint, -0.5, -0.0),
12601     TEST_f_f (rint, -1.0, -1.0),
12602     TEST_f_f (rint, -1.5, -2.0),
12603     TEST_f_f (rint, -2.0, -2.0),
12604     TEST_f_f (rint, 0.1, 0.0),
12605     TEST_f_f (rint, 0.25, 0.0),
12606     TEST_f_f (rint, 0.625, 1.0),
12607     TEST_f_f (rint, -0.1, -0.0),
12608     TEST_f_f (rint, -0.25, -0.0),
12609     TEST_f_f (rint, -0.625, -1.0),
12610     TEST_f_f (rint, 1048576.75, 1048577.0),
12611     TEST_f_f (rint, 2097152.75, 2097153.0),
12612     TEST_f_f (rint, -1048576.75, -1048577.0),
12613     TEST_f_f (rint, -2097152.75, -2097153.0),
12614 #ifndef TEST_FLOAT
12615     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12616     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12617     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12618     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12619     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12620     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12621     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12622     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12623     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12624     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12625 #endif
12626 #ifdef TEST_LDOUBLE
12627     /* The result can only be represented in long double.  */
12628     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12629     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12630     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12631     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12632     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12633 # if LDBL_MANT_DIG > 100
12634     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12635     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12636     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12637 # endif
12638     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12639     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12640     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12641     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12642     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12643 # if LDBL_MANT_DIG > 100
12644     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12645     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12646     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12647
12648     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12649     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12650     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12651     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12652     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12653     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12654
12655     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12656     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12657     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12658     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12659     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12660     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12661 # endif
12662 #endif
12663     END_DATA (rint_tonearest)
12664   };
12665
12666 static void
12667 rint_test_tonearest (void)
12668 {
12669   START (rint_tonearest);
12670   RUN_TEST_LOOP_f_f (rint, rint_tonearest_test_data, FE_TONEAREST);
12671   END (rint_tonearest);
12672 }
12673
12674 static const struct test_f_f_data rint_towardzero_test_data[] =
12675   {
12676     START_DATA (rint_towardzero),
12677     TEST_f_f (rint, 2.0, 2.0),
12678     TEST_f_f (rint, 1.5, 1.0),
12679     TEST_f_f (rint, 1.0, 1.0),
12680     TEST_f_f (rint, 0.5, 0.0),
12681     TEST_f_f (rint, 0.0, 0.0),
12682     TEST_f_f (rint, minus_zero, minus_zero),
12683     TEST_f_f (rint, -0.5, -0.0),
12684     TEST_f_f (rint, -1.0, -1.0),
12685     TEST_f_f (rint, -1.5, -1.0),
12686     TEST_f_f (rint, -2.0, -2.0),
12687     TEST_f_f (rint, 0.1, 0.0),
12688     TEST_f_f (rint, 0.25, 0.0),
12689     TEST_f_f (rint, 0.625, 0.0),
12690     TEST_f_f (rint, -0.1, -0.0),
12691     TEST_f_f (rint, -0.25, -0.0),
12692     TEST_f_f (rint, -0.625, -0.0),
12693     TEST_f_f (rint, 1048576.75, 1048576.0),
12694     TEST_f_f (rint, 2097152.75, 2097152.0),
12695     TEST_f_f (rint, -1048576.75, -1048576.0),
12696     TEST_f_f (rint, -2097152.75, -2097152.0),
12697 #ifndef TEST_FLOAT
12698     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
12699     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
12700     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
12701     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
12702     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
12703     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
12704     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
12705     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
12706     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
12707     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
12708 #endif
12709 #ifdef TEST_LDOUBLE
12710     /* The result can only be represented in long double.  */
12711     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
12712     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12713     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12714     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
12715     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
12716 # if LDBL_MANT_DIG > 100
12717     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
12718     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
12719     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
12720 # endif
12721     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
12722     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12723     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12724     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
12725     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
12726 # if LDBL_MANT_DIG > 100
12727     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
12728     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
12729     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
12730
12731     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12732     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12733     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12734     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
12735     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
12736     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
12737
12738     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12739     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12740     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12741     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
12742     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
12743     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
12744 # endif
12745 #endif
12746     END_DATA (rint_towardzero)
12747   };
12748
12749 static void
12750 rint_test_towardzero (void)
12751 {
12752   START (rint_towardzero);
12753   RUN_TEST_LOOP_f_f (rint, rint_towardzero_test_data, FE_TOWARDZERO);
12754   END (rint_towardzero);
12755 }
12756
12757 static const struct test_f_f_data rint_downward_test_data[] =
12758   {
12759     START_DATA (rint_downward),
12760     TEST_f_f (rint, 2.0, 2.0),
12761     TEST_f_f (rint, 1.5, 1.0),
12762     TEST_f_f (rint, 1.0, 1.0),
12763     TEST_f_f (rint, 0.5, 0.0),
12764     TEST_f_f (rint, 0.0, 0.0),
12765     TEST_f_f (rint, minus_zero, minus_zero),
12766     TEST_f_f (rint, -0.5, -1.0),
12767     TEST_f_f (rint, -1.0, -1.0),
12768     TEST_f_f (rint, -1.5, -2.0),
12769     TEST_f_f (rint, -2.0, -2.0),
12770     TEST_f_f (rint, 0.1, 0.0),
12771     TEST_f_f (rint, 0.25, 0.0),
12772     TEST_f_f (rint, 0.625, 0.0),
12773     TEST_f_f (rint, -0.1, -1.0),
12774     TEST_f_f (rint, -0.25, -1.0),
12775     TEST_f_f (rint, -0.625, -1.0),
12776     TEST_f_f (rint, 1048576.75, 1048576.0),
12777     TEST_f_f (rint, 2097152.75, 2097152.0),
12778     TEST_f_f (rint, -1048576.75, -1048577.0),
12779     TEST_f_f (rint, -2097152.75, -2097153.0),
12780 #ifndef TEST_FLOAT
12781     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
12782     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
12783     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
12784     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
12785     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
12786     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12787     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12788     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12789     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12790     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12791 #endif
12792 #ifdef TEST_LDOUBLE
12793     /* The result can only be represented in long double.  */
12794     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
12795     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12796     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12797     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
12798     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
12799 # if LDBL_MANT_DIG > 100
12800     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
12801     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
12802     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
12803 # endif
12804     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12805     TEST_f_f (rint, -4503599627370496.25L, -4503599627370497.0L),
12806     TEST_f_f (rint, -4503599627370496.5L, -4503599627370497.0L),
12807     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12808     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12809 # if LDBL_MANT_DIG > 100
12810     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12811     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12812     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12813
12814     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12815     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12816     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12817     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
12818     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
12819     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
12820
12821     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740992.0L),
12822     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740993.0L),
12823     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740994.0L),
12824     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12825     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12826     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12827 # endif
12828 #endif
12829     END_DATA (rint_downward)
12830   };
12831
12832 static void
12833 rint_test_downward (void)
12834 {
12835   START (rint_downward);
12836   RUN_TEST_LOOP_f_f (rint, rint_downward_test_data, FE_DOWNWARD);
12837   END (rint_downward);
12838 }
12839
12840 static const struct test_f_f_data rint_upward_test_data[] =
12841   {
12842     START_DATA (rint_upward),
12843     TEST_f_f (rint, 2.0, 2.0),
12844     TEST_f_f (rint, 1.5, 2.0),
12845     TEST_f_f (rint, 1.0, 1.0),
12846     TEST_f_f (rint, 0.5, 1.0),
12847     TEST_f_f (rint, 0.0, 0.0),
12848     TEST_f_f (rint, minus_zero, minus_zero),
12849     TEST_f_f (rint, -0.5, -0.0),
12850     TEST_f_f (rint, -1.0, -1.0),
12851     TEST_f_f (rint, -1.5, -1.0),
12852     TEST_f_f (rint, -2.0, -2.0),
12853     TEST_f_f (rint, 0.1, 1.0),
12854     TEST_f_f (rint, 0.25, 1.0),
12855     TEST_f_f (rint, 0.625, 1.0),
12856     TEST_f_f (rint, -0.1, -0.0),
12857     TEST_f_f (rint, -0.25, -0.0),
12858     TEST_f_f (rint, -0.625, -0.0),
12859     TEST_f_f (rint, 1048576.75, 1048577.0),
12860     TEST_f_f (rint, 2097152.75, 2097153.0),
12861     TEST_f_f (rint, -1048576.75, -1048576.0),
12862     TEST_f_f (rint, -2097152.75, -2097152.0),
12863 #ifndef TEST_FLOAT
12864     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12865     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12866     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12867     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12868     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12869     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
12870     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
12871     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
12872     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
12873     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
12874 #endif
12875 #ifdef TEST_LDOUBLE
12876     /* The result can only be represented in long double.  */
12877     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12878     TEST_f_f (rint, 4503599627370496.25L, 4503599627370497.0L),
12879     TEST_f_f (rint, 4503599627370496.5L, 4503599627370497.0L),
12880     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12881     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12882 # if LDBL_MANT_DIG > 100
12883     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12884     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12885     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12886 # endif
12887     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
12888     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12889     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12890     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
12891     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
12892 # if LDBL_MANT_DIG > 100
12893     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
12894     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
12895     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
12896
12897     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740992.0L),
12898     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740993.0L),
12899     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740994.0L),
12900     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12901     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12902     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12903
12904     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12905     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12906     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12907     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
12908     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
12909     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
12910 # endif
12911 #endif
12912     END_DATA (rint_upward)
12913   };
12914
12915 static void
12916 rint_test_upward (void)
12917 {
12918   START (rint_upward);
12919   RUN_TEST_LOOP_f_f (rint, rint_upward_test_data, FE_UPWARD);
12920   END (rint_upward);
12921 }
12922
12923 static const struct test_f_f_data round_test_data[] =
12924   {
12925     START_DATA (round),
12926     /* TODO: missing +/-Inf as well as qNaN tests.  */
12927
12928     TEST_f_f (round, 0, 0),
12929     TEST_f_f (round, minus_zero, minus_zero),
12930     TEST_f_f (round, 0.2L, 0.0),
12931     TEST_f_f (round, -0.2L, minus_zero),
12932     TEST_f_f (round, 0.5, 1.0),
12933     TEST_f_f (round, -0.5, -1.0),
12934     TEST_f_f (round, 0.8L, 1.0),
12935     TEST_f_f (round, -0.8L, -1.0),
12936     TEST_f_f (round, 1.5, 2.0),
12937     TEST_f_f (round, -1.5, -2.0),
12938     TEST_f_f (round, 0.1, 0.0),
12939     TEST_f_f (round, 0.25, 0.0),
12940     TEST_f_f (round, 0.625, 1.0),
12941     TEST_f_f (round, -0.1, -0.0),
12942     TEST_f_f (round, -0.25, -0.0),
12943     TEST_f_f (round, -0.625, -1.0),
12944     TEST_f_f (round, 2097152.5, 2097153),
12945     TEST_f_f (round, -2097152.5, -2097153),
12946
12947 #ifdef TEST_LDOUBLE
12948     /* The result can only be represented in long double.  */
12949     TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L),
12950     TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L),
12951     TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L),
12952     TEST_f_f (round, 4503599627370496.75L, 4503599627370497.0L),
12953     TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L),
12954 # if LDBL_MANT_DIG > 100
12955     TEST_f_f (round, 4503599627370494.5000000000001L, 4503599627370495.0L),
12956     TEST_f_f (round, 4503599627370495.5000000000001L, 4503599627370496.0L),
12957     TEST_f_f (round, 4503599627370496.5000000000001L, 4503599627370497.0L),
12958 # endif
12959
12960     TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L),
12961     TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L),
12962     TEST_f_f (round, -4503599627370496.5L, -4503599627370497.0L),
12963     TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L),
12964     TEST_f_f (round, -4503599627370497.5L, -4503599627370498.0L),
12965 # if LDBL_MANT_DIG > 100
12966     TEST_f_f (round, -4503599627370494.5000000000001L, -4503599627370495.0L),
12967     TEST_f_f (round, -4503599627370495.5000000000001L, -4503599627370496.0L),
12968     TEST_f_f (round, -4503599627370496.5000000000001L, -4503599627370497.0L),
12969 # endif
12970
12971     TEST_f_f (round, 9007199254740991.5L, 9007199254740992.0L),
12972     TEST_f_f (round, 9007199254740992.25L, 9007199254740992.0L),
12973     TEST_f_f (round, 9007199254740992.5L, 9007199254740993.0L),
12974     TEST_f_f (round, 9007199254740992.75L, 9007199254740993.0L),
12975     TEST_f_f (round, 9007199254740993.5L, 9007199254740994.0L),
12976
12977     TEST_f_f (round, -9007199254740991.5L, -9007199254740992.0L),
12978     TEST_f_f (round, -9007199254740992.25L, -9007199254740992.0L),
12979     TEST_f_f (round, -9007199254740992.5L, -9007199254740993.0L),
12980     TEST_f_f (round, -9007199254740992.75L, -9007199254740993.0L),
12981     TEST_f_f (round, -9007199254740993.5L, -9007199254740994.0L),
12982
12983 # if LDBL_MANT_DIG > 100
12984     TEST_f_f (round, 9007199254740991.0000000000001L, 9007199254740991.0L),
12985     TEST_f_f (round, 9007199254740992.0000000000001L, 9007199254740992.0L),
12986     TEST_f_f (round, 9007199254740993.0000000000001L, 9007199254740993.0L),
12987     TEST_f_f (round, 9007199254740991.5000000000001L, 9007199254740992.0L),
12988     TEST_f_f (round, 9007199254740992.5000000000001L, 9007199254740993.0L),
12989     TEST_f_f (round, 9007199254740993.5000000000001L, 9007199254740994.0L),
12990
12991     TEST_f_f (round, -9007199254740991.0000000000001L, -9007199254740991.0L),
12992     TEST_f_f (round, -9007199254740992.0000000000001L, -9007199254740992.0L),
12993     TEST_f_f (round, -9007199254740993.0000000000001L, -9007199254740993.0L),
12994     TEST_f_f (round, -9007199254740991.5000000000001L, -9007199254740992.0L),
12995     TEST_f_f (round, -9007199254740992.5000000000001L, -9007199254740993.0L),
12996     TEST_f_f (round, -9007199254740993.5000000000001L, -9007199254740994.0L),
12997 # endif
12998
12999     TEST_f_f (round, 72057594037927935.5L, 72057594037927936.0L),
13000     TEST_f_f (round, 72057594037927936.25L, 72057594037927936.0L),
13001     TEST_f_f (round, 72057594037927936.5L, 72057594037927937.0L),
13002     TEST_f_f (round, 72057594037927936.75L, 72057594037927937.0L),
13003     TEST_f_f (round, 72057594037927937.5L, 72057594037927938.0L),
13004
13005     TEST_f_f (round, -72057594037927935.5L, -72057594037927936.0L),
13006     TEST_f_f (round, -72057594037927936.25L, -72057594037927936.0L),
13007     TEST_f_f (round, -72057594037927936.5L, -72057594037927937.0L),
13008     TEST_f_f (round, -72057594037927936.75L, -72057594037927937.0L),
13009     TEST_f_f (round, -72057594037927937.5L, -72057594037927938.0L),
13010
13011     TEST_f_f (round, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
13012     TEST_f_f (round, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
13013     TEST_f_f (round, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
13014     TEST_f_f (round, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
13015     TEST_f_f (round, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
13016 #endif
13017     END_DATA (round)
13018   };
13019
13020 static void
13021 round_test (void)
13022 {
13023   START (round);
13024   RUN_TEST_LOOP_f_f (round, round_test_data, );
13025   END (round);
13026 }
13027
13028
13029 static const struct test_ff_f_data scalb_test_data[] =
13030   {
13031     START_DATA (scalb),
13032     TEST_ff_f (scalb, 2.0, 0.5, qnan_value, INVALID_EXCEPTION),
13033     TEST_ff_f (scalb, 3.0, -2.5, qnan_value, INVALID_EXCEPTION),
13034
13035     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13036     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13037
13038     TEST_ff_f (scalb, 1, 0, 1),
13039     TEST_ff_f (scalb, -1, 0, -1),
13040
13041     TEST_ff_f (scalb, 0, plus_infty, qnan_value, INVALID_EXCEPTION),
13042     TEST_ff_f (scalb, minus_zero, plus_infty, qnan_value, INVALID_EXCEPTION),
13043
13044     TEST_ff_f (scalb, 0, 2, 0),
13045     TEST_ff_f (scalb, minus_zero, -4, minus_zero),
13046     TEST_ff_f (scalb, 0, 0, 0),
13047     TEST_ff_f (scalb, minus_zero, 0, minus_zero),
13048     TEST_ff_f (scalb, 0, -1, 0),
13049     TEST_ff_f (scalb, minus_zero, -10, minus_zero),
13050     TEST_ff_f (scalb, 0, minus_infty, 0),
13051     TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero),
13052
13053     TEST_ff_f (scalb, plus_infty, -1, plus_infty),
13054     TEST_ff_f (scalb, minus_infty, -10, minus_infty),
13055     TEST_ff_f (scalb, plus_infty, 0, plus_infty),
13056     TEST_ff_f (scalb, minus_infty, 0, minus_infty),
13057     TEST_ff_f (scalb, plus_infty, 2, plus_infty),
13058     TEST_ff_f (scalb, minus_infty, 100, minus_infty),
13059
13060     TEST_ff_f (scalb, 0.1L, minus_infty, 0.0),
13061     TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero),
13062
13063     TEST_ff_f (scalb, 1, plus_infty, plus_infty),
13064     TEST_ff_f (scalb, -1, plus_infty, minus_infty),
13065     TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty),
13066     TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty),
13067
13068     TEST_ff_f (scalb, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13069     TEST_ff_f (scalb, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13070
13071     TEST_ff_f (scalb, qnan_value, 1, qnan_value),
13072     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13073     TEST_ff_f (scalb, qnan_value, 0, qnan_value),
13074     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13075     TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value),
13076     TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value),
13077     TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value),
13078
13079     TEST_ff_f (scalb, 0.8L, 4, 12.8L),
13080     TEST_ff_f (scalb, -0.854375L, 5, -27.34L),
13081     END_DATA (scalb)
13082   };
13083
13084 static void
13085 scalb_test (void)
13086 {
13087
13088   START (scalb);
13089   RUN_TEST_LOOP_ff_f (scalb, scalb_test_data, );
13090   END (scalb);
13091 }
13092
13093
13094 static void
13095 scalbn_test (void)
13096 {
13097
13098   START (scalbn);
13099
13100   TEST_fi_f (scalbn, 0, 0, 0);
13101   TEST_fi_f (scalbn, minus_zero, 0, minus_zero);
13102
13103   TEST_fi_f (scalbn, plus_infty, 1, plus_infty);
13104   TEST_fi_f (scalbn, minus_infty, 1, minus_infty);
13105   TEST_fi_f (scalbn, qnan_value, 1, qnan_value);
13106
13107   TEST_fi_f (scalbn, 0.8L, 4, 12.8L);
13108   TEST_fi_f (scalbn, -0.854375L, 5, -27.34L);
13109
13110   TEST_fi_f (scalbn, 1, 0L, 1);
13111
13112   TEST_fi_f (scalbn, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13113   TEST_fi_f (scalbn, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13114   TEST_fi_f (scalbn, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13115   TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13116   TEST_fi_f (scalbn, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13117   TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13118   TEST_fi_f (scalbn, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13119   TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13120
13121   END (scalbn);
13122 }
13123
13124
13125 static void
13126 scalbln_test (void)
13127 {
13128
13129   START (scalbln);
13130
13131   TEST_fl_f (scalbln, 0, 0, 0);
13132   TEST_fl_f (scalbln, minus_zero, 0, minus_zero);
13133
13134   TEST_fl_f (scalbln, plus_infty, 1, plus_infty);
13135   TEST_fl_f (scalbln, minus_infty, 1, minus_infty);
13136   TEST_fl_f (scalbln, qnan_value, 1, qnan_value);
13137
13138   TEST_fl_f (scalbln, 0.8L, 4, 12.8L);
13139   TEST_fl_f (scalbln, -0.854375L, 5, -27.34L);
13140
13141   TEST_fl_f (scalbln, 1, 0L, 1);
13142
13143   TEST_fl_f (scalbln, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13144   TEST_fl_f (scalbln, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13145   TEST_fl_f (scalbln, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13146   TEST_fl_f (scalbln, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13147   TEST_fl_f (scalbln, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13148   TEST_fl_f (scalbln, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13149   TEST_fl_f (scalbln, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13150   TEST_fl_f (scalbln, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13151
13152   TEST_fl_f (scalbln, 1, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13153   TEST_fl_f (scalbln, 1, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13154   TEST_fl_f (scalbln, max_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13155   TEST_fl_f (scalbln, max_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13156   TEST_fl_f (scalbln, min_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13157   TEST_fl_f (scalbln, min_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13158   TEST_fl_f (scalbln, min_value / 4, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13159   TEST_fl_f (scalbln, min_value / 4, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13160
13161 #if LONG_MAX >= 0x100000000
13162   TEST_fl_f (scalbln, 1, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13163   TEST_fl_f (scalbln, 1, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13164   TEST_fl_f (scalbln, max_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13165   TEST_fl_f (scalbln, max_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13166   TEST_fl_f (scalbln, min_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13167   TEST_fl_f (scalbln, min_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13168   TEST_fl_f (scalbln, min_value / 4, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13169   TEST_fl_f (scalbln, min_value / 4, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13170 #endif
13171
13172   END (scalbn);
13173 }
13174
13175
13176 static void
13177 signbit_test (void)
13178 {
13179   /* TODO: missing qNaN tests.  */
13180
13181   START (signbit);
13182
13183   TEST_f_b (signbit, 0, 0);
13184   TEST_f_b (signbit, minus_zero, 1);
13185   TEST_f_b (signbit, plus_infty, 0);
13186   TEST_f_b (signbit, minus_infty, 1);
13187
13188   /* signbit (x) != 0 for x < 0.  */
13189   TEST_f_b (signbit, -1, 1);
13190   /* signbit (x) == 0 for x >= 0.  */
13191   TEST_f_b (signbit, 1, 0);
13192
13193   END (signbit);
13194 }
13195
13196
13197 static const struct test_f_f_data sin_test_data[] =
13198   {
13199     START_DATA (sin),
13200     TEST_f_f (sin, 0, 0),
13201     TEST_f_f (sin, minus_zero, minus_zero),
13202     TEST_f_f (sin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13203     TEST_f_f (sin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13204     TEST_f_f (sin, qnan_value, qnan_value, ERRNO_UNCHANGED),
13205
13206     TEST_f_f (sin, M_PI_6l, 0.5),
13207     TEST_f_f (sin, -M_PI_6l, -0.5),
13208     TEST_f_f (sin, M_PI_2l, 1),
13209     TEST_f_f (sin, -M_PI_2l, -1),
13210     TEST_f_f (sin, 0.75L, 0.681638760023334166733241952779893935L),
13211
13212     TEST_f_f (sin, 0x1p65, -0.047183876212354673805106149805700013943218L),
13213     TEST_f_f (sin, -0x1p65, 0.047183876212354673805106149805700013943218L),
13214
13215     TEST_f_f (sin, 0x1.7f4134p+103, -6.6703229329788657073304190650534846045235e-08L),
13216
13217 #ifdef TEST_DOUBLE
13218     TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868),
13219     TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1),
13220 #endif
13221
13222 #ifndef TEST_FLOAT
13223     TEST_f_f (sin, 1e22, -0.8522008497671888017727058937530293682618L),
13224     TEST_f_f (sin, 0x1p1023, 0.5631277798508840134529434079444683477104L),
13225 #endif
13226
13227 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13228     TEST_f_f (sin, 0x1p16383L, 0.3893629985894208126948115852610595405563L),
13229 #endif
13230
13231     TEST_f_f (sin, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L),
13232     TEST_f_f (sin, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L),
13233     TEST_f_f (sin, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L),
13234     TEST_f_f (sin, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L),
13235     TEST_f_f (sin, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L),
13236     TEST_f_f (sin, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L),
13237     END_DATA (sin)
13238   };
13239
13240 static void
13241 sin_test (void)
13242 {
13243   errno = 0;
13244   FUNC(sin) (0);
13245   if (errno == ENOSYS)
13246     /* Function not implemented.  */
13247     return;
13248
13249   START (sin);
13250   RUN_TEST_LOOP_f_f (sin, sin_test_data, );
13251   END (sin);
13252 }
13253
13254
13255 static const struct test_f_f_data sin_tonearest_test_data[] =
13256   {
13257     START_DATA (sin_tonearest),
13258     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13259     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13260     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13261     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13262     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13263     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13264     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13265     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13266     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13267     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13268     END_DATA (sin_tonearest)
13269   };
13270
13271 static void
13272 sin_test_tonearest (void)
13273 {
13274   errno = 0;
13275   FUNC(sin) (0);
13276   if (errno == ENOSYS)
13277     /* Function not implemented.  */
13278     return;
13279
13280   START (sin_tonearest);
13281   RUN_TEST_LOOP_f_f (sin, sin_tonearest_test_data, FE_TONEAREST);
13282   END (sin_tonearest);
13283 }
13284
13285
13286 static const struct test_f_f_data sin_towardzero_test_data[] =
13287   {
13288     START_DATA (sin_towardzero),
13289     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13290     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13291     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13292     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13293     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13294     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13295     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13296     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13297     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13298     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13299     END_DATA (sin_towardzero)
13300   };
13301
13302 static void
13303 sin_test_towardzero (void)
13304 {
13305   errno = 0;
13306   FUNC(sin) (0);
13307   if (errno == ENOSYS)
13308     /* Function not implemented.  */
13309     return;
13310
13311   START (sin_towardzero);
13312   RUN_TEST_LOOP_f_f (sin, sin_towardzero_test_data, FE_TOWARDZERO);
13313   END (sin_towardzero);
13314 }
13315
13316
13317 static const struct test_f_f_data sin_downward_test_data[] =
13318   {
13319     START_DATA (sin_downward),
13320     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13321     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13322     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13323     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13324     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13325     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13326     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13327     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13328     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13329     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13330     END_DATA (sin_downward)
13331   };
13332
13333 static void
13334 sin_test_downward (void)
13335 {
13336   errno = 0;
13337   FUNC(sin) (0);
13338   if (errno == ENOSYS)
13339     /* Function not implemented.  */
13340     return;
13341
13342   START (sin_downward);
13343   RUN_TEST_LOOP_f_f (sin, sin_downward_test_data, FE_DOWNWARD);
13344   END (sin_downward);
13345 }
13346
13347
13348 static const struct test_f_f_data sin_upward_test_data[] =
13349   {
13350     START_DATA (sin_upward),
13351     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13352     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13353     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13354     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13355     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13356     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13357     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13358     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13359     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13360     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13361     END_DATA (sin_upward)
13362   };
13363
13364 static void
13365 sin_test_upward (void)
13366 {
13367   errno = 0;
13368   FUNC(sin) (0);
13369   if (errno == ENOSYS)
13370     /* Function not implemented.  */
13371     return;
13372
13373   START (sin_upward);
13374   RUN_TEST_LOOP_f_f (sin, sin_upward_test_data, FE_UPWARD);
13375   END (sin_upward);
13376 }
13377
13378
13379 static void
13380 sincos_test (void)
13381 {
13382   FLOAT sin_res, cos_res;
13383
13384   errno = 0;
13385   FUNC(sincos) (0, &sin_res, &cos_res);
13386   if (errno == ENOSYS)
13387     /* Function not implemented.  */
13388     return;
13389
13390   START (sincos);
13391
13392   /* sincos is treated differently because it returns void.  */
13393   TEST_extra (sincos, 0, 0, 1);
13394
13395   TEST_extra (sincos, minus_zero, minus_zero, 1);
13396   TEST_extra (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13397   TEST_extra (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13398   TEST_extra (sincos, qnan_value, qnan_value, qnan_value);
13399
13400   /* The value of M_PI_2l is never exactly PI/2, and therefore the
13401      answer is never exactly zero. The answer is equal to the error
13402      in rounding PI/2 for the type used.  Thus the answer is unique
13403      to each type.  */
13404 #ifdef TEST_FLOAT
13405   /* 32-bit float.  */
13406   TEST_extra (sincos, M_PI_2l, 1, -0x1.777a5cp-25L);
13407 #endif
13408 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
13409   /* 64-bit double or 64-bit long double.  */
13410   TEST_extra (sincos, M_PI_2l, 1, 0x1.1a62633145c07p-54L);
13411 #endif
13412 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
13413   /* 96-bit long double.  */
13414   TEST_extra (sincos, M_PI_2l, 1, -0xe.ce675d1fc8f8cbbp-69L);
13415 #endif
13416 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
13417   /* 128-bit IBM long double.  */
13418   TEST_extra (sincos, M_PI_2l, 1, 0x1.c1cd129024e088a67cc74020bcp-107L);
13419 #endif
13420 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
13421   /* 128-bit long double.  */
13422   TEST_extra (sincos, M_PI_2l, 1, 0x1.cd129024e088a67cc74020bbea64p-115L);
13423 #endif
13424
13425   TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L);
13426   TEST_extra (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5);
13427   TEST_extra (sincos, 0.75L, 0.681638760023334166733241952779893935L, 0.731688868873820886311838753000084544L);
13428
13429   TEST_extra (sincos, 0x1p65, -0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13430   TEST_extra (sincos, -0x1p65, 0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13431
13432 #ifdef TEST_DOUBLE
13433   TEST_extra (sincos, 0.80190127184058835, 0.71867942238767868, 0.69534156199418473);
13434 #endif
13435
13436 #ifndef TEST_FLOAT
13437   TEST_extra (sincos, 1e22, -0.8522008497671888017727058937530293682618L, 0.5232147853951389454975944733847094921409L);
13438   TEST_extra (sincos, 0x1p1023, 0.5631277798508840134529434079444683477104L, -0.826369834614147994500785680811743734805L);
13439 #endif
13440
13441 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13442   TEST_extra (sincos, 0x1p16383L, 0.3893629985894208126948115852610595405563L, 0.9210843909921906206874509522505756251609L);
13443 #endif
13444
13445   TEST_extra (sincos, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L, -9.25879022854837867303861764107414946730833e-01L);
13446   TEST_extra (sincos, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L, 7.81914638714960072263910298466369236613162e-01L);
13447   TEST_extra (sincos, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L, 9.98819362551949040703862043664101081064641e-01L);
13448   TEST_extra (sincos, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L, 8.53021039830304158051791467692161107353094e-01L);
13449   TEST_extra (sincos, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L, 8.68095904660550604334592502063501320395739e-01L);
13450   TEST_extra (sincos, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L, -1.65568979490578758865468278195361551113358e-01L);
13451
13452   END (sincos);
13453 }
13454
13455 static const struct test_f_f_data sinh_test_data[] =
13456   {
13457     START_DATA (sinh),
13458     TEST_f_f (sinh, 0, 0),
13459     TEST_f_f (sinh, minus_zero, minus_zero),
13460
13461 #ifndef TEST_INLINE
13462     TEST_f_f (sinh, plus_infty, plus_infty),
13463     TEST_f_f (sinh, minus_infty, minus_infty),
13464 #endif
13465     TEST_f_f (sinh, qnan_value, qnan_value),
13466
13467     TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L),
13468     TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L),
13469     END_DATA (sinh)
13470   };
13471
13472 static void
13473 sinh_test (void)
13474 {
13475   errno = 0;
13476   FUNC(sinh) (0.7L);
13477   if (errno == ENOSYS)
13478     /* Function not implemented.  */
13479     return;
13480
13481   START (sinh);
13482   RUN_TEST_LOOP_f_f (sinh, sinh_test_data, );
13483   END (sinh);
13484 }
13485
13486
13487 static const struct test_f_f_data sinh_tonearest_test_data[] =
13488   {
13489     START_DATA (sinh_tonearest),
13490     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13491     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13492     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13493     END_DATA (sinh_tonearest)
13494   };
13495
13496 static void
13497 sinh_test_tonearest (void)
13498 {
13499   errno = 0;
13500   FUNC(sinh) (0);
13501   if (errno == ENOSYS)
13502     /* Function not implemented.  */
13503     return;
13504
13505   START (sinh_tonearest);
13506   RUN_TEST_LOOP_f_f (sinh, sinh_tonearest_test_data, FE_TONEAREST);
13507   END (sinh_tonearest);
13508 }
13509
13510
13511 static const struct test_f_f_data sinh_towardzero_test_data[] =
13512   {
13513     START_DATA (sinh_towardzero),
13514     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13515     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13516     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13517     END_DATA (sinh_towardzero)
13518   };
13519
13520 static void
13521 sinh_test_towardzero (void)
13522 {
13523   errno = 0;
13524   FUNC(sinh) (0);
13525   if (errno == ENOSYS)
13526     /* Function not implemented.  */
13527     return;
13528
13529   START (sinh_towardzero);
13530   RUN_TEST_LOOP_f_f (sinh, sinh_towardzero_test_data, FE_TOWARDZERO);
13531   END (sinh_towardzero);
13532 }
13533
13534
13535 static const struct test_f_f_data sinh_downward_test_data[] =
13536   {
13537     START_DATA (sinh_downward),
13538     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13539     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13540     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13541     END_DATA (sinh_downward)
13542   };
13543
13544 static void
13545 sinh_test_downward (void)
13546 {
13547   errno = 0;
13548   FUNC(sinh) (0);
13549   if (errno == ENOSYS)
13550     /* Function not implemented.  */
13551     return;
13552
13553   START (sinh_downward);
13554   RUN_TEST_LOOP_f_f (sinh, sinh_downward_test_data, FE_DOWNWARD);
13555   END (sinh_downward);
13556 }
13557
13558
13559 static const struct test_f_f_data sinh_upward_test_data[] =
13560   {
13561     START_DATA (sinh_upward),
13562     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13563     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13564     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13565     END_DATA (sinh_upward)
13566   };
13567
13568 static void
13569 sinh_test_upward (void)
13570 {
13571   errno = 0;
13572   FUNC(sinh) (0);
13573   if (errno == ENOSYS)
13574     /* Function not implemented.  */
13575     return;
13576
13577   START (sinh_upward);
13578   RUN_TEST_LOOP_f_f (sinh, sinh_upward_test_data, FE_UPWARD);
13579   END (sinh_upward);
13580 }
13581
13582
13583 static const struct test_f_f_data sqrt_test_data[] =
13584   {
13585     START_DATA (sqrt),
13586     TEST_f_f (sqrt, 0, 0),
13587     TEST_f_f (sqrt, qnan_value, qnan_value),
13588     TEST_f_f (sqrt, plus_infty, plus_infty),
13589
13590     TEST_f_f (sqrt, minus_zero, minus_zero),
13591
13592     /* sqrt (x) == qNaN plus invalid exception for x < 0.  */
13593     TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION),
13594     TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION),
13595     TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION),
13596
13597     TEST_f_f (sqrt, 2209, 47),
13598     TEST_f_f (sqrt, 4, 2),
13599     TEST_f_f (sqrt, 2, M_SQRT2l),
13600     TEST_f_f (sqrt, 0.25, 0.5),
13601     TEST_f_f (sqrt, 6642.25, 81.5),
13602     TEST_f_f (sqrt, 15190.5625L, 123.25L),
13603     TEST_f_f (sqrt, 0.75L, 0.866025403784438646763723170752936183L),
13604     END_DATA (sqrt)
13605   };
13606
13607 static void
13608 sqrt_test (void)
13609 {
13610   errno = 0;
13611   FUNC(sqrt) (1);
13612   if (errno == ENOSYS)
13613     /* Function not implemented.  */
13614     return;
13615
13616   START (sqrt);
13617   RUN_TEST_LOOP_f_f (sqrt, sqrt_test_data, );
13618   END (sqrt);
13619 }
13620
13621
13622 static const struct test_f_f_data tan_test_data[] =
13623   {
13624     START_DATA (tan),
13625     TEST_f_f (tan, 0, 0),
13626     TEST_f_f (tan, minus_zero, minus_zero),
13627     TEST_f_f (tan, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13628     TEST_f_f (tan, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13629     TEST_f_f (tan, qnan_value, qnan_value, ERRNO_UNCHANGED),
13630
13631     TEST_f_f (tan, M_PI_4l, 1),
13632     TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L),
13633
13634     TEST_f_f (tan, 0x1p65, -0.0472364872359047946798414219288370688827L),
13635     TEST_f_f (tan, -0x1p65, 0.0472364872359047946798414219288370688827L),
13636
13637     TEST_f_f (tan, 0xc.9p-4, 0.9995162902115457818029468900654150261381L),
13638     TEST_f_f (tan, 0xc.908p-4, 0.9997603425502441410973077452249560802034L),
13639     TEST_f_f (tan, 0xc.90cp-4, 0.9998823910588060302788513970802357770031L),
13640     TEST_f_f (tan, 0xc.90ep-4, 0.9999434208994808753305784795924711152508L),
13641     TEST_f_f (tan, 0xc.90fp-4, 0.9999739372166156702433266059635165160515L),
13642     TEST_f_f (tan, 0xc.90f8p-4, 0.9999891957244072765118898375645469865764L),
13643     TEST_f_f (tan, 0xc.90fcp-4, 0.9999968250656122402859679132395522927393L),
13644     TEST_f_f (tan, 0xc.90fdp-4, 0.9999987324100083358016192309006353329444L),
13645     TEST_f_f (tan, 0xc.90fd8p-4, 0.9999996860835706212861509874451585282616L),
13646     TEST_f_f (tan, 0xc.90fdap-4, 0.9999999245021033010474530133665235922808L),
13647     TEST_f_f (tan, 0xc.ap-4, 1.0073556597407272165371804539701396631519L),
13648     TEST_f_f (tan, 0xc.98p-4, 1.0034282930863044654045449407466962736255L),
13649     TEST_f_f (tan, 0xc.94p-4, 1.0014703786820082237342656561856877993328L),
13650     TEST_f_f (tan, 0xc.92p-4, 1.0004928571392300571266638743539017593717L),
13651     TEST_f_f (tan, 0xc.91p-4, 1.0000044544650244953647966900221905361131L),
13652     TEST_f_f (tan, 0xc.90fep-4, 1.0000006397580424009014454926842136804016L),
13653     TEST_f_f (tan, 0xc.90fdcp-4, 1.0000001629206928242190327320047489394217L),
13654     TEST_f_f (tan, 0xc.90fdbp-4, 1.0000000437113909572052640953950483705005L),
13655
13656     TEST_f_f (tan, -0xc.9p-4, -0.9995162902115457818029468900654150261381L),
13657     TEST_f_f (tan, -0xc.908p-4, -0.9997603425502441410973077452249560802034L),
13658     TEST_f_f (tan, -0xc.90cp-4, -0.9998823910588060302788513970802357770031L),
13659     TEST_f_f (tan, -0xc.90ep-4, -0.9999434208994808753305784795924711152508L),
13660     TEST_f_f (tan, -0xc.90fp-4, -0.9999739372166156702433266059635165160515L),
13661     TEST_f_f (tan, -0xc.90f8p-4, -0.9999891957244072765118898375645469865764L),
13662     TEST_f_f (tan, -0xc.90fcp-4, -0.9999968250656122402859679132395522927393L),
13663     TEST_f_f (tan, -0xc.90fdp-4, -0.9999987324100083358016192309006353329444L),
13664     TEST_f_f (tan, -0xc.90fd8p-4, -0.9999996860835706212861509874451585282616L),
13665     TEST_f_f (tan, -0xc.90fdap-4, -0.9999999245021033010474530133665235922808L),
13666     TEST_f_f (tan, -0xc.ap-4, -1.0073556597407272165371804539701396631519L),
13667     TEST_f_f (tan, -0xc.98p-4, -1.0034282930863044654045449407466962736255L),
13668     TEST_f_f (tan, -0xc.94p-4, -1.0014703786820082237342656561856877993328L),
13669     TEST_f_f (tan, -0xc.92p-4, -1.0004928571392300571266638743539017593717L),
13670     TEST_f_f (tan, -0xc.91p-4, -1.0000044544650244953647966900221905361131L),
13671     TEST_f_f (tan, -0xc.90fep-4, -1.0000006397580424009014454926842136804016L),
13672     TEST_f_f (tan, -0xc.90fdcp-4, -1.0000001629206928242190327320047489394217L),
13673     TEST_f_f (tan, -0xc.90fdbp-4, -1.0000000437113909572052640953950483705005L),
13674
13675 #ifndef TEST_FLOAT
13676     TEST_f_f (tan, 1e22, -1.628778225606898878549375936939548513545L),
13677     TEST_f_f (tan, 0x1p1023, -0.6814476476066215012854144040167365190368L),
13678 #endif
13679
13680 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13681     TEST_f_f (tan, 0x1p16383L, 0.422722393732022337800504160054440141575L),
13682 #endif
13683     END_DATA (tan)
13684   };
13685
13686 static void
13687 tan_test (void)
13688 {
13689   errno = 0;
13690   FUNC(tan) (0);
13691   if (errno == ENOSYS)
13692     /* Function not implemented.  */
13693     return;
13694
13695   START (tan);
13696   RUN_TEST_LOOP_f_f (tan, tan_test_data, );
13697   END (tan);
13698 }
13699
13700
13701 static const struct test_f_f_data tan_tonearest_test_data[] =
13702   {
13703     START_DATA (tan_tonearest),
13704     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13705     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13706     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13707     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13708     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13709     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13710     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13711     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13712     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13713     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13714     END_DATA (tan_tonearest)
13715   };
13716
13717 static void
13718 tan_test_tonearest (void)
13719 {
13720   errno = 0;
13721   FUNC(tan) (0);
13722   if (errno == ENOSYS)
13723     /* Function not implemented.  */
13724     return;
13725
13726   START (tan_tonearest);
13727   RUN_TEST_LOOP_f_f (tan, tan_tonearest_test_data, FE_TONEAREST);
13728   END (tan_tonearest);
13729 }
13730
13731
13732 static const struct test_f_f_data tan_towardzero_test_data[] =
13733   {
13734     START_DATA (tan_towardzero),
13735     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13736     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13737     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13738     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13739     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13740     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13741     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13742     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13743     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13744     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13745     END_DATA (tan_towardzero)
13746   };
13747
13748 static void
13749 tan_test_towardzero (void)
13750 {
13751   errno = 0;
13752   FUNC(tan) (0);
13753   if (errno == ENOSYS)
13754     /* Function not implemented.  */
13755     return;
13756
13757   START (tan_towardzero);
13758   RUN_TEST_LOOP_f_f (tan, tan_towardzero_test_data, FE_TOWARDZERO);
13759   END (tan_towardzero);
13760 }
13761
13762
13763 static const struct test_f_f_data tan_downward_test_data[] =
13764   {
13765     START_DATA (tan_downward),
13766     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13767     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13768     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13769     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13770     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13771     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13772     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13773     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13774     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13775     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13776     END_DATA (tan_downward)
13777   };
13778
13779 static void
13780 tan_test_downward (void)
13781 {
13782   errno = 0;
13783   FUNC(tan) (0);
13784   if (errno == ENOSYS)
13785     /* Function not implemented.  */
13786     return;
13787
13788   START (tan_downward);
13789   RUN_TEST_LOOP_f_f (tan, tan_downward_test_data, FE_DOWNWARD);
13790   END (tan_downward);
13791 }
13792
13793
13794 static const struct test_f_f_data tan_upward_test_data[] =
13795   {
13796     START_DATA (tan_upward),
13797     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13798     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13799     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13800     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13801     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13802     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13803     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13804     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13805     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13806     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13807     END_DATA (tan_upward)
13808   };
13809
13810 static void
13811 tan_test_upward (void)
13812 {
13813   errno = 0;
13814   FUNC(tan) (0);
13815   if (errno == ENOSYS)
13816     /* Function not implemented.  */
13817     return;
13818
13819   START (tan_upward);
13820   RUN_TEST_LOOP_f_f (tan, tan_upward_test_data, FE_UPWARD);
13821   END (tan_upward);
13822 }
13823
13824
13825 static const struct test_f_f_data tanh_test_data[] =
13826   {
13827     START_DATA (tanh),
13828     TEST_f_f (tanh, 0, 0),
13829     TEST_f_f (tanh, minus_zero, minus_zero),
13830
13831 #ifndef TEST_INLINE
13832     TEST_f_f (tanh, plus_infty, 1),
13833     TEST_f_f (tanh, minus_infty, -1),
13834 #endif
13835     TEST_f_f (tanh, qnan_value, qnan_value),
13836
13837     TEST_f_f (tanh, 0.75L, 0.635148952387287319214434357312496495L),
13838     TEST_f_f (tanh, -0.75L, -0.635148952387287319214434357312496495L),
13839
13840     TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L),
13841     TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L),
13842
13843     /* 2^-57  */
13844     TEST_f_f (tanh, 0x1p-57L, 6.938893903907228377647697925567626953125e-18L),
13845     END_DATA (tanh)
13846   };
13847
13848 static void
13849 tanh_test (void)
13850 {
13851   errno = 0;
13852   FUNC(tanh) (0.7L);
13853   if (errno == ENOSYS)
13854     /* Function not implemented.  */
13855     return;
13856
13857   START (tanh);
13858   RUN_TEST_LOOP_f_f (tanh, tanh_test_data, );
13859   END (tanh);
13860 }
13861
13862 static const struct test_f_f_data tgamma_test_data[] =
13863   {
13864     START_DATA (tgamma),
13865     TEST_f_f (tgamma, plus_infty, plus_infty),
13866     TEST_f_f (tgamma, max_value, plus_infty, OVERFLOW_EXCEPTION),
13867     TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
13868     TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
13869     /* tgamma (x) == qNaN plus invalid exception for integer x <= 0.  */
13870     TEST_f_f (tgamma, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13871     TEST_f_f (tgamma, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13872     TEST_f_f (tgamma, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13873     TEST_f_f (tgamma, qnan_value, qnan_value),
13874
13875     TEST_f_f (tgamma, 0.5, M_SQRT_PIl),
13876     TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl),
13877
13878     TEST_f_f (tgamma, 1, 1),
13879     TEST_f_f (tgamma, 2, 1),
13880     TEST_f_f (tgamma, 3, 2),
13881     TEST_f_f (tgamma, 4, 6),
13882     TEST_f_f (tgamma, 5, 24),
13883     TEST_f_f (tgamma, 6, 120),
13884     TEST_f_f (tgamma, 7, 720),
13885     TEST_f_f (tgamma, 8, 5040),
13886     TEST_f_f (tgamma, 9,  40320),
13887     TEST_f_f (tgamma, 10, 362880),
13888
13889     TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L),
13890     TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L),
13891
13892     TEST_f_f (tgamma, 1.5L, 8.8622692545275801364908374167057259139877e-01L),
13893     TEST_f_f (tgamma, 2.5L, 1.3293403881791370204736256125058588870982e+00L),
13894     TEST_f_f (tgamma, 3.5L, 3.3233509704478425511840640312646472177454e+00L),
13895     TEST_f_f (tgamma, 4.5L, 1.1631728396567448929144224109426265262109e+01L),
13896     TEST_f_f (tgamma, 5.5L, 5.2342777784553520181149008492418193679490e+01L),
13897     TEST_f_f (tgamma, 6.5L, 2.8788527781504436099631954670830006523720e+02L),
13898     TEST_f_f (tgamma, 7.5L, 1.8712543057977883464760770536039504240418e+03L),
13899     TEST_f_f (tgamma, 8.5L, 1.4034407293483412598570577902029628180313e+04L),
13900     TEST_f_f (tgamma, 9.5L, 1.1929246199460900708784991216725183953266e+05L),
13901     TEST_f_f (tgamma, -1.5L, 2.3632718012073547030642233111215269103967e+00L),
13902     TEST_f_f (tgamma, -2.5L, -9.4530872048294188122568932444861076415869e-01L),
13903     TEST_f_f (tgamma, -3.5L, 2.7008820585226910892162552127103164690248e-01L),
13904     TEST_f_f (tgamma, -4.5L, -6.0019601300504246427027893615784810422774e-02L),
13905     TEST_f_f (tgamma, -5.5L, 1.0912654781909862986732344293779056440504e-02L),
13906     TEST_f_f (tgamma, -6.5L, -1.6788699664476712287280529682737009908468e-03L),
13907     TEST_f_f (tgamma, -7.5L, 2.2384932885968949716374039576982679877958e-04L),
13908     TEST_f_f (tgamma, -8.5L, -2.6335215159963470254557693619979623385833e-05L),
13909     TEST_f_f (tgamma, -9.5L, 2.7721279115751021320587045915768024616666e-06L),
13910     TEST_f_f (tgamma, 0x1p-24L, 1.6777215422784394050795179874582764575261e+07L),
13911     TEST_f_f (tgamma, -0x1p-24L, -1.6777216577215723853867349114260580375249e+07L),
13912     TEST_f_f (tgamma, 0x1p-53L, 9.0071992547409914227843350984672492007618e+15L),
13913     TEST_f_f (tgamma, -0x1p-53L, -9.0071992547409925772156649015329704137860e+15L),
13914     TEST_f_f (tgamma, 0x1p-64L, 1.8446744073709551615422784335098467139447e+19L),
13915     TEST_f_f (tgamma, -0x1p-64L, -1.8446744073709551616577215664901532860660e+19L),
13916     TEST_f_f (tgamma, 0x1p-106L, 8.1129638414606681695789005144063422784335e+31L),
13917     TEST_f_f (tgamma, -0x1p-106L, -8.1129638414606681695789005144064577215665e+31L),
13918     TEST_f_f (tgamma, 0x1p-113L, 1.0384593717069655257060992658440191422784e+34L),
13919     TEST_f_f (tgamma, -0x1p-113L, -1.0384593717069655257060992658440192577216e+34L),
13920     TEST_f_f (tgamma, 0x1p-127L, 1.7014118346046923173168730371588410572742e+38L),
13921     TEST_f_f (tgamma, -0x1p-127L, -1.7014118346046923173168730371588410572858e+38L),
13922 #ifdef TEST_FLOAT
13923     TEST_f_f (tgamma, 0x1p-128L, plus_infty, OVERFLOW_EXCEPTION),
13924     TEST_f_f (tgamma, -0x1p-128L, minus_infty, OVERFLOW_EXCEPTION),
13925     TEST_f_f (tgamma, 0x1p-149L, plus_infty, OVERFLOW_EXCEPTION),
13926     TEST_f_f (tgamma, -0x1p-149L, minus_infty, OVERFLOW_EXCEPTION),
13927 #else
13928     TEST_f_f (tgamma, 0x1p-128L, 3.4028236692093846346337460743176821145542e+38L),
13929     TEST_f_f (tgamma, -0x1p-128L, -3.4028236692093846346337460743176821145658e+38L),
13930     TEST_f_f (tgamma, 0x1p-149L, 7.1362384635297994052914298472474756819137e+44L),
13931     TEST_f_f (tgamma, -0x1p-149L, -7.1362384635297994052914298472474756819137e+44L),
13932 #endif
13933 #ifndef TEST_FLOAT
13934     TEST_f_f (tgamma, 0x1p-1023L, 8.9884656743115795386465259539451236680899e+307L),
13935     TEST_f_f (tgamma, -0x1p-1023L, -8.9884656743115795386465259539451236680899e+307L),
13936 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
13937     TEST_f_f (tgamma, 0x1p-1024L, plus_infty, OVERFLOW_EXCEPTION),
13938     TEST_f_f (tgamma, -0x1p-1024L, minus_infty, OVERFLOW_EXCEPTION),
13939     TEST_f_f (tgamma, 0x1p-1074L, plus_infty, OVERFLOW_EXCEPTION),
13940     TEST_f_f (tgamma, -0x1p-1074L, minus_infty, OVERFLOW_EXCEPTION),
13941 # else
13942     TEST_f_f (tgamma, 0x1p-1024L, 1.7976931348623159077293051907890247336180e+308L),
13943     TEST_f_f (tgamma, -0x1p-1024L, -1.7976931348623159077293051907890247336180e+308L),
13944     TEST_f_f (tgamma, 0x1p-1074L, 2.0240225330731061835249534671891730704956e+323L),
13945     TEST_f_f (tgamma, -0x1p-1074L, -2.0240225330731061835249534671891730704956e+323L),
13946 # endif
13947 #endif
13948 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
13949     TEST_f_f (tgamma, 0x1p-16383L, 5.9486574767861588254287966331400356538172e+4931L),
13950     TEST_f_f (tgamma, -0x1p-16383L, -5.9486574767861588254287966331400356538172e+4931L),
13951     TEST_f_f (tgamma, 0x1p-16384L, plus_infty, OVERFLOW_EXCEPTION),
13952     TEST_f_f (tgamma, -0x1p-16384L, minus_infty, OVERFLOW_EXCEPTION),
13953     TEST_f_f (tgamma, 0x1p-16445L, plus_infty, OVERFLOW_EXCEPTION),
13954     TEST_f_f (tgamma, -0x1p-16445L, minus_infty, OVERFLOW_EXCEPTION),
13955 # if LDBL_MANT_DIG >= 113
13956     TEST_f_f (tgamma, 0x1p-16494L, plus_infty, OVERFLOW_EXCEPTION),
13957     TEST_f_f (tgamma, -0x1p-16494L, minus_infty, OVERFLOW_EXCEPTION),
13958 # endif
13959 #endif
13960     TEST_f_f (tgamma, 0x8.00001p0L, 5.0400096882277802019946778420223050233915e+03L),
13961     TEST_f_f (tgamma, 0x7.fffff8p0L, 5.0399951558933225045148935487583089307135e+03L),
13962     TEST_f_f (tgamma, 0x7.000008p0L, 7.2000064296977505705636258629805621178587e+02L),
13963     TEST_f_f (tgamma, 0x6.fffff8p0L, 7.1999935703082425988147448928288557689866e+02L),
13964     TEST_f_f (tgamma, 0x6.000008p0L, 1.2000009762487825358530770343720418162783e+02L),
13965     TEST_f_f (tgamma, 0x5.fffff8p0L, 1.1999990237520611552119807476573441975106e+02L),
13966     TEST_f_f (tgamma, 0x5.000008p0L, 2.4000017236155647574166073485628713443799e+01L),
13967     TEST_f_f (tgamma, 0x4.fffff8p0L, 2.3999982763857938712639837029547357501709e+01L),
13968     TEST_f_f (tgamma, 0x4.000008p0L, 6.0000035937827461765660468073471093546129e+00L),
13969     TEST_f_f (tgamma, 0x3.fffffcp0L, 5.9999982031095793171233994481968816873643e+00L),
13970     TEST_f_f (tgamma, 0x3.000004p0L, 2.0000004400179308360529417942462250547999e+00L),
13971     TEST_f_f (tgamma, 0x2.fffffcp0L, 1.9999995599822108706107786027549565954046e+00L),
13972     TEST_f_f (tgamma, 0x2.000004p0L, 1.0000001007996638509889062631687945799175e+00L),
13973     TEST_f_f (tgamma, 0x1.fffffep0L, 9.9999994960018563231526611134590489120697e-01L),
13974     TEST_f_f (tgamma, 0x1.000002p0L, 9.9999993119054472483596471908942669644327e-01L),
13975     TEST_f_f (tgamma, 0x0.ffffffp0L, 1.0000000344047381790797322460568297132998e+00L),
13976     TEST_f_f (tgamma, -0x0.ffffffp0L, -1.6777216422784419250710305882992376932423e+07L),
13977     TEST_f_f (tgamma, -0x1.000002p0L, 8.3886075772158332060084424806449513922858e+06L),
13978     TEST_f_f (tgamma, -0x1.fffffep0L, 4.1943044613922792026014320172298377770578e+06L),
13979     TEST_f_f (tgamma, -0x2.000004p0L, -2.0971515386080557574407223895988378776747e+06L),
13980     TEST_f_f (tgamma, -0x2.fffffcp0L, -6.9905087601970247876992248591045142913324e+05L),
13981     TEST_f_f (tgamma, -0x3.000004p0L, 6.9905045731381300146131914617735687322025e+05L),
13982     TEST_f_f (tgamma, -0x3.fffffcp0L, 1.7476272942159602684441970627092458855771e+05L),
13983     TEST_f_f (tgamma, -0x4.000008p0L, -8.7381270578483499672965708923121931082305e+04L),
13984     TEST_f_f (tgamma, -0x4.fffff8p0L, -1.7476280884325863043793087474680780379554e+04L),
13985     TEST_f_f (tgamma, -0x5.000008p0L, 1.7476252449031389167286893378510439443844e+04L),
13986     TEST_f_f (tgamma, -0x5.fffff8p0L, 2.9127137122026653716311560165769071985443e+03L),
13987     TEST_f_f (tgamma, -0x6.000008p0L, -2.9127085100239567622341538102130981196910e+03L),
13988     TEST_f_f (tgamma, -0x6.fffff8p0L, -4.1610198723079349791939054365613377035519e+02L),
13989     TEST_f_f (tgamma, -0x7.000008p0L, 4.1610118737306415004517215226199741948733e+02L),
13990     TEST_f_f (tgamma, -0x7.fffff8p0L, 5.2012751504050764429534086402871289946986e+01L),
13991     TEST_f_f (tgamma, -0x8.00001p0L, -2.6006296115134418896533598545925084576702e+01L),
13992     TEST_f_f (tgamma, -0x9.fffffp0L, 2.8896008370721717567612135720915723136310e-01L),
13993     TEST_f_f (tgamma, -0xa.00001p0L, -2.8895878754728051776830454190076999107021e-01L),
13994     TEST_f_f (tgamma, -0x13.ffffep0L, 2.1550026214525536756224040483579183652119e-13L),
13995     TEST_f_f (tgamma, -0x14.00002p0L, -2.1549777908265594916405421768142757507179e-13L),
13996     TEST_f_f (tgamma, -0x1d.ffffep0L, 1.9765721589464867957912772592816027583176e-27L),
13997     TEST_f_f (tgamma, -0x1e.00002p0L, -1.9765463890341964384070157599286498212650e-27L),
13998     TEST_f_f (tgamma, -0x27.ffffcp0L, 3.2129279441390812141195076945616975790225e-43L, UNDERFLOW_EXCEPTION_FLOAT),
13999     TEST_f_f (tgamma, -0x28.00004p0L, -3.2128372159115252365699015758097981155793e-43L, UNDERFLOW_EXCEPTION_FLOAT),
14000     TEST_f_f (tgamma, -0x28.ffffcp0L, -7.8364103489619817539676737414096652170685e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14001     TEST_f_f (tgamma, -0x29.00004p0L, 7.8361876024016854597745353972619195760515e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14002 #ifdef TEST_FLOAT
14003     TEST_f_f (tgamma, -0x29.ffffcp0L, plus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14004     TEST_f_f (tgamma, -0x2a.00004p0L, minus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14005 #else
14006     TEST_f_f (tgamma, -0x29.ffffcp0L, 1.8658121573125798145204120066590953505132e-46L),
14007     TEST_f_f (tgamma, -0x2a.00004p0L, -1.8657587834931410688246126853566488626385e-46L),
14008 #endif
14009 #ifndef TEST_FLOAT
14010     TEST_f_f (tgamma, 0x8.0000000000008p0L, 5.0400000000000180457125667322294144477136e+03L),
14011     TEST_f_f (tgamma, 0x7.ffffffffffffcp0L, 5.0399999999999909771437166339103165198442e+03L),
14012     TEST_f_f (tgamma, 0x7.0000000000004p0L, 7.2000000000000119762397445457359071259652e+02L),
14013     TEST_f_f (tgamma, 0x6.ffffffffffffcp0L, 7.1999999999999880237602554542848858572672e+02L),
14014     TEST_f_f (tgamma, 0x6.0000000000004p0L, 1.2000000000000018184042734842640022086408e+02L),
14015     TEST_f_f (tgamma, 0x5.ffffffffffffcp0L, 1.1999999999999981815957265157389249327533e+02L),
14016     TEST_f_f (tgamma, 0x5.0000000000004p0L, 2.4000000000000032104829055124673225982803e+01L),
14017     TEST_f_f (tgamma, 0x4.ffffffffffffcp0L, 2.3999999999999967895170944875373910918544e+01L),
14018     TEST_f_f (tgamma, 0x4.0000000000004p0L, 6.0000000000000066939396342309789716341613e+00L),
14019     TEST_f_f (tgamma, 0x3.ffffffffffffep0L, 5.9999999999999966530301828845138185025345e+00L),
14020     TEST_f_f (tgamma, 0x3.0000000000002p0L, 2.0000000000000008195971324717875960213536e+00L),
14021     TEST_f_f (tgamma, 0x2.ffffffffffffep0L, 1.9999999999999991804028675282128956223990e+00L),
14022     TEST_f_f (tgamma, 0x2.0000000000002p0L, 1.0000000000000001877539613108624482361963e+00L),
14023     TEST_f_f (tgamma, 0x1.fffffffffffffp0L, 9.9999999999999990612301934456883679778984e-01L),
14024     TEST_f_f (tgamma, 0x1.0000000000001p0L, 9.9999999999999987183237573039992418700531e-01L),
14025     TEST_f_f (tgamma, 0x0.fffffffffffff8p0L, 1.0000000000000000640838121348000744796665e+00L),
14026     TEST_f_f (tgamma, -0x0.fffffffffffff8p0L, -9.0071992547409924227843350984672961392521e+15L),
14027     TEST_f_f (tgamma, -0x1.0000000000001p0L, 4.5035996273704955772156649015331740980405e+15L),
14028     TEST_f_f (tgamma, -0x1.fffffffffffffp0L, 2.2517998136852484613921675492337776673289e+15L),
14029     TEST_f_f (tgamma, -0x2.0000000000002p0L, -1.1258999068426235386078324507668462444260e+15L),
14030     TEST_f_f (tgamma, -0x2.ffffffffffffep0L, -3.7529996894754154268627807196691509198813e+14L),
14031     TEST_f_f (tgamma, -0x3.0000000000002p0L, 3.7529996894754112398038859470009084971438e+14L),
14032     TEST_f_f (tgamma, -0x3.ffffffffffffep0L, 9.3824992236885396088236184658402406857503e+13L),
14033     TEST_f_f (tgamma, -0x4.0000000000004p0L, -4.6912496118442603911763815341745722862351e+13L),
14034     TEST_f_f (tgamma, -0x4.ffffffffffffcp0L, -9.3824992236885475509805702650262155809819e+12L),
14035     TEST_f_f (tgamma, -0x5.0000000000004p0L, 9.3824992236885191156860964016850034672946e+12L),
14036     TEST_f_f (tgamma, -0x5.ffffffffffffcp0L, 1.5637498706147581566449098589862357835505e+12L),
14037     TEST_f_f (tgamma, -0x6.0000000000004p0L, -1.5637498706147529544662012521330708016396e+12L),
14038     TEST_f_f (tgamma, -0x6.ffffffffffffcp0L, -2.2339283865925119357965832452642909859289e+11L),
14039     TEST_f_f (tgamma, -0x7.0000000000004p0L, 2.2339283865925039372192897706214475877342e+11L),
14040     TEST_f_f (tgamma, -0x7.ffffffffffffcp0L, 2.7924104832406402297655703264222230055898e+10L),
14041     TEST_f_f (tgamma, -0x8.0000000000008p0L, -1.3962052416203121511868106259843527348026e+10L),
14042     TEST_f_f (tgamma, -0x9.ffffffffffff8p0L, 1.5513391573559147700413058496716749249803e+08L),
14043     TEST_f_f (tgamma, -0xa.0000000000008p0L, -1.5513391573559018084419393002828541166901e+08L),
14044     TEST_f_f (tgamma, -0x13.ffffffffffffp0L, 1.1569515572952029402736625857313236848570e-04L),
14045     TEST_f_f (tgamma, -0x14.000000000001p0L, -1.1569515572951781096476686854873801225397e-04L),
14046     TEST_f_f (tgamma, -0x1d.ffffffffffffp0L, 1.0611571800204311628217068863959963842891e-18L),
14047     TEST_f_f (tgamma, -0x1e.000000000001p0L, -1.0611571800204053929094168642022073530425e-18L),
14048     TEST_f_f (tgamma, -0x27.fffffffffffep0L, 1.7249032006742266376460389310340465554361e-34L),
14049     TEST_f_f (tgamma, -0x28.000000000002p0L, -1.7249032006741359094184881234822934593822e-34L),
14050     TEST_f_f (tgamma, -0x28.fffffffffffep0L, -4.2070809772542120404320040128839297118648e-36L),
14051     TEST_f_f (tgamma, -0x29.000000000002p0L, 4.2070809772539892938717205103652583609422e-36L),
14052     TEST_f_f (tgamma, -0x29.fffffffffffep0L, 1.0016859469652887505173040814397197718981e-37L),
14053     TEST_f_f (tgamma, -0x2a.000000000002p0L, -1.0016859469652353766978684241048308120274e-37L),
14054     TEST_f_f (tgamma, -0x31.fffffffffffep0L, 4.6273774273632946947805289899230181990085e-51L),
14055     TEST_f_f (tgamma, -0x32.000000000002p0L, -4.6273774273630367887073532197576655720178e-51L),
14056     TEST_f_f (tgamma, -0x63.fffffffffffcp0L, 7.5400833348840965463348754984345825364294e-145L),
14057     TEST_f_f (tgamma, -0x64.000000000004p0L, -7.5400833348831085791638490135462230991587e-145L),
14058     TEST_f_f (tgamma, -0x95.fffffffffff8p0L, 6.1582369322723207086020016423767264008839e-250L),
14059     TEST_f_f (tgamma, -0x96.000000000008p0L, -6.1582369322705655439003240743176243138734e-250L),
14060     TEST_f_f (tgamma, -0xb4.fffffffffff8p0L, -9.6760879059917574597728750098636253931457e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14061     TEST_f_f (tgamma, -0xb5.000000000008p0L, 9.6760879059888966544677044221698800670218e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14062     TEST_f_f (tgamma, -0xb5.fffffffffff8p0L, 5.3165318164789884455066481673086605454904e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14063     TEST_f_f (tgamma, -0xb6.000000000008p0L, -5.3165318164774149139661976747137185876909e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14064     TEST_f_f (tgamma, -0xb6.fffffffffff8p0L, -2.9052086428846935908287469917922960610289e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14065     TEST_f_f (tgamma, -0xb7.000000000008p0L, 2.9052086428838328351126988236541632950925e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14066 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14067     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14068     TEST_f_f (tgamma, -0xb8.000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14069 # else
14070     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, 1.5789177406982032823826953250736039527543e-325L),
14071     TEST_f_f (tgamma, -0xb8.000000000008p0L, -1.5789177406977349925854817486109369828857e-325L),
14072 # endif
14073 #endif
14074 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14075     TEST_f_f (tgamma, 0x8.00000000000000000000000004p0L, 5.0400000000000000000000000000020034765587e+03L),
14076     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffep0L, 5.0399999999999999999999999999989982617206e+03L),
14077     TEST_f_f (tgamma, 0x7.00000000000000000000000002p0L, 7.2000000000000000000000000000013296297113e+02L),
14078     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffep0L, 7.1999999999999999999999999999986703702887e+02L),
14079     TEST_f_f (tgamma, 0x6.00000000000000000000000002p0L, 1.2000000000000000000000000000002018834292e+02L),
14080     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffep0L, 1.1999999999999999999999999999997981165708e+02L),
14081     TEST_f_f (tgamma, 0x5.00000000000000000000000002p0L, 2.4000000000000000000000000000003564352042e+01L),
14082     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffep0L, 2.3999999999999999999999999999996435647958e+01L),
14083     TEST_f_f (tgamma, 0x4.00000000000000000000000002p0L, 6.0000000000000000000000000000007431765907e+00L),
14084     TEST_f_f (tgamma, 0x3.ffffffffffffffffffffffffffp0L, 5.9999999999999999999999999999996284117046e+00L),
14085     TEST_f_f (tgamma, 0x3.00000000000000000000000001p0L, 2.0000000000000000000000000000000909935607e+00L),
14086     TEST_f_f (tgamma, 0x2.ffffffffffffffffffffffffffp0L, 1.9999999999999999999999999999999090064393e+00L),
14087     TEST_f_f (tgamma, 0x2.00000000000000000000000001p0L, 1.0000000000000000000000000000000208448771e+00L),
14088     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffff8p0L, 9.9999999999999999999999999999998957756146e-01L),
14089     TEST_f_f (tgamma, 0x1.000000000000000000000000008p0L, 9.9999999999999999999999999999998577053525e-01L),
14090     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffcp0L, 1.0000000000000000000000000000000071147324e+00L),
14091     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffcp0L, -8.1129638414606681695789005144064422784335e+31L),
14092     TEST_f_f (tgamma, -0x1.000000000000000000000000008p0L, 4.0564819207303340847894502572031577215665e+31L),
14093     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffff8p0L, 2.0282409603651670423947251286016461392168e+31L),
14094     TEST_f_f (tgamma, -0x2.00000000000000000000000001p0L, -1.0141204801825835211973625643007538607832e+31L),
14095     TEST_f_f (tgamma, -0x2.ffffffffffffffffffffffffffp0L, -3.3804016006086117373245418810028760196114e+30L),
14096     TEST_f_f (tgamma, -0x3.00000000000000000000000001p0L, 3.3804016006086117373245418810024573137219e+30L),
14097     TEST_f_f (tgamma, -0x3.ffffffffffffffffffffffffffp0L, 8.4510040015215293433113547025072942156952e+29L),
14098     TEST_f_f (tgamma, -0x4.00000000000000000000000002p0L, -4.2255020007607646716556773512527057843048e+29L),
14099     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffep0L, -8.4510040015215293433113547025080884313904e+28L),
14100     TEST_f_f (tgamma, -0x5.00000000000000000000000002p0L, 8.4510040015215293433113547025052449019430e+28L),
14101     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffep0L, 1.4085006669202548905518924504180378867132e+28L),
14102     TEST_f_f (tgamma, -0x6.00000000000000000000000002p0L, -1.4085006669202548905518924504175176688423e+28L),
14103     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffep0L, -2.0121438098860784150741320720257967542615e+27L),
14104     TEST_f_f (tgamma, -0x7.00000000000000000000000002p0L, 2.0121438098860784150741320720249968965322e+27L),
14105     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffep0L, 2.5151797623575980188426650900322769448110e+26L),
14106     TEST_f_f (tgamma, -0x8.00000000000000000000000004p0L, -1.2575898811787990094213325450153421028080e+26L),
14107     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffcp0L, 1.3973220901986655660237028277960625420495e+24L),
14108     TEST_f_f (tgamma, -0xa.00000000000000000000000004p0L, -1.3973220901986655660237028277947663821128e+24L),
14109     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffff8p0L, 1.0420893204640670202556853709074896123293e+12L),
14110     TEST_f_f (tgamma, -0x14.00000000000000000000000008p0L, -1.0420893204640670202556853709050065497299e+12L),
14111     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffff8p0L, 9.5580541610429641982963434151488827190079e-03L),
14112     TEST_f_f (tgamma, -0x1e.00000000000000000000000008p0L, -9.5580541610429641982963434151231128067179e-03L),
14113     TEST_f_f (tgamma, -0x27.fffffffffffffffffffffffffp0L, 1.5536546823612837336494536911280147806523e-18L),
14114     TEST_f_f (tgamma, -0x28.0000000000000000000000001p0L, -1.5536546823612837336494536911189419578973e-18L),
14115     TEST_f_f (tgamma, -0x28.fffffffffffffffffffffffffp0L, -3.7894016642958139845108626612879138384405e-20L),
14116     TEST_f_f (tgamma, -0x29.0000000000000000000000001p0L, 3.7894016642958139845108626612656391824122e-20L),
14117     TEST_f_f (tgamma, -0x29.fffffffffffffffffffffffffp0L, 9.0223849149900332964544349078285357440663e-22L),
14118     TEST_f_f (tgamma, -0x2a.0000000000000000000000001p0L, -9.0223849149900332964544349077751619246306e-22L),
14119     TEST_f_f (tgamma, -0x31.fffffffffffffffffffffffffp0L, 4.1679710515150795310771069868348482819424e-35L),
14120     TEST_f_f (tgamma, -0x32.0000000000000000000000001p0L, -4.1679710515150795310771069868090576746248e-35L),
14121     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffep0L, 6.7915032994648558610510614163560656864280e-129L),
14122     TEST_f_f (tgamma, -0x64.0000000000000000000000002p0L, -6.7915032994648558610510614162572689693253e-129L),
14123     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffcp0L, 5.5468467106873795353190582463444660395353e-234L),
14124     TEST_f_f (tgamma, -0x96.0000000000000000000000004p0L, -5.5468467106873795353190582461689495693675e-234L),
14125     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffcp0L, -8.7154451775644399729745472278589884205029e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14126     TEST_f_f (tgamma, -0xb5.0000000000000000000000004p0L, 8.7154451775644399729745472275729078899858e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14127     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffcp0L, 4.7887061415189230620739270482742524864974e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14128     TEST_f_f (tgamma, -0xb6.0000000000000000000000004p0L, -4.7887061415189230620739270481168993324524e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14129     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffcp0L, -2.6167793123054224382917634143575601407067e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14130     TEST_f_f (tgamma, -0xb7.0000000000000000000000004p0L, 2.6167793123054224382917634142714845691019e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14131     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffcp0L, 1.4221626697312078468976975078030462044826e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14132     TEST_f_f (tgamma, -0xb8.0000000000000000000000004p0L, -1.4221626697312078468976975077562172247612e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14133     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffcp0L, 1.1756150745511026776007338998283058108448e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14134     TEST_f_f (tgamma, -0xbc.0000000000000000000000004p0L, -1.1756150745511026776007338997894360215107e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14135     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffcp0L, -6.2201855796354639026493857133773832713743e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14136     TEST_f_f (tgamma, -0xbd.0000000000000000000000004p0L, 6.2201855796354639026493857131715153125175e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14137     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffcp0L, 3.2737818840186652119207293228302560914295e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14138     TEST_f_f (tgamma, -0xbe.0000000000000000000000004p0L, -3.2737818840186652119207293227217957948294e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14139 # if LDBL_MAX_EXP <= 1024
14140     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14141     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14142 # else
14143     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, -1.7140219288055838805867692789687487834686e-325L),
14144     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, 1.7140219288055838805867692789119066543632e-325L),
14145 # endif
14146 #endif
14147 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14148     TEST_f_f (tgamma, 0x8.000000000000001p0L, 5.0400000000000000088113830892247051102283e+03L),
14149     TEST_f_f (tgamma, 0x7.fffffffffffffff8p0L, 5.0399999999999999955943084553876474508520e+03L),
14150     TEST_f_f (tgamma, 0x7.0000000000000008p0L, 7.2000000000000000058477733127664675369681e+02L),
14151     TEST_f_f (tgamma, 0x6.fffffffffffffff8p0L, 7.1999999999999999941522266872335324679893e+02L),
14152     TEST_f_f (tgamma, 0x6.0000000000000008p0L, 1.2000000000000000008878927116622375680433e+02L),
14153     TEST_f_f (tgamma, 0x5.fffffffffffffff8p0L, 1.1999999999999999991121072883377624326546e+02L),
14154     TEST_f_f (tgamma, 0x5.0000000000000008p0L, 2.4000000000000000015676186062072582846211e+01L),
14155     TEST_f_f (tgamma, 0x4.fffffffffffffff8p0L, 2.3999999999999999984323813937927417165027e+01L),
14156     TEST_f_f (tgamma, 0x4.0000000000000008p0L, 6.0000000000000000032685252120268430507939e+00L),
14157     TEST_f_f (tgamma, 0x3.fffffffffffffffcp0L, 5.9999999999999999983657373939865784753909e+00L),
14158     TEST_f_f (tgamma, 0x3.0000000000000004p0L, 2.0000000000000000004001939123397399171482e+00L),
14159     TEST_f_f (tgamma, 0x2.fffffffffffffffcp0L, 1.9999999999999999995998060876602600829690e+00L),
14160     TEST_f_f (tgamma, 0x2.0000000000000004p0L, 1.0000000000000000000916767389213195151634e+00L),
14161     TEST_f_f (tgamma, 0x1.fffffffffffffffep0L, 9.9999999999999999995416163053934024243282e-01L),
14162     TEST_f_f (tgamma, 0x1.0000000000000002p0L, 9.9999999999999999993741815221210931418291e-01L),
14163     TEST_f_f (tgamma, 0x0.ffffffffffffffffp0L, 1.0000000000000000000312909238939453429173e+00L),
14164     TEST_f_f (tgamma, -0x0.ffffffffffffffffp0L, -1.8446744073709551616422784335098467139470e+19L),
14165     TEST_f_f (tgamma, -0x1.0000000000000002p0L, 9.2233720368547758075772156649015328607596e+18L),
14166     TEST_f_f (tgamma, -0x1.fffffffffffffffep0L, 4.6116860184273879044613921675492335697983e+18L),
14167     TEST_f_f (tgamma, -0x2.0000000000000004p0L, -2.3058430092136939515386078324507664305064e+18L),
14168     TEST_f_f (tgamma, -0x2.fffffffffffffffcp0L, -7.6861433640456465087601961140530007887063e+17L),
14169     TEST_f_f (tgamma, -0x3.0000000000000004p0L, 7.6861433640456465045731372192803325462836e+17L),
14170     TEST_f_f (tgamma, -0x3.fffffffffffffffcp0L, 1.9215358410114116272942156951799168638773e+17L),
14171     TEST_f_f (tgamma, -0x4.0000000000000008p0L, -9.6076792050570581270578430482008313684602e+16L),
14172     TEST_f_f (tgamma, -0x4.fffffffffffffff8p0L, -1.9215358410114116280884313903598337283601e+16L),
14173     TEST_f_f (tgamma, -0x5.0000000000000008p0L, 1.9215358410114116252449019429734996071487e+16L),
14174     TEST_f_f (tgamma, -0x5.fffffffffffffff8p0L, 3.2025597350190193803788671320812043622696e+15L),
14175     TEST_f_f (tgamma, -0x6.0000000000000008p0L, -3.2025597350190193751766884234743511972877e+15L),
14176     TEST_f_f (tgamma, -0x6.fffffffffffffff8p0L, -4.5750853357414562579675426149912896787735e+14L),
14177     TEST_f_f (tgamma, -0x7.0000000000000008p0L, 4.5750853357414562499689653215166468353753e+14L),
14178     TEST_f_f (tgamma, -0x7.fffffffffffffff8p0L, 5.7188566696768203227694481100089533685959e+13L),
14179     TEST_f_f (tgamma, -0x8.000000000000001p0L, -2.8594283348384101534210280804672371201060e+13L),
14180     TEST_f_f (tgamma, -0x9.fffffffffffffffp0L, 3.1771425942649001828476427167843945971988e+11L),
14181     TEST_f_f (tgamma, -0xa.000000000000001p0L, -3.1771425942649001698860433502350057763905e+11L),
14182     TEST_f_f (tgamma, -0x13.ffffffffffffffep0L, 2.3694367893405502075347562184931828448654e-01L),
14183     TEST_f_f (tgamma, -0x14.000000000000002p0L, -2.3694367893405501827041302245929389013031e-01L),
14184     TEST_f_f (tgamma, -0x1d.ffffffffffffffep0L, 2.1732499046818166459536268654187775086902e-15L),
14185     TEST_f_f (tgamma, -0x1e.000000000000002p0L, -2.1732499046818166201837145753965837196590e-15L),
14186     TEST_f_f (tgamma, -0x27.ffffffffffffffcp0L, 3.5326017549807232935581894777156474496719e-31L),
14187     TEST_f_f (tgamma, -0x28.000000000000004p0L, -3.5326017549807232028299619269080956965758e-31L),
14188     TEST_f_f (tgamma, -0x28.ffffffffffffffcp0L, -8.6161018414163982777002940498289948893044e-33L),
14189     TEST_f_f (tgamma, -0x29.000000000000004p0L, 8.6161018414163980549537337663264762179535e-33L),
14190     TEST_f_f (tgamma, -0x29.ffffffffffffffcp0L, 2.0514528193848567329552463626090806737389e-34L),
14191     TEST_f_f (tgamma, -0x2a.000000000000004p0L, -2.0514528193848566795814269269517457847791e-34L),
14192     TEST_f_f (tgamma, -0x31.ffffffffffffffcp0L, 9.4768689712397635680446279661359728835046e-48L),
14193     TEST_f_f (tgamma, -0x32.000000000000004p0L, -9.4768689712397633101385547903658075308777e-48L),
14194     TEST_f_f (tgamma, -0x63.ffffffffffffff8p0L, 1.5442090669841618542494279375256856430049e-141L),
14195     TEST_f_f (tgamma, -0x64.000000000000008p0L, -1.5442090669841617554527108348771968070612e-141L),
14196     TEST_f_f (tgamma, -0x95.ffffffffffffffp0L, 1.2612069237291916400144732227892704713839e-246L),
14197     TEST_f_f (tgamma, -0x96.00000000000001p0L, -1.2612069237291914644980030550324645611752e-246L),
14198     TEST_f_f (tgamma, -0xb4.ffffffffffffffp0L, -1.9816628031468191243385005680879281767694e-315L),
14199     TEST_f_f (tgamma, -0xb5.00000000000001p0L, 1.9816628031468188382579700510291588022368e-315L),
14200     TEST_f_f (tgamma, -0xb5.ffffffffffffffp0L, 1.0888257160147357826865964233809723297472e-317L),
14201     TEST_f_f (tgamma, -0xb6.00000000000001p0L, -1.0888257160147356253334423783317128355514e-317L),
14202     TEST_f_f (tgamma, -0xb6.ffffffffffffffp0L, -5.9498673006269714905418984659220067091260e-320L),
14203     TEST_f_f (tgamma, -0xb7.00000000000001p0L, 5.9498673006269706297861824177538685763601e-320L),
14204     TEST_f_f (tgamma, -0xb7.ffffffffffffffp0L, 3.2336235329494410277123118903958061569834e-322L),
14205     TEST_f_f (tgamma, -0xb8.00000000000001p0L, -3.2336235329494405594225146768193434900135e-322L),
14206     TEST_f_f (tgamma, -0xbb.ffffffffffffffp0L, 2.6730392040715350119087465463119939092815e-331L),
14207     TEST_f_f (tgamma, -0xbc.00000000000001p0L, -2.6730392040715346232108532050343031951651e-331L),
14208     TEST_f_f (tgamma, -0xbc.ffffffffffffffp0L, -1.4143064571807063556111222197839950086445e-333L),
14209     TEST_f_f (tgamma, -0xbd.00000000000001p0L, 1.4143064571807061497431633629389135273431e-333L),
14210     TEST_f_f (tgamma, -0xbd.ffffffffffffffp0L, 7.4437181956879281879706555863416819210399e-336L),
14211     TEST_f_f (tgamma, -0xbe.00000000000001p0L, -7.4437181956879271033676895858841525581153e-336L),
14212     TEST_f_f (tgamma, -0xbe.ffffffffffffffp0L, -3.8972346574282346536709453101948570578636e-338L),
14213     TEST_f_f (tgamma, -0xbf.00000000000001p0L, 3.8972346574282340852496542564155275274974e-338L),
14214     TEST_f_f (tgamma, -0xf9.ffffffffffffffp0L, 2.2289142548411573883553287678043297937797e-476L),
14215     TEST_f_f (tgamma, -0xfa.00000000000001p0L, -2.2289142548411570466476165308364665814265e-476L),
14216     TEST_f_f (tgamma, -0x1f3.fffffffffffffep0L, 2.9528489142763141594943668922610562530068e-1118L),
14217     TEST_f_f (tgamma, -0x1f4.00000000000002p0L, -2.9528489142763131406565394149878256133744e-1118L),
14218     TEST_f_f (tgamma, -0x2ed.fffffffffffffcp0L, 6.9801511765871818502006905472380418430269e-1817L),
14219     TEST_f_f (tgamma, -0x2ee.00000000000004p0L, -6.9801511765871767194421856376592926002995e-1817L),
14220     TEST_f_f (tgamma, -0x3e7.fffffffffffffcp0L, 4.4768809295877296071892611539415773519036e-2552L),
14221     TEST_f_f (tgamma, -0x3e8.00000000000004p0L, -4.4768809295877261735541135972060089530309e-2552L),
14222     TEST_f_f (tgamma, -0x4e1.fffffffffffff8p0L, 5.4651488569236507565341414077911790252381e-3315L),
14223     TEST_f_f (tgamma, -0x4e2.00000000000008p0L, -5.4651488569236421026544487194247355967789e-3315L),
14224     TEST_f_f (tgamma, -0x5db.fffffffffffff8p0L, 1.8718211510339187689122114747834510481993e-4099L),
14225     TEST_f_f (tgamma, -0x5dc.00000000000008p0L, -1.8718211510339157291960718369454861898499e-4099L),
14226     TEST_f_f (tgamma, -0x6d5.fffffffffffff8p0L, 4.2925786447266492555651378780094011518063e-4902L),
14227     TEST_f_f (tgamma, -0x6d6.00000000000008p0L, -4.2925786447266421378134368786479937285900e-4902L),
14228     TEST_f_f (tgamma, -0x6e2.fffffffffffff8p0L, -2.8229173528168668283609231628661510187536e-4944L, UNDERFLOW_EXCEPTION),
14229     TEST_f_f (tgamma, -0x6e3.00000000000008p0L, 2.8229173528168621428945467532322397890424e-4944L, UNDERFLOW_EXCEPTION),
14230     TEST_f_f (tgamma, -0x6e3.fffffffffffff8p0L, 1.6002932839097884515524894602387278842659e-4947L, UNDERFLOW_EXCEPTION),
14231     TEST_f_f (tgamma, -0x6e4.00000000000008p0L, -1.6002932839097857951909742110188634438017e-4947L, UNDERFLOW_EXCEPTION),
14232     TEST_f_f (tgamma, -0x6e4.fffffffffffff8p0L, -9.0668174725767051085164382743343408095146e-4951L, UNDERFLOW_EXCEPTION),
14233     TEST_f_f (tgamma, -0x6e5.00000000000008p0L, 9.0668174725766900571689083050287838090189e-4951L, UNDERFLOW_EXCEPTION),
14234 # if LDBL_MANT_DIG <= 64
14235     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION),
14236     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION),
14237 # else
14238     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, 5.1340982290921319983501912122292601780326e-4954L, UNDERFLOW_EXCEPTION),
14239     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, -5.1340982290921234748578193083614111497314e-4954L, UNDERFLOW_EXCEPTION),
14240 # endif
14241 # if LDBL_MANT_DIG >= 113
14242     TEST_f_f (tgamma, 0x8.0000000000000000000000000008p0L, 5.0400000000000000000000000000000156521606e+03L),
14243     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffffcp0L, 5.0399999999999999999999999999999921739197e+03L),
14244     TEST_f_f (tgamma, 0x7.0000000000000000000000000004p0L, 7.2000000000000000000000000000000103877321e+02L),
14245     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffffcp0L, 7.1999999999999999999999999999999896122679e+02L),
14246     TEST_f_f (tgamma, 0x6.0000000000000000000000000004p0L, 1.2000000000000000000000000000000015772143e+02L),
14247     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffffcp0L, 1.1999999999999999999999999999999984227857e+02L),
14248     TEST_f_f (tgamma, 0x5.0000000000000000000000000004p0L, 2.4000000000000000000000000000000027846500e+01L),
14249     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffffcp0L, 2.3999999999999999999999999999999972153500e+01L),
14250     TEST_f_f (tgamma, 0x4.0000000000000000000000000004p0L, 6.0000000000000000000000000000000058060671e+00L),
14251     TEST_f_f (tgamma, 0x3.fffffffffffffffffffffffffffep0L, 5.9999999999999999999999999999999970969664e+00L),
14252     TEST_f_f (tgamma, 0x3.0000000000000000000000000002p0L, 2.0000000000000000000000000000000007108872e+00L),
14253     TEST_f_f (tgamma, 0x2.fffffffffffffffffffffffffffep0L, 1.9999999999999999999999999999999992891128e+00L),
14254     TEST_f_f (tgamma, 0x2.0000000000000000000000000002p0L, 1.0000000000000000000000000000000001628506e+00L),
14255     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffffffp0L, 9.9999999999999999999999999999999991857470e-01L),
14256     TEST_f_f (tgamma, 0x1.0000000000000000000000000001p0L, 9.9999999999999999999999999999999988883231e-01L),
14257     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffff8p0L, 1.0000000000000000000000000000000000555838e+00L),
14258     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffff8p0L, -1.0384593717069655257060992658440192422784e+34L),
14259     TEST_f_f (tgamma, -0x1.0000000000000000000000000001p0L, 5.1922968585348276285304963292200955772157e+33L),
14260     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffffffp0L, 2.5961484292674138142652481646100484613922e+33L),
14261     TEST_f_f (tgamma, -0x2.0000000000000000000000000002p0L, -1.2980742146337069071326240823050235386078e+33L),
14262     TEST_f_f (tgamma, -0x2.fffffffffffffffffffffffffffep0L, -4.3269140487790230237754136076834154268628e+32L),
14263     TEST_f_f (tgamma, -0x3.0000000000000000000000000002p0L, 4.3269140487790230237754136076834112398039e+32L),
14264     TEST_f_f (tgamma, -0x3.fffffffffffffffffffffffffffep0L, 1.0817285121947557559438534019208539608824e+32L),
14265     TEST_f_f (tgamma, -0x4.0000000000000000000000000004p0L, -5.4086425609737787797192670096042603911764e+31L),
14266     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffffcp0L, -1.0817285121947557559438534019208547550981e+31L),
14267     TEST_f_f (tgamma, -0x5.0000000000000000000000000004p0L, 1.0817285121947557559438534019208519115686e+31L),
14268     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffffcp0L, 1.8028808536579262599064223365347581566449e+30L),
14269     TEST_f_f (tgamma, -0x6.0000000000000000000000000004p0L, -1.8028808536579262599064223365347529544662e+30L),
14270     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffffcp0L, -2.5755440766541803712948890521925119357966e+29L),
14271     TEST_f_f (tgamma, -0x7.0000000000000000000000000004p0L, 2.5755440766541803712948890521925039372193e+29L),
14272     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffffcp0L, 3.2194300958177254641186113152406402297656e+28L),
14273     TEST_f_f (tgamma, -0x8.0000000000000000000000000008p0L, -1.6097150479088627320593056576203121511868e+28L),
14274     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffff8p0L, 1.7885722754542919245103396195781369922635e+26L),
14275     TEST_f_f (tgamma, -0xa.0000000000000000000000000008p0L, -1.7885722754542919245103396195781240306642e+26L),
14276     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffffffp0L, 1.3338743301940057859272772747600099590309e+14L),
14277     TEST_f_f (tgamma, -0x14.000000000000000000000000001p0L, -1.3338743301940057859272772747599851284049e+14L),
14278     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffffffp0L, 1.2234309326134994173819319571374205986026e+00L),
14279     TEST_f_f (tgamma, -0x1e.000000000000000000000000001p0L, -1.2234309326134994173819319571373948286903e+00L),
14280     TEST_f_f (tgamma, -0x27.ffffffffffffffffffffffffffep0L, 1.9886779934224431790713007246380976767855e-16L),
14281     TEST_f_f (tgamma, -0x28.000000000000000000000000002p0L, -1.9886779934224431790713007246380069485580e-16L),
14282     TEST_f_f (tgamma, -0x28.ffffffffffffffffffffffffffep0L, -4.8504341302986419001739042064343853066259e-18L),
14283     TEST_f_f (tgamma, -0x29.000000000000000000000000002p0L, 4.8504341302986419001739042064341625600656e-18L),
14284     TEST_f_f (tgamma, -0x29.ffffffffffffffffffffffffffep0L, 1.1548652691187242619461676681986633377063e-19L),
14285     TEST_f_f (tgamma, -0x2a.000000000000000000000000002p0L, -1.1548652691187242619461676681986099638869e-19L),
14286     TEST_f_f (tgamma, -0x31.ffffffffffffffffffffffffffep0L, 5.3350029459393017997786969431322287652396e-33L),
14287     TEST_f_f (tgamma, -0x32.000000000000000000000000002p0L, -5.3350029459393017997786969431319708591664e-33L),
14288     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffffcp0L, 8.6931242233150155021453586128730281632676e-127L),
14289     TEST_f_f (tgamma, -0x64.000000000000000000000000004p0L, -8.6931242233150155021453586128720401960966e-127L),
14290     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffff8p0L, 7.0999637896798458052083945552094635720486e-232L),
14291     TEST_f_f (tgamma, -0x96.000000000000000000000000008p0L, -7.0999637896798458052083945552077084073470e-232L),
14292     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffff8p0L, -1.1155769827282483165407420451477844041365e-300L),
14293     TEST_f_f (tgamma, -0xb5.000000000000000000000000008p0L, 1.1155769827282483165407420451474983236060e-300L),
14294     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffff8p0L, 6.1295438611442215194546266216911239298981e-303L),
14295     TEST_f_f (tgamma, -0xb6.000000000000000000000000008p0L, -6.1295438611442215194546266216895503983577e-303L),
14296     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffff8p0L, -3.3494775197509407210134571703230189921356e-305L),
14297     TEST_f_f (tgamma, -0xb7.000000000000000000000000008p0L, 3.3494775197509407210134571703221582364195e-305L),
14298     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffff8p0L, 1.8203682172559460440290528099581627396147e-307L),
14299     TEST_f_f (tgamma, -0xb8.000000000000000000000000008p0L, -1.8203682172559460440290528099576944498174e-307L),
14300     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffff8p0L, 1.5047872954254114273289393917555491216542e-316L),
14301     TEST_f_f (tgamma, -0xbc.000000000000000000000000008p0L, -1.5047872954254114273289393917551604237609e-316L),
14302     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffff8p0L, -7.9618375419333937953912137129923244334851e-319L),
14303     TEST_f_f (tgamma, -0xbd.000000000000000000000000008p0L, 7.9618375419333937953912137129902657538965e-319L),
14304     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffff8p0L, 4.1904408115438914712585335331538555086887e-321L),
14305     TEST_f_f (tgamma, -0xbe.000000000000000000000000008p0L, -4.1904408115438914712585335331527709057227e-321L),
14306     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffff8p0L, -2.1939480688711473671510646770439036908579e-323L),
14307     TEST_f_f (tgamma, -0xbf.000000000000000000000000008p0L, 2.1939480688711473671510646770433352695669e-323L),
14308     TEST_f_f (tgamma, -0xf9.ffffffffffffffffffffffffff8p0L, 1.2547671759429278005937024349858508569625e-461L),
14309     TEST_f_f (tgamma, -0xfa.000000000000000000000000008p0L, -1.2547671759429278005937024349855091492502e-461L),
14310     TEST_f_f (tgamma, -0x1f3.ffffffffffffffffffffffffffp0L, 1.6623061587520224800948170558276526986560e-1103L),
14311     TEST_f_f (tgamma, -0x1f4.00000000000000000000000001p0L, -1.6623061587520224800948170558266338608285e-1103L),
14312     TEST_f_f (tgamma, -0x2ed.fffffffffffffffffffffffffep0L, 3.9294757797334687313030998663853566763041e-1802L),
14313     TEST_f_f (tgamma, -0x2ee.00000000000000000000000002p0L, -3.9294757797334687313030998663802259177992e-1802L),
14314     TEST_f_f (tgamma, -0x3e7.fffffffffffffffffffffffffep0L, 2.5202599107841713834679953735597552855978e-2537L),
14315     TEST_f_f (tgamma, -0x3e8.00000000000000000000000002p0L, -2.5202599107841713834679953735563216504503e-2537L),
14316     TEST_f_f (tgamma, -0x4e1.fffffffffffffffffffffffffcp0L, 3.0766052944457032773369415396747635242705e-3300L),
14317     TEST_f_f (tgamma, -0x4e2.00000000000000000000000004p0L, -3.0766052944457032773369415396661096445778e-3300L),
14318     TEST_f_f (tgamma, -0x5db.fffffffffffffffffffffffffcp0L, 1.0537416297875703295453200836588944487917e-4084L),
14319     TEST_f_f (tgamma, -0x5dc.00000000000000000000000004p0L, -1.0537416297875703295453200836558547326520e-4084L),
14320     TEST_f_f (tgamma, -0x6d5.fffffffffffffffffffffffffcp0L, 2.4165069481061837867659591369998698607387e-4887L),
14321     TEST_f_f (tgamma, -0x6d6.00000000000000000000000004p0L, -2.4165069481061837867659591369927521090377e-4887L),
14322     TEST_f_f (tgamma, -0x6e2.fffffffffffffffffffffffffcp0L, -1.5891611922804672355414813803008070609431e-4929L),
14323     TEST_f_f (tgamma, -0x6e3.00000000000000000000000004p0L, 1.5891611922804672355414813802961215945667e-4929L),
14324     TEST_f_f (tgamma, -0x6e3.fffffffffffffffffffffffffcp0L, 9.0088502963745308137272187091882496519917e-4933L, UNDERFLOW_EXCEPTION),
14325     TEST_f_f (tgamma, -0x6e4.00000000000000000000000004p0L, -9.0088502963745308137272187091616860368392e-4933L, UNDERFLOW_EXCEPTION),
14326     TEST_f_f (tgamma, -0x6e4.fffffffffffffffffffffffffcp0L, -5.1041644738665896961627301468488672286746e-4936L, UNDERFLOW_EXCEPTION),
14327     TEST_f_f (tgamma, -0x6e5.00000000000000000000000004p0L, 5.1041644738665896961627301468338158811446e-4936L, UNDERFLOW_EXCEPTION),
14328     TEST_f_f (tgamma, -0x6e5.fffffffffffffffffffffffffcp0L, 2.8902403589278537350864836618623260468143e-4939L, UNDERFLOW_EXCEPTION),
14329     TEST_f_f (tgamma, -0x6e6.00000000000000000000000004p0L, -2.8902403589278537350864836618538025544424e-4939L, UNDERFLOW_EXCEPTION),
14330     TEST_f_f (tgamma, -0x6eb.fffffffffffffffffffffffffcp0L, 9.4152481960798287090819640211017219042636e-4959L, UNDERFLOW_EXCEPTION),
14331     TEST_f_f (tgamma, -0x6ec.00000000000000000000000004p0L, -9.4152481960798287090819640210739431797168e-4959L, UNDERFLOW_EXCEPTION),
14332     TEST_f_f (tgamma, -0x6ec.fffffffffffffffffffffffffcp0L, -5.3103486723518492437010513373388172315540e-4962L, UNDERFLOW_EXCEPTION),
14333     TEST_f_f (tgamma, -0x6ed.00000000000000000000000004p0L, 5.3103486723518492437010513373231484108489e-4962L, UNDERFLOW_EXCEPTION),
14334     TEST_f_f (tgamma, -0x6ed.fffffffffffffffffffffffffcp0L, 2.9934321715624854812294539669328172615019e-4965L, UNDERFLOW_EXCEPTION),
14335     TEST_f_f (tgamma, -0x6ee.00000000000000000000000004p0L, -2.9934321715624854812294539669239841152754e-4965L, UNDERFLOW_EXCEPTION),
14336     TEST_f_f (tgamma, -0x6ee.fffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION),
14337     TEST_f_f (tgamma, -0x6ef.00000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION),
14338 # endif
14339 #endif
14340     TEST_f_f (tgamma, -0x1.0a32a2p+5L, 1.8125267978155035272941154746083439329912e-37L),
14341 #ifndef TEST_FLOAT
14342     TEST_f_f (tgamma, -0x1.5800000080001p+7L, -3.1439271448823567326093363350637118195240e-304L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14343 #endif
14344     TEST_f_f (tgamma, 18.5L, 1.4986120533153361177371791123515513270334e+15L),
14345     TEST_f_f (tgamma, 19.5L, 2.7724322986333718178137813578503699550119e+16L),
14346     TEST_f_f (tgamma, 23.5L, 5.3613035875444147334274983856108155717836e+21L),
14347     TEST_f_f (tgamma, 29.5L, 1.6348125198274266444378807806868221866931e+30L),
14348     TEST_f_f (tgamma, 30.5L, 4.8226969334909086010917483030261254507447e+31L),
14349     TEST_f_f (tgamma, 31.5L, 1.4709225647147271233329832324229682624771e+33L),
14350     TEST_f_f (tgamma, 32.5L, 4.6334060788513904384988971821323500268029e+34L),
14351     TEST_f_f (tgamma, 33.5L, 1.5058569756267018925121415841930137587110e+36L),
14352     TEST_f_f (tgamma, 34.5L, 5.0446208683494513399156743070465960916817e+37L),
14353     TEST_f_f (tgamma, 0x2.30a43cp+4L, 3.4027979115654976101247558405326779640190e+38L),
14354 #ifdef TEST_FLOAT
14355     TEST_f_f (tgamma, 0x2.30a44p+4L, plus_infty, OVERFLOW_EXCEPTION),
14356 #else
14357     TEST_f_f (tgamma, 0x2.30a44p+4L, 3.4028438913396451054667218138127983367181e+38L),
14358 #endif
14359 #ifndef TEST_FLOAT
14360     TEST_f_f (tgamma, 0xa.b9fd72b0fb238p+4L, 1.7976931348622298700886249281842651388250e+308L),
14361 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14362     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, plus_infty, OVERFLOW_EXCEPTION),
14363 # else
14364     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, 1.7976931348624926129589466917917870782484e+308L),
14365 # endif
14366 #endif
14367 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14368     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f4p+4L, 1.7976931348623158079372897140307719334857e+308L),
14369 # if LDBL_MAX_EXP <= 1024
14370     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, plus_infty, OVERFLOW_EXCEPTION),
14371 # else
14372     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, 1.7976931348623158079372897140599422519044e+308L),
14373 # endif
14374 #endif
14375 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14376     TEST_f_f (tgamma, 0x6.db8c603359a97108p+8L, 1.1897314953572317517071551278058233700012e+4932L),
14377     TEST_f_f (tgamma, 0x6.db8c603359a9711p+8L, plus_infty, OVERFLOW_EXCEPTION),
14378 # if LDBL_MANT_DIG >= 113
14379     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfdp+8L, 1.1897314953572317650857593266265995494998e+4932L),
14380     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfd4p+8L, plus_infty, OVERFLOW_EXCEPTION),
14381 # endif
14382 #endif
14383     END_DATA (tgamma)
14384   };
14385
14386 static void
14387 tgamma_test (void)
14388 {
14389   errno = 0;
14390   FUNC(tgamma) (1);
14391   if (errno == ENOSYS)
14392     /* Function not implemented.  */
14393     return;
14394
14395   START (tgamma);
14396   RUN_TEST_LOOP_f_f (tgamma, tgamma_test_data, );
14397   END (tgamma);
14398 }
14399
14400
14401 static const struct test_f_f_data trunc_test_data[] =
14402   {
14403     START_DATA (trunc),
14404     TEST_f_f (trunc, plus_infty, plus_infty),
14405     TEST_f_f (trunc, minus_infty, minus_infty),
14406     TEST_f_f (trunc, qnan_value, qnan_value),
14407
14408     TEST_f_f (trunc, 0, 0),
14409     TEST_f_f (trunc, minus_zero, minus_zero),
14410     TEST_f_f (trunc, 0.1, 0),
14411     TEST_f_f (trunc, 0.25, 0),
14412     TEST_f_f (trunc, 0.625, 0),
14413     TEST_f_f (trunc, -0.1, minus_zero),
14414     TEST_f_f (trunc, -0.25, minus_zero),
14415     TEST_f_f (trunc, -0.625, minus_zero),
14416     TEST_f_f (trunc, 1, 1),
14417     TEST_f_f (trunc, -1, -1),
14418     TEST_f_f (trunc, 1.625, 1),
14419     TEST_f_f (trunc, -1.625, -1),
14420
14421     TEST_f_f (trunc, 1048580.625L, 1048580L),
14422     TEST_f_f (trunc, -1048580.625L, -1048580L),
14423
14424     TEST_f_f (trunc, 8388610.125L, 8388610.0L),
14425     TEST_f_f (trunc, -8388610.125L, -8388610.0L),
14426
14427     TEST_f_f (trunc, 4294967296.625L, 4294967296.0L),
14428     TEST_f_f (trunc, -4294967296.625L, -4294967296.0L),
14429
14430 #ifdef TEST_LDOUBLE
14431     /* The result can only be represented in long double.  */
14432     TEST_f_f (trunc, 4503599627370495.5L, 4503599627370495.0L),
14433     TEST_f_f (trunc, 4503599627370496.25L, 4503599627370496.0L),
14434     TEST_f_f (trunc, 4503599627370496.5L, 4503599627370496.0L),
14435     TEST_f_f (trunc, 4503599627370496.75L, 4503599627370496.0L),
14436     TEST_f_f (trunc, 4503599627370497.5L, 4503599627370497.0L),
14437
14438 # if LDBL_MANT_DIG > 100
14439     TEST_f_f (trunc, 4503599627370494.5000000000001L, 4503599627370494.0L),
14440     TEST_f_f (trunc, 4503599627370495.5000000000001L, 4503599627370495.0L),
14441     TEST_f_f (trunc, 4503599627370496.5000000000001L, 4503599627370496.0L),
14442 # endif
14443
14444     TEST_f_f (trunc, -4503599627370495.5L, -4503599627370495.0L),
14445     TEST_f_f (trunc, -4503599627370496.25L, -4503599627370496.0L),
14446     TEST_f_f (trunc, -4503599627370496.5L, -4503599627370496.0L),
14447     TEST_f_f (trunc, -4503599627370496.75L, -4503599627370496.0L),
14448     TEST_f_f (trunc, -4503599627370497.5L, -4503599627370497.0L),
14449
14450 # if LDBL_MANT_DIG > 100
14451     TEST_f_f (trunc, -4503599627370494.5000000000001L, -4503599627370494.0L),
14452     TEST_f_f (trunc, -4503599627370495.5000000000001L, -4503599627370495.0L),
14453     TEST_f_f (trunc, -4503599627370496.5000000000001L, -4503599627370496.0L),
14454 # endif
14455
14456     TEST_f_f (trunc, 9007199254740991.5L, 9007199254740991.0L),
14457     TEST_f_f (trunc, 9007199254740992.25L, 9007199254740992.0L),
14458     TEST_f_f (trunc, 9007199254740992.5L, 9007199254740992.0L),
14459     TEST_f_f (trunc, 9007199254740992.75L, 9007199254740992.0L),
14460     TEST_f_f (trunc, 9007199254740993.5L, 9007199254740993.0L),
14461
14462 # if LDBL_MANT_DIG > 100
14463     TEST_f_f (trunc, 9007199254740991.0000000000001L, 9007199254740991.0L),
14464     TEST_f_f (trunc, 9007199254740992.0000000000001L, 9007199254740992.0L),
14465     TEST_f_f (trunc, 9007199254740993.0000000000001L, 9007199254740993.0L),
14466     TEST_f_f (trunc, 9007199254740991.5000000000001L, 9007199254740991.0L),
14467     TEST_f_f (trunc, 9007199254740992.5000000000001L, 9007199254740992.0L),
14468     TEST_f_f (trunc, 9007199254740993.5000000000001L, 9007199254740993.0L),
14469 # endif
14470
14471     TEST_f_f (trunc, -9007199254740991.5L, -9007199254740991.0L),
14472     TEST_f_f (trunc, -9007199254740992.25L, -9007199254740992.0L),
14473     TEST_f_f (trunc, -9007199254740992.5L, -9007199254740992.0L),
14474     TEST_f_f (trunc, -9007199254740992.75L, -9007199254740992.0L),
14475     TEST_f_f (trunc, -9007199254740993.5L, -9007199254740993.0L),
14476
14477 # if LDBL_MANT_DIG > 100
14478     TEST_f_f (trunc, -9007199254740991.0000000000001L, -9007199254740991.0L),
14479     TEST_f_f (trunc, -9007199254740992.0000000000001L, -9007199254740992.0L),
14480     TEST_f_f (trunc, -9007199254740993.0000000000001L, -9007199254740993.0L),
14481     TEST_f_f (trunc, -9007199254740991.5000000000001L, -9007199254740991.0L),
14482     TEST_f_f (trunc, -9007199254740992.5000000000001L, -9007199254740992.0L),
14483     TEST_f_f (trunc, -9007199254740993.5000000000001L, -9007199254740993.0L),
14484 # endif
14485
14486     TEST_f_f (trunc, 72057594037927935.5L, 72057594037927935.0L),
14487     TEST_f_f (trunc, 72057594037927936.25L, 72057594037927936.0L),
14488     TEST_f_f (trunc, 72057594037927936.5L, 72057594037927936.0L),
14489     TEST_f_f (trunc, 72057594037927936.75L, 72057594037927936.0L),
14490     TEST_f_f (trunc, 72057594037927937.5L, 72057594037927937.0L),
14491
14492     TEST_f_f (trunc, -72057594037927935.5L, -72057594037927935.0L),
14493     TEST_f_f (trunc, -72057594037927936.25L, -72057594037927936.0L),
14494     TEST_f_f (trunc, -72057594037927936.5L, -72057594037927936.0L),
14495     TEST_f_f (trunc, -72057594037927936.75L, -72057594037927936.0L),
14496     TEST_f_f (trunc, -72057594037927937.5L, -72057594037927937.0L),
14497
14498     TEST_f_f (trunc, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
14499     TEST_f_f (trunc, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
14500     TEST_f_f (trunc, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
14501     TEST_f_f (trunc, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
14502     TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
14503 #endif
14504     END_DATA (trunc)
14505   };
14506
14507 static void
14508 trunc_test (void)
14509 {
14510   START (trunc);
14511   RUN_TEST_LOOP_f_f (trunc, trunc_test_data, );
14512   END (trunc);
14513 }
14514
14515 static const struct test_f_f_data y0_test_data[] =
14516   {
14517     START_DATA (y0),
14518     /* y0 is the Bessel function of the second kind of order 0 */
14519     TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION),
14520     TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION),
14521     TEST_f_f (y0, 0.0, minus_infty),
14522     TEST_f_f (y0, qnan_value, qnan_value),
14523     TEST_f_f (y0, plus_infty, 0),
14524
14525     TEST_f_f (y0, 0.125L, -1.38968062514384052915582277745018693L),
14526     TEST_f_f (y0, 0.75L, -0.137172769385772397522814379396581855L),
14527     TEST_f_f (y0, 1.0, 0.0882569642156769579829267660235151628L),
14528     TEST_f_f (y0, 1.5, 0.382448923797758843955068554978089862L),
14529     TEST_f_f (y0, 2.0, 0.510375672649745119596606592727157873L),
14530     TEST_f_f (y0, 8.0, 0.223521489387566220527323400498620359L),
14531     TEST_f_f (y0, 10.0, 0.0556711672835993914244598774101900481L),
14532
14533     TEST_f_f (y0, 0x1.3ffp+74L, 1.818984347516051243459467456433028748678e-12L),
14534
14535 #ifndef TEST_FLOAT
14536     TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
14537     TEST_f_f (y0, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
14538 #endif
14539
14540 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14541     TEST_f_f (y0, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
14542     TEST_f_f (y0, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
14543 #endif
14544
14545     TEST_f_f (y0, 0x1p-10L, -4.4865150767109739412411806297168793661098L),
14546     TEST_f_f (y0, 0x1p-20L, -8.8992283012125827603076426611387876938160L),
14547     TEST_f_f (y0, 0x1p-30L, -1.3311940304267782826037118027401817264906e+1L),
14548     TEST_f_f (y0, 0x1p-40L, -1.7724652307320814696990854700366226762563e+1L),
14549     TEST_f_f (y0, 0x1p-50L, -2.2137364310373846564919987139743760738155e+1L),
14550     TEST_f_f (y0, 0x1p-60L, -2.6550076313426878432849115782108205929120e+1L),
14551     TEST_f_f (y0, 0x1p-70L, -3.0962788316479910300778244424468159753887e+1L),
14552     TEST_f_f (y0, 0x1p-80L, -3.5375500319532942168707373066828113573541e+1L),
14553     TEST_f_f (y0, 0x1p-90L, -3.9788212322585974036636501709188067393195e+1L),
14554     TEST_f_f (y0, 0x1p-100L, -4.420092432563900590456563035154802121284e+1L),
14555     TEST_f_f (y0, 0x1p-110L, -4.861363632869203777249475899390797503250e+1L),
14556     END_DATA (y0)
14557   };
14558
14559 static void
14560 y0_test (void)
14561 {
14562   FLOAT s, c;
14563   errno = 0;
14564   FUNC (sincos) (0, &s, &c);
14565   if (errno == ENOSYS)
14566     /* Required function not implemented.  */
14567     return;
14568   FUNC(y0) (1);
14569   if (errno == ENOSYS)
14570     /* Function not implemented.  */
14571     return;
14572
14573   START (y0);
14574   RUN_TEST_LOOP_f_f (y0, y0_test_data, );
14575   END (y0);
14576 }
14577
14578
14579 static const struct test_f_f_data y1_test_data[] =
14580   {
14581     START_DATA (y1),
14582     /* y1 is the Bessel function of the second kind of order 1 */
14583     TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION),
14584     TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION),
14585     TEST_f_f (y1, 0.0, minus_infty),
14586     TEST_f_f (y1, plus_infty, 0),
14587     TEST_f_f (y1, qnan_value, qnan_value),
14588
14589     TEST_f_f (y1, 0.125L, -5.19993611253477499595928744876579921L),
14590     TEST_f_f (y1, 0.75L, -1.03759455076928541973767132140642198L),
14591     TEST_f_f (y1, 1.0, -0.781212821300288716547150000047964821L),
14592     TEST_f_f (y1, 1.5, -0.412308626973911295952829820633445323L),
14593     TEST_f_f (y1, 2.0, -0.107032431540937546888370772277476637L),
14594     TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L),
14595     TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L),
14596
14597     TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L),
14598
14599 #ifndef TEST_FLOAT
14600     TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L),
14601     TEST_f_f (y1, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L),
14602 #endif
14603
14604 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14605     TEST_f_f (y1, 0x1p16382L, 1.2193782500509000574176799046642541129387e-2466L),
14606     TEST_f_f (y1, 0x1p16383L, -9.5859502826270374691362975419147645151233e-2467L),
14607 #endif
14608
14609     TEST_f_f (y1, 0x1p-10L, -6.5190099301063115047395187618929589514382e+02L),
14610     TEST_f_f (y1, 0x1p-20L, -6.6754421443450423911167962313100637952285e+05L),
14611     TEST_f_f (y1, 0x1p-30L, -6.8356527557643159612937462812258975438856e+08L),
14612     TEST_f_f (y1, 0x1p-40L, -6.9997084219026594793707805777425993547887e+11L),
14613     TEST_f_f (y1, 0x1p-50L, -7.1677014240283233068755952926181262431559e+14L),
14614     TEST_f_f (y1, 0x1p-60L, -7.3397262582050030662406095795388448059822e+17L),
14615     TEST_f_f (y1, 0x1p-70L, -7.5158796884019231398303842094477769620063e+20L),
14616     TEST_f_f (y1, 0x1p-80L, -7.6962608009235692951863134304745236090943e+23L),
14617     TEST_f_f (y1, 0x1p-90L, -7.8809710601457349582707849528059121757126e+26L),
14618     TEST_f_f (y1, 0x1p-100L, -8.0701143655892325972692837916732540679297e+29L),
14619     TEST_f_f (y1, 0x1p-110L, -8.2637971103633741796037466026734121655600e+32L),
14620     END_DATA (y1)
14621   };
14622
14623 static void
14624 y1_test (void)
14625 {
14626   FLOAT s, c;
14627   errno = 0;
14628   FUNC (sincos) (0, &s, &c);
14629   if (errno == ENOSYS)
14630     /* Required function not implemented.  */
14631     return;
14632   FUNC(y1) (1);
14633   if (errno == ENOSYS)
14634     /* Function not implemented.  */
14635     return;
14636
14637   START (y1);
14638   RUN_TEST_LOOP_f_f (y1, y1_test_data, );
14639   END (y1);
14640 }
14641
14642
14643 static void
14644 yn_test (void)
14645 {
14646   FLOAT s, c;
14647   errno = 0;
14648   FUNC (sincos) (0, &s, &c);
14649   if (errno == ENOSYS)
14650     /* Required function not implemented.  */
14651     return;
14652   FUNC(yn) (1, 1);
14653   if (errno == ENOSYS)
14654     /* Function not implemented.  */
14655     return;
14656
14657   /* yn is the Bessel function of the second kind of order n */
14658   START (yn);
14659
14660   /* yn (0, x) == y0 (x)  */
14661   TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION);
14662   TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION);
14663   TEST_if_f (yn, 0, 0.0, minus_infty);
14664   TEST_if_f (yn, 0, qnan_value, qnan_value);
14665   TEST_if_f (yn, 0, plus_infty, 0);
14666
14667   TEST_if_f (yn, 0, 0.125L, -1.38968062514384052915582277745018693L);
14668   TEST_if_f (yn, 0, 0.75L, -0.137172769385772397522814379396581855L);
14669   TEST_if_f (yn, 0, 1.0, 0.0882569642156769579829267660235151628L);
14670   TEST_if_f (yn, 0, 1.5, 0.382448923797758843955068554978089862L);
14671   TEST_if_f (yn, 0, 2.0, 0.510375672649745119596606592727157873L);
14672   TEST_if_f (yn, 0, 8.0, 0.223521489387566220527323400498620359L);
14673   TEST_if_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L);
14674
14675   /* yn (1, x) == y1 (x)  */
14676   TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION);
14677   TEST_if_f (yn, 1, 0.0, minus_infty);
14678   TEST_if_f (yn, 1, plus_infty, 0);
14679   TEST_if_f (yn, 1, qnan_value, qnan_value);
14680
14681   TEST_if_f (yn, 1, 0.125L, -5.19993611253477499595928744876579921L);
14682   TEST_if_f (yn, 1, 0.75L, -1.03759455076928541973767132140642198L);
14683   TEST_if_f (yn, 1, 1.0, -0.781212821300288716547150000047964821L);
14684   TEST_if_f (yn, 1, 1.5, -0.412308626973911295952829820633445323L);
14685   TEST_if_f (yn, 1, 2.0, -0.107032431540937546888370772277476637L);
14686   TEST_if_f (yn, 1, 8.0, -0.158060461731247494255555266187483550L);
14687   TEST_if_f (yn, 1, 10.0, 0.249015424206953883923283474663222803L);
14688
14689   /* yn (3, x)  */
14690   TEST_if_f (yn, 3, plus_infty, 0);
14691   TEST_if_f (yn, 3, qnan_value, qnan_value);
14692
14693   TEST_if_f (yn, 3, 0.125L, -2612.69757350066712600220955744091741L);
14694   TEST_if_f (yn, 3, 0.75L, -12.9877176234475433186319774484809207L);
14695   TEST_if_f (yn, 3, 1.0, -5.82151760596472884776175706442981440L);
14696   TEST_if_f (yn, 3, 2.0, -1.12778377684042778608158395773179238L);
14697   TEST_if_f (yn, 3, 10.0, -0.251362657183837329779204747654240998L);
14698
14699   /* yn (10, x)  */
14700   TEST_if_f (yn, 10, plus_infty, 0);
14701   TEST_if_f (yn, 10, qnan_value, qnan_value);
14702
14703   TEST_if_f (yn, 10, 0.125L, -127057845771019398.252538486899753195L);
14704   TEST_if_f (yn, 10, 0.75L, -2133501638.90573424452445412893839236L);
14705   TEST_if_f (yn, 10, 1.0, -121618014.278689189288130426667971145L);
14706   TEST_if_f (yn, 10, 2.0, -129184.542208039282635913145923304214L);
14707   TEST_if_f (yn, 10, 10.0, -0.359814152183402722051986577343560609L);
14708
14709   /* Check whether yn returns correct value for LDBL_MIN, DBL_MIN,
14710      and FLT_MIN.  See Bug 14173.  */
14711   TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION);
14712
14713   TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE);
14714
14715   END (yn);
14716 }
14717
14718
14719 static const struct test_f_f_data significand_test_data[] =
14720   {
14721     START_DATA (significand),
14722     /* significand returns the mantissa of the exponential representation.  */
14723     /* TODO: missing +/-Inf as well as qNaN tests.  */
14724     TEST_f_f (significand, 4.0, 1.0),
14725     TEST_f_f (significand, 6.0, 1.5),
14726     TEST_f_f (significand, 8.0, 1.0),
14727     END_DATA (significand)
14728   };
14729
14730 static void
14731 significand_test (void)
14732 {
14733   START (significand);
14734   RUN_TEST_LOOP_f_f (significand, significand_test_data, );
14735   END (significand);
14736 }
14737
14738
14739 static void
14740 initialize (void)
14741 {
14742   fpstack_test ("start *init*");
14743
14744   /* Clear all exceptions.  From now on we must not get random exceptions.  */
14745   feclearexcept (FE_ALL_EXCEPT);
14746   errno = 0;
14747
14748   /* Test to make sure we start correctly.  */
14749   fpstack_test ("end *init*");
14750 }
14751
14752 /* Definitions of arguments for argp functions.  */
14753 static const struct argp_option options[] =
14754 {
14755   { "verbose", 'v', "NUMBER", 0, "Level of verbosity (0..3)"},
14756   { "ulps-file", 'u', NULL, 0, "Output ulps to file ULPs"},
14757   { "no-max-error", 'f', NULL, 0,
14758     "Don't output maximal errors of functions"},
14759   { "no-points", 'p', NULL, 0,
14760     "Don't output results of functions invocations"},
14761   { "ignore-max-ulp", 'i', "yes/no", 0,
14762     "Ignore given maximal errors"},
14763   { "output-dir", 'o', "DIR", 0,
14764     "Directory where generated files will be placed"},
14765   { NULL, 0, NULL, 0, NULL }
14766 };
14767
14768 /* Short description of program.  */
14769 static const char doc[] = "Math test suite: " TEST_MSG ;
14770
14771 /* Prototype for option handler.  */
14772 static error_t parse_opt (int key, char *arg, struct argp_state *state);
14773
14774 /* Data structure to communicate with argp functions.  */
14775 static struct argp argp =
14776 {
14777   options, parse_opt, NULL, doc,
14778 };
14779
14780
14781 /* Handle program arguments.  */
14782 static error_t
14783 parse_opt (int key, char *arg, struct argp_state *state)
14784 {
14785   switch (key)
14786     {
14787     case 'f':
14788       output_max_error = 0;
14789       break;
14790     case 'i':
14791       if (strcmp (arg, "yes") == 0)
14792         ignore_max_ulp = 1;
14793       else if (strcmp (arg, "no") == 0)
14794         ignore_max_ulp = 0;
14795       break;
14796     case 'o':
14797       output_dir = (char *) malloc (strlen (arg) + 1);
14798       if (output_dir != NULL)
14799         strcpy (output_dir, arg);
14800       else
14801         return errno;
14802       break;
14803     case 'p':
14804       output_points = 0;
14805       break;
14806     case 'u':
14807       output_ulps = 1;
14808       break;
14809     case 'v':
14810       if (optarg)
14811         verbose = (unsigned int) strtoul (optarg, NULL, 0);
14812       else
14813         verbose = 3;
14814       break;
14815     default:
14816       return ARGP_ERR_UNKNOWN;
14817     }
14818   return 0;
14819 }
14820
14821 #if 0
14822 /* function to check our ulp calculation.  */
14823 void
14824 check_ulp (void)
14825 {
14826   int i;
14827
14828   FLOAT u, diff, ulp;
14829   /* This gives one ulp.  */
14830   u = FUNC(nextafter) (10, 20);
14831   check_equal (10.0, u, 1, &diff, &ulp);
14832   printf ("One ulp: % .4" PRINTF_NEXPR "\n", ulp);
14833
14834   /* This gives one more ulp.  */
14835   u = FUNC(nextafter) (u, 20);
14836   check_equal (10.0, u, 2, &diff, &ulp);
14837   printf ("two ulp: % .4" PRINTF_NEXPR "\n", ulp);
14838
14839   /* And now calculate 100 ulp.  */
14840   for (i = 2; i < 100; i++)
14841     u = FUNC(nextafter) (u, 20);
14842   check_equal (10.0, u, 100, &diff, &ulp);
14843   printf ("100 ulp: % .4" PRINTF_NEXPR "\n", ulp);
14844 }
14845 #endif
14846
14847 int
14848 main (int argc, char **argv)
14849 {
14850
14851   int remaining;
14852   char *ulps_file_path;
14853   size_t dir_len = 0;
14854
14855   verbose = 1;
14856   output_ulps = 0;
14857   output_max_error = 1;
14858   output_points = 1;
14859   output_dir = NULL;
14860   /* XXX set to 0 for releases.  */
14861   ignore_max_ulp = 0;
14862
14863   /* Parse and process arguments.  */
14864   argp_parse (&argp, argc, argv, 0, &remaining, NULL);
14865
14866   if (remaining != argc)
14867     {
14868       fprintf (stderr, "wrong number of arguments");
14869       argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
14870       exit (EXIT_FAILURE);
14871     }
14872
14873   if (output_ulps)
14874     {
14875       if (output_dir != NULL)
14876         dir_len = strlen (output_dir);
14877       ulps_file_path = (char *) malloc (dir_len + strlen (ulps_file_name) + 1);
14878       if (ulps_file_path == NULL)
14879         {
14880           perror ("can't allocate path for `ULPs' file: ");
14881           exit (1);
14882         }
14883       sprintf (ulps_file_path, "%s%s", output_dir == NULL ? "" : output_dir, ulps_file_name);
14884       ulps_file = fopen (ulps_file_path, "a");
14885       if (ulps_file == NULL)
14886         {
14887           perror ("can't open file `ULPs' for writing: ");
14888           exit (1);
14889         }
14890     }
14891
14892
14893   initialize ();
14894   printf (TEST_MSG);
14895
14896 #if 0
14897   check_ulp ();
14898 #endif
14899
14900   /* Keep the tests a wee bit ordered (according to ISO C99).  */
14901   /* Classification macros:  */
14902   finite_test ();
14903   fpclassify_test ();
14904   isfinite_test ();
14905   isinf_test ();
14906   isnan_test ();
14907   isnormal_test ();
14908   issignaling_test ();
14909   signbit_test ();
14910
14911   /* Trigonometric functions:  */
14912   acos_test ();
14913   acos_test_tonearest ();
14914   acos_test_towardzero ();
14915   acos_test_downward ();
14916   acos_test_upward ();
14917   asin_test ();
14918   asin_test_tonearest ();
14919   asin_test_towardzero ();
14920   asin_test_downward ();
14921   asin_test_upward ();
14922   atan_test ();
14923   atan2_test ();
14924   cos_test ();
14925   cos_test_tonearest ();
14926   cos_test_towardzero ();
14927   cos_test_downward ();
14928   cos_test_upward ();
14929   sin_test ();
14930   sin_test_tonearest ();
14931   sin_test_towardzero ();
14932   sin_test_downward ();
14933   sin_test_upward ();
14934   sincos_test ();
14935   tan_test ();
14936   tan_test_tonearest ();
14937   tan_test_towardzero ();
14938   tan_test_downward ();
14939   tan_test_upward ();
14940
14941   /* Hyperbolic functions:  */
14942   acosh_test ();
14943   asinh_test ();
14944   atanh_test ();
14945   cosh_test ();
14946   cosh_test_tonearest ();
14947   cosh_test_towardzero ();
14948   cosh_test_downward ();
14949   cosh_test_upward ();
14950   sinh_test ();
14951   sinh_test_tonearest ();
14952   sinh_test_towardzero ();
14953   sinh_test_downward ();
14954   sinh_test_upward ();
14955   tanh_test ();
14956
14957   /* Exponential and logarithmic functions:  */
14958   exp_test ();
14959   exp_test_tonearest ();
14960   exp_test_towardzero ();
14961   exp_test_downward ();
14962   exp_test_upward ();
14963   exp10_test ();
14964   exp2_test ();
14965   expm1_test ();
14966   frexp_test ();
14967   ldexp_test ();
14968   log_test ();
14969   log10_test ();
14970   log1p_test ();
14971   log2_test ();
14972   logb_test ();
14973   logb_test_downward ();
14974   modf_test ();
14975   ilogb_test ();
14976   scalb_test ();
14977   scalbn_test ();
14978   scalbln_test ();
14979   significand_test ();
14980
14981   /* Power and absolute value functions:  */
14982   cbrt_test ();
14983   fabs_test ();
14984   hypot_test ();
14985   pow_test ();
14986   pow_test_tonearest ();
14987   pow_test_towardzero ();
14988   pow_test_downward ();
14989   pow_test_upward ();
14990   sqrt_test ();
14991
14992   /* Error and gamma functions:  */
14993   erf_test ();
14994   erfc_test ();
14995   gamma_test ();
14996   lgamma_test ();
14997   tgamma_test ();
14998
14999   /* Nearest integer functions:  */
15000   ceil_test ();
15001   floor_test ();
15002   nearbyint_test ();
15003   rint_test ();
15004   rint_test_tonearest ();
15005   rint_test_towardzero ();
15006   rint_test_downward ();
15007   rint_test_upward ();
15008   lrint_test ();
15009   lrint_test_tonearest ();
15010   lrint_test_towardzero ();
15011   lrint_test_downward ();
15012   lrint_test_upward ();
15013   llrint_test ();
15014   llrint_test_tonearest ();
15015   llrint_test_towardzero ();
15016   llrint_test_downward ();
15017   llrint_test_upward ();
15018   round_test ();
15019   lround_test ();
15020   llround_test ();
15021   trunc_test ();
15022
15023   /* Remainder functions:  */
15024   fmod_test ();
15025   remainder_test ();
15026   remquo_test ();
15027
15028   /* Manipulation functions:  */
15029   copysign_test ();
15030   nextafter_test ();
15031   nexttoward_test ();
15032
15033   /* maximum, minimum and positive difference functions */
15034   fdim_test ();
15035   fmax_test ();
15036   fmin_test ();
15037
15038   /* Multiply and add:  */
15039   fma_test ();
15040   fma_test_towardzero ();
15041   fma_test_downward ();
15042   fma_test_upward ();
15043
15044   /* Comparison macros:  */
15045   isgreater_test ();
15046   isgreaterequal_test ();
15047   isless_test ();
15048   islessequal_test ();
15049   islessgreater_test ();
15050   isunordered_test ();
15051
15052   /* Complex functions:  */
15053   cabs_test ();
15054   cacos_test ();
15055   cacosh_test ();
15056   carg_test ();
15057   casin_test ();
15058   casinh_test ();
15059   catan_test ();
15060   catanh_test ();
15061   ccos_test ();
15062   ccosh_test ();
15063   cexp_test ();
15064   cimag_test ();
15065   clog10_test ();
15066   clog_test ();
15067   conj_test ();
15068   cpow_test ();
15069   cproj_test ();
15070   creal_test ();
15071   csin_test ();
15072   csinh_test ();
15073   csqrt_test ();
15074   ctan_test ();
15075   ctan_test_tonearest ();
15076   ctan_test_towardzero ();
15077   ctan_test_downward ();
15078   ctan_test_upward ();
15079   ctanh_test ();
15080   ctanh_test_tonearest ();
15081   ctanh_test_towardzero ();
15082   ctanh_test_downward ();
15083   ctanh_test_upward ();
15084
15085   /* Bessel functions:  */
15086   j0_test ();
15087   j1_test ();
15088   jn_test ();
15089   y0_test ();
15090   y1_test ();
15091   yn_test ();
15092
15093   if (output_ulps)
15094     fclose (ulps_file);
15095
15096   printf ("\nTest suite completed:\n");
15097   printf ("  %d test cases plus %d tests for exception flags and\n"
15098           "    %d tests for errno executed.\n",
15099           noTests, noExcTests, noErrnoTests);
15100   if (noErrors)
15101     {
15102       printf ("  %d errors occurred.\n", noErrors);
15103       return 1;
15104     }
15105   printf ("  All tests passed successfully.\n");
15106
15107   return 0;
15108 }
15109
15110 /*
15111  * Local Variables:
15112  * mode:c
15113  * End:
15114  */