Convert TEST_fi_f tests from code to data.
[platform/upstream/glibc.git] / math / libm-test.inc
1 /* Copyright (C) 1997-2013 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Andreas Jaeger <aj@suse.de>, 1997.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <http://www.gnu.org/licenses/>.  */
18
19 /* Part of testsuite for libm.
20
21    This file is processed by a perl script.  The resulting file has to
22    be included by a master file that defines:
23
24    Macros:
25    FUNC(function): converts general function name (like cos) to
26    name with correct suffix (e.g. cosl or cosf)
27    MATHCONST(x):   like FUNC but for constants (e.g convert 0.0 to 0.0L)
28    FLOAT:          floating point type to test
29    - TEST_MSG:     informal message to be displayed
30    CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat):
31    chooses one of the parameters as delta for testing
32    equality
33    PRINTF_EXPR     Floating point conversion specification to print a variable
34    of type FLOAT with printf.  PRINTF_EXPR just contains
35    the specifier, not the percent and width arguments,
36    e.g. "f".
37    PRINTF_XEXPR    Like PRINTF_EXPR, but print in hexadecimal format.
38    PRINTF_NEXPR Like PRINTF_EXPR, but print nice.  */
39
40 /* This testsuite has currently tests for:
41    acos, acosh, asin, asinh, atan, atan2, atanh,
42    cbrt, ceil, copysign, cos, cosh, erf, erfc, exp, exp10, exp2, expm1,
43    fabs, fdim, finite, floor, fma, fmax, fmin, fmod, fpclassify,
44    frexp, gamma, hypot,
45    ilogb, isfinite, isinf, isnan, isnormal, issignaling,
46    isless, islessequal, isgreater, isgreaterequal, islessgreater, isunordered,
47    j0, j1, jn,
48    ldexp, lgamma, log, log10, log1p, log2, logb,
49    modf, nearbyint, nextafter, nexttoward,
50    pow, remainder, remquo, rint, lrint, llrint,
51    round, lround, llround,
52    scalb, scalbn, scalbln, signbit, sin, sincos, sinh, sqrt, tan, tanh, tgamma, trunc,
53    y0, y1, yn, significand
54
55    and for the following complex math functions:
56    cabs, cacos, cacosh, carg, casin, casinh, catan, catanh,
57    ccos, ccosh, cexp, cimag, clog, clog10, conj, cpow, cproj, creal,
58    csin, csinh, csqrt, ctan, ctanh.
59
60    At the moment the following functions and macros aren't tested:
61    drem (alias for remainder),
62    lgamma_r,
63    nan,
64    pow10 (alias for exp10).
65
66    Parameter handling is primitive in the moment:
67    --verbose=[0..3] for different levels of output:
68    0: only error count
69    1: basic report on failed tests (default)
70    2: full report on all tests
71    -v for full output (equals --verbose=3)
72    -u for generation of an ULPs file
73  */
74
75 /* "Philosophy":
76
77    This suite tests some aspects of the correct implementation of
78    mathematical functions in libm.  Some simple, specific parameters
79    are tested for correctness but there's no exhaustive
80    testing.  Handling of specific inputs (e.g. infinity, not-a-number)
81    is also tested.  Correct handling of exceptions is checked
82    against.  These implemented tests should check all cases that are
83    specified in ISO C99.
84
85    Exception testing: At the moment only divide-by-zero, invalid,
86    overflow and underflow exceptions are tested.  Inexact exceptions
87    aren't checked at the moment.
88
89    NaN values: There exist signalling and quiet NaNs.  This implementation
90    only uses quiet NaN as parameter.  Where the sign of a NaN is
91    significant, this is not tested.  The payload of NaNs is not examined.
92
93    Inline functions: Inlining functions should give an improvement in
94    speed - but not in precission.  The inlined functions return
95    reasonable values for a reasonable range of input values.  The
96    result is not necessarily correct for all values and exceptions are
97    not correctly raised in all cases.  Problematic input and return
98    values are infinity, not-a-number and minus zero.  This suite
99    therefore does not check these specific inputs and the exception
100    handling for inlined mathematical functions - just the "reasonable"
101    values are checked.
102
103    Beware: The tests might fail for any of the following reasons:
104    - Tests are wrong
105    - Functions are wrong
106    - Floating Point Unit not working properly
107    - Compiler has errors
108
109    With e.g. gcc 2.7.2.2 the test for cexp fails because of a compiler error.
110
111
112    To Do: All parameter should be numbers that can be represented as
113    exact floating point values.  Currently some values cannot be
114    represented exactly and therefore the result is not the expected
115    result.  For this we will use 36 digits so that numbers can be
116    represented exactly.  */
117
118 #ifndef _GNU_SOURCE
119 # define _GNU_SOURCE
120 #endif
121
122 #include "libm-test-ulps.h"
123 #include <complex.h>
124 #include <math.h>
125 #include <float.h>
126 #include <fenv.h>
127 #include <limits.h>
128
129 #include <errno.h>
130 #include <stdlib.h>
131 #include <stdio.h>
132 #include <string.h>
133 #include <argp.h>
134 #include <tininess.h>
135
136 /* Allow platforms without all rounding modes to test properly,
137    assuming they provide an __FE_UNDEFINED in <bits/fenv.h> which
138    causes fesetround() to return failure.  */
139 #ifndef FE_TONEAREST
140 # define FE_TONEAREST   __FE_UNDEFINED
141 #endif
142 #ifndef FE_TOWARDZERO
143 # define FE_TOWARDZERO  __FE_UNDEFINED
144 #endif
145 #ifndef FE_UPWARD
146 # define FE_UPWARD      __FE_UNDEFINED
147 #endif
148 #ifndef FE_DOWNWARD
149 # define FE_DOWNWARD    __FE_UNDEFINED
150 #endif
151
152 /* Possible exceptions */
153 #define NO_EXCEPTION                    0x0
154 #define INVALID_EXCEPTION               0x1
155 #define DIVIDE_BY_ZERO_EXCEPTION        0x2
156 #define OVERFLOW_EXCEPTION              0x4
157 #define UNDERFLOW_EXCEPTION             0x8
158 /* The next flags signals that those exceptions are allowed but not required.   */
159 #define INVALID_EXCEPTION_OK            0x10
160 #define DIVIDE_BY_ZERO_EXCEPTION_OK     0x20
161 #define OVERFLOW_EXCEPTION_OK           0x40
162 #define UNDERFLOW_EXCEPTION_OK          0x80
163 #define EXCEPTIONS_OK INVALID_EXCEPTION_OK+DIVIDE_BY_ZERO_EXCEPTION_OK
164 /* Some special test flags, passed together with exceptions.  */
165 #define IGNORE_ZERO_INF_SIGN            0x100
166 /* Indicate errno settings required or disallowed.  */
167 #define ERRNO_UNCHANGED                 0x200
168 #define ERRNO_EDOM                      0x400
169 #define ERRNO_ERANGE                    0x800
170
171 /* Values underflowing only for float.  */
172 #ifdef TEST_FLOAT
173 # define UNDERFLOW_EXCEPTION_FLOAT      UNDERFLOW_EXCEPTION
174 # define UNDERFLOW_EXCEPTION_OK_FLOAT   UNDERFLOW_EXCEPTION_OK
175 #else
176 # define UNDERFLOW_EXCEPTION_FLOAT      0
177 # define UNDERFLOW_EXCEPTION_OK_FLOAT   0
178 #endif
179 /* Values underflowing only for double or types with a larger least
180    positive normal value.  */
181 #if defined TEST_FLOAT || defined TEST_DOUBLE \
182   || (defined TEST_LDOUBLE && LDBL_MIN_EXP >= DBL_MIN_EXP)
183 # define UNDERFLOW_EXCEPTION_DOUBLE     UNDERFLOW_EXCEPTION
184 # define UNDERFLOW_EXCEPTION_OK_DOUBLE  UNDERFLOW_EXCEPTION_OK
185 #else
186 # define UNDERFLOW_EXCEPTION_DOUBLE     0
187 # define UNDERFLOW_EXCEPTION_OK_DOUBLE  0
188 #endif
189 /* Values underflowing only for IBM long double or types with a larger least
190    positive normal value.  */
191 #if defined TEST_FLOAT || (defined TEST_LDOUBLE && LDBL_MIN_EXP > DBL_MIN_EXP)
192 # define UNDERFLOW_EXCEPTION_LDOUBLE_IBM        UNDERFLOW_EXCEPTION
193 #else
194 # define UNDERFLOW_EXCEPTION_LDOUBLE_IBM        0
195 #endif
196 /* Values underflowing on architectures detecting tininess before
197    rounding, but not on those detecting tininess after rounding.  */
198 #define UNDERFLOW_EXCEPTION_BEFORE_ROUNDING     (TININESS_AFTER_ROUNDING \
199                                                  ? 0                    \
200                                                  : UNDERFLOW_EXCEPTION)
201
202 /* Various constants (we must supply them precalculated for accuracy).  */
203 #define M_PI_6l                 .52359877559829887307710723054658383L
204 #define M_E2l                   7.389056098930650227230427460575008L
205 #define M_E3l                   20.085536923187667740928529654581719L
206 #define M_2_SQRT_PIl            3.5449077018110320545963349666822903L   /* 2 sqrt (M_PIl)  */
207 #define M_SQRT_PIl              1.7724538509055160272981674833411451L   /* sqrt (M_PIl)  */
208 #define M_LOG_SQRT_PIl          0.57236494292470008707171367567652933L  /* log(sqrt(M_PIl))  */
209 #define M_LOG_2_SQRT_PIl        1.265512123484645396488945797134706L    /* log(2*sqrt(M_PIl))  */
210 #define M_PI_34l                2.356194490192344928846982537459627163L /* 3*pi/4 */
211 #define M_PI_34_LOG10El         1.023282265381381010614337719073516828L
212 #define M_PI2_LOG10El           0.682188176920920673742891812715677885L
213 #define M_PI4_LOG10El           0.341094088460460336871445906357838943L
214 #define M_PI_LOG10El            1.364376353841841347485783625431355770L
215 #define M_1_DIV_El              0.367879441171442321595523770161460867L /* 1 div e  */
216
217 #define ulps_file_name "ULPs"   /* Name of the ULPs file.  */
218 static FILE *ulps_file;         /* File to document difference.  */
219 static int output_ulps;         /* Should ulps printed?  */
220 static char *output_dir;        /* Directory where generated files will be written.  */
221
222 static int noErrors;    /* number of errors */
223 static int noTests;     /* number of tests (without testing exceptions) */
224 static int noExcTests;  /* number of tests for exception flags */
225 static int noErrnoTests;/* number of tests for errno values */
226
227 static int verbose;
228 static int output_max_error;    /* Should the maximal errors printed?  */
229 static int output_points;       /* Should the single function results printed?  */
230 static int ignore_max_ulp;      /* Should we ignore max_ulp?  */
231
232 #define PLUS_ZERO_INIT  CHOOSE (0.0L, 0.0, 0.0f,        \
233                                 0.0L, 0.0, 0.0f)
234 #define MINUS_ZERO_INIT CHOOSE (-0.0L, -0.0, -0.0f,     \
235                                 -0.0L, -0.0, -0.0f)
236 #define PLUS_INFTY_INIT CHOOSE (HUGE_VALL, HUGE_VAL, HUGE_VALF, \
237                                 HUGE_VALL, HUGE_VAL, HUGE_VALF)
238 #define MINUS_INFTY_INIT        CHOOSE (-HUGE_VALL, -HUGE_VAL, -HUGE_VALF, \
239                                         -HUGE_VALL, -HUGE_VAL, -HUGE_VALF)
240 #define QNAN_VALUE_INIT FUNC (__builtin_nan) ("")
241 #define MAX_VALUE_INIT  CHOOSE (LDBL_MAX, DBL_MAX, FLT_MAX,     \
242                                 LDBL_MAX, DBL_MAX, FLT_MAX)
243 #define MIN_VALUE_INIT  CHOOSE (LDBL_MIN, DBL_MIN, FLT_MIN,     \
244                                 LDBL_MIN, DBL_MIN, FLT_MIN)
245 #define MIN_SUBNORM_VALUE_INIT  CHOOSE (__LDBL_DENORM_MIN__,    \
246                                         __DBL_DENORM_MIN__,     \
247                                         __FLT_DENORM_MIN__,     \
248                                         __LDBL_DENORM_MIN__,    \
249                                         __DBL_DENORM_MIN__,     \
250                                         __FLT_DENORM_MIN__)
251
252 static const FLOAT plus_zero = PLUS_ZERO_INIT;
253 static const FLOAT minus_zero = MINUS_ZERO_INIT;
254 static const FLOAT plus_infty = PLUS_INFTY_INIT;
255 static const FLOAT minus_infty = MINUS_INFTY_INIT;
256 static const FLOAT qnan_value = QNAN_VALUE_INIT;
257 static const FLOAT max_value = MAX_VALUE_INIT;
258 static const FLOAT min_value = MIN_VALUE_INIT;
259 static const FLOAT min_subnorm_value = MIN_SUBNORM_VALUE_INIT;
260
261 static FLOAT max_error, real_max_error, imag_max_error;
262
263
264 #define BUILD_COMPLEX(real, imag) \
265   ({ __complex__ FLOAT __retval;                                              \
266      __real__ __retval = (real);                                              \
267      __imag__ __retval = (imag);                                              \
268      __retval; })
269 #define BUILD_COMPLEX_ULP(real, imag) ((real) + I * (imag))
270
271 #define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1),  \
272                          (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
273
274 static void
275 init_max_error (void)
276 {
277   max_error = 0;
278   real_max_error = 0;
279   imag_max_error = 0;
280   feclearexcept (FE_ALL_EXCEPT);
281   errno = 0;
282 }
283
284 static void
285 set_max_error (FLOAT current, FLOAT *curr_max_error)
286 {
287   if (current > *curr_max_error)
288     *curr_max_error = current;
289 }
290
291
292 /* Print a FLOAT.  */
293 static void
294 print_float (FLOAT f)
295 {
296   /* As printf doesn't differ between a sNaN and a qNaN, do this manually.  */
297   if (issignaling (f))
298     printf ("sNaN\n");
299   else if (isnan (f))
300     printf ("qNaN\n");
301   else
302     printf ("% .20" PRINTF_EXPR "  % .20" PRINTF_XEXPR "\n", f, f);
303 }
304
305 /* Should the message print to screen?  This depends on the verbose flag,
306    and the test status.  */
307 static int
308 print_screen (int ok)
309 {
310   if (output_points
311       && (verbose > 1
312           || (verbose == 1 && ok == 0)))
313     return 1;
314   return 0;
315 }
316
317
318 /* Should the message print to screen?  This depends on the verbose flag,
319    and the test status.  */
320 static int
321 print_screen_max_error (int ok)
322 {
323   if (output_max_error
324       && (verbose > 1
325           || ((verbose == 1) && (ok == 0))))
326     return 1;
327   return 0;
328 }
329
330 /* Update statistic counters.  */
331 static void
332 update_stats (int ok)
333 {
334   ++noTests;
335   if (!ok)
336     ++noErrors;
337 }
338
339 static void
340 print_ulps (const char *test_name, FLOAT ulp)
341 {
342   if (output_ulps)
343     {
344       fprintf (ulps_file, "Test \"%s\":\n", test_name);
345       fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
346                CHOOSE("ldouble", "double", "float",
347                       "ildouble", "idouble", "ifloat"),
348                FUNC(ceil) (ulp));
349     }
350 }
351
352 static void
353 print_function_ulps (const char *function_name, FLOAT ulp)
354 {
355   if (output_ulps)
356     {
357       fprintf (ulps_file, "Function: \"%s\":\n", function_name);
358       fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
359                CHOOSE("ldouble", "double", "float",
360                       "ildouble", "idouble", "ifloat"),
361                FUNC(ceil) (ulp));
362     }
363 }
364
365
366 static void
367 print_complex_function_ulps (const char *function_name, FLOAT real_ulp,
368                              FLOAT imag_ulp)
369 {
370   if (output_ulps)
371     {
372       if (real_ulp != 0.0)
373         {
374           fprintf (ulps_file, "Function: Real part of \"%s\":\n", function_name);
375           fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
376                    CHOOSE("ldouble", "double", "float",
377                           "ildouble", "idouble", "ifloat"),
378                    FUNC(ceil) (real_ulp));
379         }
380       if (imag_ulp != 0.0)
381         {
382           fprintf (ulps_file, "Function: Imaginary part of \"%s\":\n", function_name);
383           fprintf (ulps_file, "%s: %.0" PRINTF_NEXPR "\n",
384                    CHOOSE("ldouble", "double", "float",
385                           "ildouble", "idouble", "ifloat"),
386                    FUNC(ceil) (imag_ulp));
387         }
388
389
390     }
391 }
392
393
394
395 /* Test if Floating-Point stack hasn't changed */
396 static void
397 fpstack_test (const char *test_name)
398 {
399 #if defined (__i386__) || defined (__x86_64__)
400   static int old_stack;
401   int sw;
402
403   asm ("fnstsw" : "=a" (sw));
404   sw >>= 11;
405   sw &= 7;
406
407   if (sw != old_stack)
408     {
409       printf ("FP-Stack wrong after test %s (%d, should be %d)\n",
410               test_name, sw, old_stack);
411       ++noErrors;
412       old_stack = sw;
413     }
414 #endif
415 }
416
417
418 static void
419 print_max_error (const char *func_name, FLOAT allowed)
420 {
421   int ok = 0;
422
423   if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp))
424     {
425       ok = 1;
426     }
427
428   if (!ok)
429     print_function_ulps (func_name, max_error);
430
431
432   if (print_screen_max_error (ok))
433     {
434       printf ("Maximal error of `%s'\n", func_name);
435       printf (" is      : %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (max_error));
436       printf (" accepted: %.0" PRINTF_NEXPR " ulp\n", FUNC(ceil) (allowed));
437     }
438
439   update_stats (ok);
440 }
441
442
443 static void
444 print_complex_max_error (const char *func_name, __complex__ FLOAT allowed)
445 {
446   int ok = 0;
447
448   if ((real_max_error == 0 && imag_max_error == 0)
449       || (real_max_error <= __real__ allowed
450           && imag_max_error <= __imag__ allowed
451           && !ignore_max_ulp))
452     {
453       ok = 1;
454     }
455
456   if (!ok)
457     print_complex_function_ulps (func_name, real_max_error, imag_max_error);
458
459
460   if (print_screen_max_error (ok))
461     {
462       printf ("Maximal error of real part of: %s\n", func_name);
463       printf (" is      : %.0" PRINTF_NEXPR " ulp\n",
464               FUNC(ceil) (real_max_error));
465       printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
466               FUNC(ceil) (__real__ allowed));
467       printf ("Maximal error of imaginary part of: %s\n", func_name);
468       printf (" is      : %.0" PRINTF_NEXPR " ulp\n",
469               FUNC(ceil) (imag_max_error));
470       printf (" accepted: %.0" PRINTF_NEXPR " ulp\n",
471               FUNC(ceil) (__imag__ allowed));
472     }
473
474   update_stats (ok);
475 }
476
477
478 /* Test whether a given exception was raised.  */
479 static void
480 test_single_exception (const char *test_name,
481                        int exception,
482                        int exc_flag,
483                        int fe_flag,
484                        const char *flag_name)
485 {
486 #ifndef TEST_INLINE
487   int ok = 1;
488   if (exception & exc_flag)
489     {
490       if (fetestexcept (fe_flag))
491         {
492           if (print_screen (1))
493             printf ("Pass: %s: Exception \"%s\" set\n", test_name, flag_name);
494         }
495       else
496         {
497           ok = 0;
498           if (print_screen (0))
499             printf ("Failure: %s: Exception \"%s\" not set\n",
500                     test_name, flag_name);
501         }
502     }
503   else
504     {
505       if (fetestexcept (fe_flag))
506         {
507           ok = 0;
508           if (print_screen (0))
509             printf ("Failure: %s: Exception \"%s\" set\n",
510                     test_name, flag_name);
511         }
512       else
513         {
514           if (print_screen (1))
515             printf ("%s: Exception \"%s\" not set\n", test_name,
516                     flag_name);
517         }
518     }
519   if (!ok)
520     ++noErrors;
521
522 #endif
523 }
524
525
526 /* Test whether exceptions given by EXCEPTION are raised.  Ignore thereby
527    allowed but not required exceptions.
528 */
529 static void
530 test_exceptions (const char *test_name, int exception)
531 {
532   ++noExcTests;
533 #ifdef FE_DIVBYZERO
534   if ((exception & DIVIDE_BY_ZERO_EXCEPTION_OK) == 0)
535     test_single_exception (test_name, exception,
536                            DIVIDE_BY_ZERO_EXCEPTION, FE_DIVBYZERO,
537                            "Divide by zero");
538 #endif
539 #ifdef FE_INVALID
540   if ((exception & INVALID_EXCEPTION_OK) == 0)
541     test_single_exception (test_name, exception, INVALID_EXCEPTION, FE_INVALID,
542                          "Invalid operation");
543 #endif
544 #ifdef FE_OVERFLOW
545   if ((exception & OVERFLOW_EXCEPTION_OK) == 0)
546     test_single_exception (test_name, exception, OVERFLOW_EXCEPTION,
547                            FE_OVERFLOW, "Overflow");
548 #endif
549 #ifdef FE_UNDERFLOW
550   if ((exception & UNDERFLOW_EXCEPTION_OK) == 0)
551     test_single_exception (test_name, exception, UNDERFLOW_EXCEPTION,
552                            FE_UNDERFLOW, "Underflow");
553 #endif
554   feclearexcept (FE_ALL_EXCEPT);
555 }
556
557 /* Test whether errno for TEST_NAME, set to ERRNO_VALUE, has value
558    EXPECTED_VALUE (description EXPECTED_NAME).  */
559 static void
560 test_single_errno (const char *test_name, int errno_value,
561                    int expected_value, const char *expected_name)
562 {
563   if (errno_value == expected_value)
564     {
565       if (print_screen (1))
566         printf ("Pass: %s: errno set to %d (%s)\n", test_name, errno_value,
567                 expected_name);
568     }
569   else
570     {
571       ++noErrors;
572       if (print_screen (0))
573         printf ("Failure: %s: errno set to %d, expected %d (%s)\n",
574                 test_name, errno_value, expected_value, expected_name);
575     }
576 }
577
578 /* Test whether errno (value ERRNO_VALUE) has been for TEST_NAME set
579    as required by EXCEPTIONS.  */
580 static void
581 test_errno (const char *test_name, int errno_value, int exceptions)
582 {
583   ++noErrnoTests;
584   if (exceptions & ERRNO_UNCHANGED)
585     test_single_errno (test_name, errno_value, 0, "unchanged");
586   if (exceptions & ERRNO_EDOM)
587     test_single_errno (test_name, errno_value, EDOM, "EDOM");
588   if (exceptions & ERRNO_ERANGE)
589     test_single_errno (test_name, errno_value, ERANGE, "ERANGE");
590 }
591
592 static void
593 check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
594                       FLOAT max_ulp, int exceptions,
595                       FLOAT *curr_max_error)
596 {
597   int ok = 0;
598   int print_diff = 0;
599   FLOAT diff = 0;
600   FLOAT ulp = 0;
601   int errno_value = errno;
602
603   test_exceptions (test_name, exceptions);
604   test_errno (test_name, errno_value, exceptions);
605   if (issignaling (computed) && issignaling (expected))
606     ok = 1;
607   else if (issignaling (computed) || issignaling (expected))
608     ok = 0;
609   else if (isnan (computed) && isnan (expected))
610     ok = 1;
611   else if (isinf (computed) && isinf (expected))
612     {
613       /* Test for sign of infinities.  */
614       if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
615           && signbit (computed) != signbit (expected))
616         {
617           ok = 0;
618           printf ("infinity has wrong sign.\n");
619         }
620       else
621         ok = 1;
622     }
623   /* Don't calculate ULPs for infinities or any kind of NaNs.  */
624   else if (isinf (computed) || isnan (computed)
625            || isinf (expected) || isnan (expected))
626     ok = 0;
627   else
628     {
629       diff = FUNC(fabs) (computed - expected);
630       switch (fpclassify (expected))
631         {
632         case FP_ZERO:
633           /* ilogb (0) isn't allowed. */
634           ulp = diff / FUNC(ldexp) (1.0, - MANT_DIG);
635           break;
636         case FP_NORMAL:
637           ulp = diff / FUNC(ldexp) (1.0, FUNC(ilogb) (expected) - MANT_DIG);
638           break;
639         case FP_SUBNORMAL:
640           /* 1ulp for a subnormal value, shifted by MANT_DIG, is the
641              least normal value.  */
642           ulp = (FUNC(ldexp) (diff, MANT_DIG) / min_value);
643           break;
644         default:
645           /* It should never happen. */
646           abort ();
647           break;
648         }
649       set_max_error (ulp, curr_max_error);
650       print_diff = 1;
651       if ((exceptions & IGNORE_ZERO_INF_SIGN) == 0
652           && computed == 0.0 && expected == 0.0
653           && signbit(computed) != signbit (expected))
654         ok = 0;
655       else if (ulp <= 0.5 || (ulp <= max_ulp && !ignore_max_ulp))
656         ok = 1;
657       else
658         {
659           ok = 0;
660           print_ulps (test_name, ulp);
661         }
662
663     }
664   if (print_screen (ok))
665     {
666       if (!ok)
667         printf ("Failure: ");
668       printf ("Test: %s\n", test_name);
669       printf ("Result:\n");
670       printf (" is:         ");
671       print_float (computed);
672       printf (" should be:  ");
673       print_float (expected);
674       if (print_diff)
675         {
676           printf (" difference: % .20" PRINTF_EXPR "  % .20" PRINTF_XEXPR
677                   "\n", diff, diff);
678           printf (" ulp       : % .4" PRINTF_NEXPR "\n", ulp);
679           printf (" max.ulp   : % .4" PRINTF_NEXPR "\n", max_ulp);
680         }
681     }
682   update_stats (ok);
683
684   fpstack_test (test_name);
685   errno = 0;
686 }
687
688
689 static void
690 check_float (const char *test_name, FLOAT computed, FLOAT expected,
691              FLOAT max_ulp, int exceptions)
692 {
693   check_float_internal (test_name, computed, expected, max_ulp,
694                         exceptions, &max_error);
695 }
696
697
698 static void
699 check_complex (const char *test_name, __complex__ FLOAT computed,
700                __complex__ FLOAT expected,
701                __complex__ FLOAT max_ulp,
702                int exception)
703 {
704   FLOAT part_comp, part_exp, part_max_ulp;
705   char *str;
706
707   if (asprintf (&str, "Real part of: %s", test_name) == -1)
708     abort ();
709
710   part_comp = __real__ computed;
711   part_exp = __real__ expected;
712   part_max_ulp = __real__ max_ulp;
713
714   check_float_internal (str, part_comp, part_exp, part_max_ulp,
715                         exception, &real_max_error);
716   free (str);
717
718   if (asprintf (&str, "Imaginary part of: %s", test_name) == -1)
719     abort ();
720
721   part_comp = __imag__ computed;
722   part_exp = __imag__ expected;
723   part_max_ulp = __imag__ max_ulp;
724
725   /* Don't check again for exceptions or errno, just pass through the
726      zero/inf sign test.  */
727   check_float_internal (str, part_comp, part_exp, part_max_ulp,
728                         exception & IGNORE_ZERO_INF_SIGN,
729                         &imag_max_error);
730   free (str);
731 }
732
733
734 /* Check that computed and expected values are equal (int values).  */
735 static void
736 check_int (const char *test_name, int computed, int expected, int max_ulp,
737            int exceptions)
738 {
739   int diff = computed - expected;
740   int ok = 0;
741   int errno_value = errno;
742
743   test_exceptions (test_name, exceptions);
744   test_errno (test_name, errno_value, exceptions);
745   noTests++;
746   if (abs (diff) <= max_ulp)
747     ok = 1;
748
749   if (!ok)
750     print_ulps (test_name, diff);
751
752   if (print_screen (ok))
753     {
754       if (!ok)
755         printf ("Failure: ");
756       printf ("Test: %s\n", test_name);
757       printf ("Result:\n");
758       printf (" is:         %d\n", computed);
759       printf (" should be:  %d\n", expected);
760     }
761
762   update_stats (ok);
763   fpstack_test (test_name);
764   errno = 0;
765 }
766
767
768 /* Check that computed and expected values are equal (long int values).  */
769 static void
770 check_long (const char *test_name, long int computed, long int expected,
771             long int max_ulp, int exceptions)
772 {
773   long int diff = computed - expected;
774   int ok = 0;
775   int errno_value = errno;
776
777   test_exceptions (test_name, exceptions);
778   test_errno (test_name, errno_value, exceptions);
779   noTests++;
780   if (labs (diff) <= max_ulp)
781     ok = 1;
782
783   if (!ok)
784     print_ulps (test_name, diff);
785
786   if (print_screen (ok))
787     {
788       if (!ok)
789         printf ("Failure: ");
790       printf ("Test: %s\n", test_name);
791       printf ("Result:\n");
792       printf (" is:         %ld\n", computed);
793       printf (" should be:  %ld\n", expected);
794     }
795
796   update_stats (ok);
797   fpstack_test (test_name);
798   errno = 0;
799 }
800
801
802 /* Check that computed value is true/false.  */
803 static void
804 check_bool (const char *test_name, int computed, int expected,
805             long int max_ulp, int exceptions)
806 {
807   int ok = 0;
808   int errno_value = errno;
809
810   test_exceptions (test_name, exceptions);
811   test_errno (test_name, errno_value, exceptions);
812   noTests++;
813   if ((computed == 0) == (expected == 0))
814     ok = 1;
815
816   if (print_screen (ok))
817     {
818       if (!ok)
819         printf ("Failure: ");
820       printf ("Test: %s\n", test_name);
821       printf ("Result:\n");
822       printf (" is:         %d\n", computed);
823       printf (" should be:  %d\n", expected);
824     }
825
826   update_stats (ok);
827   fpstack_test (test_name);
828   errno = 0;
829 }
830
831
832 /* check that computed and expected values are equal (long int values) */
833 static void
834 check_longlong (const char *test_name, long long int computed,
835                 long long int expected,
836                 long long int max_ulp,
837                 int exceptions)
838 {
839   long long int diff = computed - expected;
840   int ok = 0;
841   int errno_value = errno;
842
843   test_exceptions (test_name, exceptions);
844   test_errno (test_name, errno_value, exceptions);
845   noTests++;
846   if (llabs (diff) <= max_ulp)
847     ok = 1;
848
849   if (!ok)
850     print_ulps (test_name, diff);
851
852   if (print_screen (ok))
853     {
854       if (!ok)
855         printf ("Failure:");
856       printf ("Test: %s\n", test_name);
857       printf ("Result:\n");
858       printf (" is:         %lld\n", computed);
859       printf (" should be:  %lld\n", expected);
860     }
861
862   update_stats (ok);
863   fpstack_test (test_name);
864   errno = 0;
865 }
866
867 /* Structures for each kind of test.  */
868 struct test_f_f_data
869 {
870   const char *test_name;
871   FLOAT arg;
872   FLOAT expected;
873   FLOAT max_ulp;
874   int exceptions;
875 };
876 struct test_ff_f_data
877 {
878   const char *test_name;
879   FLOAT arg1, arg2;
880   FLOAT expected;
881   FLOAT max_ulp;
882   int exceptions;
883 };
884 struct test_ff_f_data_nexttoward
885 {
886   const char *test_name;
887   FLOAT arg1;
888   long double arg2;
889   FLOAT expected;
890   FLOAT max_ulp;
891   int exceptions;
892 };
893 struct test_fi_f_data
894 {
895   const char *test_name;
896   FLOAT arg1;
897   int arg2;
898   FLOAT expected;
899   FLOAT max_ulp;
900   int exceptions;
901 };
902 struct test_if_f_data
903 {
904   const char *test_name;
905   int arg1;
906   FLOAT arg2;
907   FLOAT expected;
908   FLOAT max_ulp;
909   int exceptions;
910 };
911 struct test_fff_f_data
912 {
913   const char *test_name;
914   FLOAT arg1, arg2, arg3;
915   FLOAT expected;
916   FLOAT max_ulp;
917   int exceptions;
918 };
919 struct test_c_f_data
920 {
921   const char *test_name;
922   FLOAT argr, argc;
923   FLOAT expected;
924   FLOAT max_ulp;
925   int exceptions;
926 };
927 struct test_c_c_data
928 {
929   const char *test_name;
930   FLOAT argr, argc;
931   FLOAT expr, expc;
932   __complex__ FLOAT max_ulp;
933   int exceptions;
934 };
935
936 /* Set the rounding mode, or restore the saved value.  */
937 #define IF_ROUND_INIT_  /* Empty.  */
938 #define IF_ROUND_INIT_FE_DOWNWARD               \
939   int save_round_mode = fegetround ();          \
940   if (fesetround (FE_DOWNWARD) == 0)
941 #define IF_ROUND_INIT_FE_TONEAREST              \
942   int save_round_mode = fegetround ();          \
943   if (fesetround (FE_TONEAREST) == 0)
944 #define IF_ROUND_INIT_FE_TOWARDZERO             \
945   int save_round_mode = fegetround ();          \
946   if (fesetround (FE_TOWARDZERO) == 0)
947 #define IF_ROUND_INIT_FE_UPWARD                 \
948   int save_round_mode = fegetround ();          \
949   if (fesetround (FE_UPWARD) == 0)
950 #define ROUND_RESTORE_  /* Empty.  */
951 #define ROUND_RESTORE_FE_DOWNWARD               \
952   fesetround (save_round_mode)
953 #define ROUND_RESTORE_FE_TONEAREST              \
954   fesetround (save_round_mode)
955 #define ROUND_RESTORE_FE_TOWARDZERO             \
956   fesetround (save_round_mode)
957 #define ROUND_RESTORE_FE_UPWARD                 \
958   fesetround (save_round_mode)
959
960 /* Run an individual test, including any required setup and checking
961    of results, or loop over all tests in an array.  */
962 #define RUN_TEST_f_f(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
963                      MAX_ULP, EXCEPTIONS)                       \
964   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,     \
965                MAX_ULP, EXCEPTIONS)
966 #define RUN_TEST_LOOP_f_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
967   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
968     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
969       RUN_TEST_f_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg,    \
970                     (ARRAY)[i].expected, (ARRAY)[i].max_ulp,            \
971                     (ARRAY)[i].exceptions);                             \
972   ROUND_RESTORE_ ## ROUNDING_MODE
973 #define RUN_TEST_2_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
974                      MAX_ULP, EXCEPTIONS)                               \
975   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2), EXPECTED,      \
976                MAX_ULP, EXCEPTIONS)
977 #define RUN_TEST_LOOP_2_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
978   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
979     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
980       RUN_TEST_2_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1,   \
981                     (ARRAY)[i].arg2, (ARRAY)[i].expected,               \
982                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
983   ROUND_RESTORE_ ## ROUNDING_MODE
984 #define RUN_TEST_ff_f RUN_TEST_2_f
985 #define RUN_TEST_LOOP_ff_f RUN_TEST_LOOP_2_f
986 #define RUN_TEST_fi_f RUN_TEST_2_f
987 #define RUN_TEST_LOOP_fi_f RUN_TEST_LOOP_2_f
988 #define RUN_TEST_fl_f RUN_TEST_2_f
989 #define RUN_TEST_if_f RUN_TEST_2_f
990 #define RUN_TEST_LOOP_if_f RUN_TEST_LOOP_2_f
991 #define RUN_TEST_fff_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, ARG3,  \
992                        EXPECTED, MAX_ULP, EXCEPTIONS)           \
993   check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2, ARG3),  \
994                EXPECTED, MAX_ULP, EXCEPTIONS)
995 #define RUN_TEST_LOOP_fff_f(FUNC_NAME, ARRAY, ROUNDING_MODE)            \
996   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
997     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
998       RUN_TEST_fff_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg1, \
999                       (ARRAY)[i].arg2, (ARRAY)[i].arg3,                 \
1000                       (ARRAY)[i].expected, (ARRAY)[i].max_ulp,          \
1001                       (ARRAY)[i].exceptions);                           \
1002   ROUND_RESTORE_ ## ROUNDING_MODE
1003 #define RUN_TEST_c_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,        \
1004                      MAX_ULP, EXCEPTIONS)                               \
1005   check_float (TEST_NAME,                                               \
1006                FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1, ARG2)),           \
1007                EXPECTED, MAX_ULP, EXCEPTIONS)
1008 #define RUN_TEST_LOOP_c_f(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1009   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1010     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1011       RUN_TEST_c_f ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].argr,   \
1012                     (ARRAY)[i].argc, (ARRAY)[i].expected,               \
1013                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1014   ROUND_RESTORE_ ## ROUNDING_MODE
1015 #define RUN_TEST_f_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,              \
1016                       MAX_ULP, EXCEPTIONS,                              \
1017                       EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,    \
1018                       EXTRA_EXPECTED, EXTRA_ULP)                        \
1019   do                                                                    \
1020     {                                                                   \
1021       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1022       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,         \
1023                    MAX_ULP, EXCEPTIONS);                                \
1024       if (EXTRA_TEST)                                                   \
1025         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1026                    EXTRA_ULP, 0);                                       \
1027     }                                                                   \
1028   while (0)
1029 #define RUN_TEST_fF_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
1030                        MAX_ULP, EXCEPTIONS,                             \
1031                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
1032                        EXTRA_EXPECTED, EXTRA_ULP)                       \
1033   do                                                                    \
1034     {                                                                   \
1035       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1036       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1037                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1038       if (EXTRA_TEST)                                                   \
1039         check_float (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,             \
1040                      EXTRA_ULP, 0);                                     \
1041     }                                                                   \
1042   while (0)
1043 #define RUN_TEST_fI_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED,             \
1044                        MAX_ULP, EXCEPTIONS,                             \
1045                        EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,   \
1046                        EXTRA_EXPECTED, EXTRA_ULP)                       \
1047   do                                                                    \
1048     {                                                                   \
1049       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1050       check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)),     \
1051                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1052       if (EXTRA_TEST)                                                   \
1053         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1054                    EXTRA_ULP, 0);                                       \
1055     }                                                                   \
1056   while (0)
1057 #define RUN_TEST_ffI_f1(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,     \
1058                         MAX_ULP, EXCEPTIONS,                            \
1059                         EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST,  \
1060                         EXTRA_EXPECTED, EXTRA_ULP)                      \
1061   do                                                                    \
1062     {                                                                   \
1063       (EXTRA_VAR) = (EXTRA_INIT);                                       \
1064       check_float (TEST_NAME,                                           \
1065                    FUNC (FUNC_NAME) (ARG1, ARG2, &(EXTRA_VAR)),         \
1066                    EXPECTED, MAX_ULP, EXCEPTIONS);                      \
1067       if (EXTRA_TEST)                                                   \
1068         check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED,               \
1069                    EXTRA_ULP, 0);                                       \
1070     }                                                                   \
1071   while (0)
1072 #define RUN_TEST_c_c(TEST_NAME, FUNC_NAME, ARGR, ARGC, EXPR, EXPC,      \
1073                      MAX_ULP, EXCEPTIONS)                               \
1074   check_complex (TEST_NAME,                                             \
1075                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARGR, ARGC)),         \
1076                  BUILD_COMPLEX (EXPR, EXPC),                            \
1077                  MAX_ULP, EXCEPTIONS)
1078 #define RUN_TEST_LOOP_c_c(FUNC_NAME, ARRAY, ROUNDING_MODE)              \
1079   IF_ROUND_INIT_ ## ROUNDING_MODE                                       \
1080     for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++)     \
1081       RUN_TEST_c_c ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].argr,   \
1082                     (ARRAY)[i].argc, (ARRAY)[i].expr, (ARRAY)[i].expc,  \
1083                     (ARRAY)[i].max_ulp, (ARRAY)[i].exceptions);         \
1084   ROUND_RESTORE_ ## ROUNDING_MODE
1085 #define RUN_TEST_cc_c(TEST_NAME, FUNC_NAME, ARG1R, ARG1C, ARG2R, ARG2C, \
1086                       EXPR, EXPC, MAX_ULP, EXCEPTIONS)                  \
1087   check_complex (TEST_NAME,                                             \
1088                  FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1R, ARG1C),        \
1089                                    BUILD_COMPLEX (ARG2R, ARG2C)),       \
1090                  BUILD_COMPLEX (EXPR, EXPC),                            \
1091                  MAX_ULP, EXCEPTIONS)
1092 #define RUN_TEST_f_i(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1093                      MAX_ULP, EXCEPTIONS)                       \
1094   check_int (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,       \
1095              MAX_ULP, EXCEPTIONS)
1096 #define RUN_TEST_f_i_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1097                         MAX_ULP, EXCEPTIONS)                    \
1098   check_int (TEST_NAME, FUNC_NAME (ARG), EXPECTED,              \
1099              MAX_ULP, EXCEPTIONS)
1100 #define RUN_TEST_ff_i_tg(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED,    \
1101                          MAX_ULP, EXCEPTIONS)                           \
1102   check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED,               \
1103              MAX_ULP, EXCEPTIONS)
1104 #define RUN_TEST_f_b(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1105                      MAX_ULP, EXCEPTIONS)                       \
1106   check_bool (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1107               MAX_ULP, EXCEPTIONS)
1108 #define RUN_TEST_f_b_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED,    \
1109                         MAX_ULP, EXCEPTIONS)                    \
1110   check_bool (TEST_NAME, FUNC_NAME (ARG), EXPECTED,             \
1111               MAX_ULP, EXCEPTIONS)
1112 #define RUN_TEST_f_l(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1113                      MAX_ULP, EXCEPTIONS)                       \
1114   check_long (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,      \
1115               MAX_ULP, EXCEPTIONS)
1116 #define RUN_TEST_f_L(TEST_NAME, FUNC_NAME, ARG, EXPECTED,       \
1117                      MAX_ULP, EXCEPTIONS)                       \
1118   check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED,  \
1119                   MAX_ULP, EXCEPTIONS)
1120 #define RUN_TEST_sincos(ARG, TEST_NAME_SIN, SIN_RES_VAR, EXPECTED_SIN,  \
1121                         MAX_ULP_SIN, TEST_NAME_COS, COS_RES_VAR,        \
1122                         EXPECTED_COS, MAX_ULP_COS, EXCEPTIONS)          \
1123   do                                                                    \
1124     {                                                                   \
1125       FUNC (sincos) (ARG, &(SIN_RES_VAR), &(COS_RES_VAR));              \
1126       check_float (TEST_NAME_SIN, SIN_RES_VAR,                          \
1127                    EXPECTED_SIN, MAX_ULP_SIN, EXCEPTIONS);              \
1128       check_float (TEST_NAME_COS, COS_RES_VAR,                          \
1129                    EXPECTED_COS, MAX_ULP_COS, 0);                       \
1130     }                                                                   \
1131   while (0)
1132
1133
1134
1135 /* This is to prevent messages from the SVID libm emulation.  */
1136 int
1137 matherr (struct exception *x __attribute__ ((unused)))
1138 {
1139   return 1;
1140 }
1141
1142
1143 /****************************************************************************
1144   Tests for single functions of libm.
1145   Please keep them alphabetically sorted!
1146 ****************************************************************************/
1147
1148 static const struct test_f_f_data acos_test_data[] =
1149   {
1150     START_DATA (acos),
1151     TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION),
1152     TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION),
1153     TEST_f_f (acos, qnan_value, qnan_value),
1154
1155     /* |x| > 1: */
1156     TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION),
1157     TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION),
1158     TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION),
1159     TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION),
1160
1161     TEST_f_f (acos, 0, M_PI_2l),
1162     TEST_f_f (acos, minus_zero, M_PI_2l),
1163     TEST_f_f (acos, 1, 0),
1164     TEST_f_f (acos, -1, M_PIl),
1165     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1166     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1167     TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L),
1168     TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L),
1169     TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L),
1170     TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L),
1171     TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L),
1172 #ifndef TEST_FLOAT
1173     TEST_f_f (acos, 0x0.ffffffff8p0L, 1.5258789062648029736620564947844627548516e-5L),
1174     TEST_f_f (acos, -0x0.ffffffff8p0L, 3.1415773948007305904329067627145550395696L),
1175     TEST_f_f (acos, 0x0.ffffffffffffp0L, 8.4293697021788088529885473244391795127130e-8L),
1176     TEST_f_f (acos, -0x0.ffffffffffffp0L, 3.1415925692960962166745548533940296398054L),
1177 #endif
1178 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1179     TEST_f_f (acos, 0x0.ffffffffffffffffp0L, 3.2927225399135962333718255320079907245059e-10L),
1180     TEST_f_f (acos, -0x0.ffffffffffffffffp0L, 3.1415926532605209844712837599423203309964L),
1181 #endif
1182     END_DATA (acos)
1183   };
1184
1185 static void
1186 acos_test (void)
1187 {
1188   errno = 0;
1189   FUNC(acos) (0);
1190   if (errno == ENOSYS)
1191     /* Function not implemented.  */
1192     return;
1193
1194   START (acos);
1195   RUN_TEST_LOOP_f_f (acos, acos_test_data, );
1196   END (acos);
1197 }
1198
1199
1200 static const struct test_f_f_data acos_tonearest_test_data[] =
1201   {
1202     START_DATA (acos_tonearest),
1203     TEST_f_f (acos, 0, M_PI_2l),
1204     TEST_f_f (acos, minus_zero, M_PI_2l),
1205     TEST_f_f (acos, 1, 0),
1206     TEST_f_f (acos, -1, M_PIl),
1207     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1208     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1209     END_DATA (acos_tonearest)
1210   };
1211
1212 static void
1213 acos_test_tonearest (void)
1214 {
1215   errno = 0;
1216   FUNC(acos) (0);
1217   if (errno == ENOSYS)
1218     /* Function not implemented.  */
1219     return;
1220
1221   START (acos_tonearest);
1222   RUN_TEST_LOOP_f_f (acos, acos_tonearest_test_data, FE_TONEAREST);
1223   END (acos_tonearest);
1224 }
1225
1226
1227 static const struct test_f_f_data acos_towardzero_test_data[] =
1228   {
1229     START_DATA (acos_towardzero),
1230     TEST_f_f (acos, 0, M_PI_2l),
1231     TEST_f_f (acos, minus_zero, M_PI_2l),
1232     TEST_f_f (acos, 1, 0),
1233     TEST_f_f (acos, -1, M_PIl),
1234     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1235     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1236     END_DATA (acos_towardzero)
1237   };
1238
1239 static void
1240 acos_test_towardzero (void)
1241 {
1242   errno = 0;
1243   FUNC(acos) (0);
1244   if (errno == ENOSYS)
1245     /* Function not implemented.  */
1246     return;
1247
1248   START (acos_towardzero);
1249   RUN_TEST_LOOP_f_f (acos, acos_towardzero_test_data, FE_TOWARDZERO);
1250   END (acos_towardzero);
1251 }
1252
1253
1254 static const struct test_f_f_data acos_downward_test_data[] =
1255   {
1256     START_DATA (acos_downward),
1257     TEST_f_f (acos, 0, M_PI_2l),
1258     TEST_f_f (acos, minus_zero, M_PI_2l),
1259     TEST_f_f (acos, 1, 0),
1260     TEST_f_f (acos, -1, M_PIl),
1261     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1262     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1263     END_DATA (acos_downward)
1264   };
1265
1266 static void
1267 acos_test_downward (void)
1268 {
1269   errno = 0;
1270   FUNC(acos) (0);
1271   if (errno == ENOSYS)
1272     /* Function not implemented.  */
1273     return;
1274
1275   START (acos_downward);
1276   RUN_TEST_LOOP_f_f (acos, acos_downward_test_data, FE_DOWNWARD);
1277   END (acos_downward);
1278 }
1279
1280
1281 static const struct test_f_f_data acos_upward_test_data[] =
1282   {
1283     START_DATA (acos_upward),
1284     TEST_f_f (acos, 0, M_PI_2l),
1285     TEST_f_f (acos, minus_zero, M_PI_2l),
1286     TEST_f_f (acos, 1, 0),
1287     TEST_f_f (acos, -1, M_PIl),
1288     TEST_f_f (acos, 0.5, M_PI_6l*2.0),
1289     TEST_f_f (acos, -0.5, M_PI_6l*4.0),
1290     END_DATA (acos_upward)
1291   };
1292
1293 static void
1294 acos_test_upward (void)
1295 {
1296   errno = 0;
1297   FUNC(acos) (0);
1298   if (errno == ENOSYS)
1299     /* Function not implemented.  */
1300     return;
1301
1302   START (acos_upward);
1303   RUN_TEST_LOOP_f_f (acos, acos_upward_test_data, FE_UPWARD);
1304   END (acos_upward);
1305 }
1306
1307 static const struct test_f_f_data acosh_test_data[] =
1308   {
1309     START_DATA (acosh),
1310     TEST_f_f (acosh, plus_infty, plus_infty),
1311     TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION),
1312     TEST_f_f (acosh, qnan_value, qnan_value),
1313
1314     /* x < 1:  */
1315     TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION),
1316     TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION),
1317
1318     TEST_f_f (acosh, 1, 0),
1319     TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L),
1320     END_DATA (acosh)
1321   };
1322
1323 static void
1324 acosh_test (void)
1325 {
1326   errno = 0;
1327   FUNC(acosh) (7);
1328   if (errno == ENOSYS)
1329     /* Function not implemented.  */
1330     return;
1331
1332   START (acosh);
1333   RUN_TEST_LOOP_f_f (acosh, acosh_test_data, );
1334   END (acosh);
1335 }
1336
1337 static const struct test_f_f_data asin_test_data[] =
1338   {
1339     START_DATA (asin),
1340     TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION),
1341     TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION),
1342     TEST_f_f (asin, qnan_value, qnan_value),
1343
1344     /* asin x == qNaN plus invalid exception for |x| > 1.  */
1345     TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION),
1346     TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION),
1347     TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION),
1348     TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION),
1349
1350     TEST_f_f (asin, 0, 0),
1351     TEST_f_f (asin, minus_zero, minus_zero),
1352     TEST_f_f (asin, 0.5, M_PI_6l),
1353     TEST_f_f (asin, -0.5, -M_PI_6l),
1354     TEST_f_f (asin, 1.0, M_PI_2l),
1355     TEST_f_f (asin, -1.0, -M_PI_2l),
1356     TEST_f_f (asin, 0.75L, 0.848062078981481008052944338998418080L),
1357     TEST_f_f (asin, 0x0.ffffffp0L, 1.5704510598101804156437184421571127056013L),
1358     TEST_f_f (asin, -0x0.ffffffp0L, -1.5704510598101804156437184421571127056013L),
1359 #ifndef TEST_FLOAT
1360     TEST_f_f (asin, 0x0.ffffffff8p0L, 1.5707810680058339712015850710748035974710L),
1361     TEST_f_f (asin, -0x0.ffffffff8p0L, -1.5707810680058339712015850710748035974710L),
1362     TEST_f_f (asin, 0x0.ffffffffffffp0L, 1.5707962425011995974432331617542781977068L),
1363     TEST_f_f (asin, -0x0.ffffffffffffp0L, -1.5707962425011995974432331617542781977068L),
1364 #endif
1365 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1366     TEST_f_f (asin, 0x0.ffffffffffffffffp0L, 1.5707963264656243652399620683025688888978L),
1367     TEST_f_f (asin, -0x0.ffffffffffffffffp0L, -1.5707963264656243652399620683025688888978L),
1368 #endif
1369     END_DATA (asin)
1370   };
1371
1372 static void
1373 asin_test (void)
1374 {
1375   errno = 0;
1376   FUNC(asin) (0);
1377   if (errno == ENOSYS)
1378     /* Function not implemented.  */
1379     return;
1380
1381   START (asin);
1382   RUN_TEST_LOOP_f_f (asin, asin_test_data, );
1383   END (asin);
1384 }
1385
1386
1387 static const struct test_f_f_data asin_tonearest_test_data[] =
1388   {
1389     START_DATA (asin_tonearest),
1390     TEST_f_f (asin, 0, 0),
1391     TEST_f_f (asin, minus_zero, minus_zero),
1392     TEST_f_f (asin, 0.5, M_PI_6l),
1393     TEST_f_f (asin, -0.5, -M_PI_6l),
1394     TEST_f_f (asin, 1.0, M_PI_2l),
1395     TEST_f_f (asin, -1.0, -M_PI_2l),
1396     END_DATA (asin_tonearest)
1397   };
1398
1399 static void
1400 asin_test_tonearest (void)
1401 {
1402   errno = 0;
1403   FUNC(asin) (0);
1404   if (errno == ENOSYS)
1405     /* Function not implemented.  */
1406     return;
1407
1408   START (asin_tonearest);
1409   RUN_TEST_LOOP_f_f (asin, asin_tonearest_test_data, FE_TONEAREST);
1410   END (asin_tonearest);
1411 }
1412
1413
1414 static const struct test_f_f_data asin_towardzero_test_data[] =
1415   {
1416     START_DATA (asin_towardzero),
1417     TEST_f_f (asin, 0, 0),
1418     TEST_f_f (asin, minus_zero, minus_zero),
1419     TEST_f_f (asin, 0.5, M_PI_6l),
1420     TEST_f_f (asin, -0.5, -M_PI_6l),
1421     TEST_f_f (asin, 1.0, M_PI_2l),
1422     TEST_f_f (asin, -1.0, -M_PI_2l),
1423     END_DATA (asin_towardzero)
1424   };
1425
1426 static void
1427 asin_test_towardzero (void)
1428 {
1429   errno = 0;
1430   FUNC(asin) (0);
1431   if (errno == ENOSYS)
1432     /* Function not implemented.  */
1433     return;
1434
1435   START (asin_towardzero);
1436   RUN_TEST_LOOP_f_f (asin, asin_towardzero_test_data, FE_TOWARDZERO);
1437   END (asin_towardzero);
1438 }
1439
1440
1441 static const struct test_f_f_data asin_downward_test_data[] =
1442   {
1443     START_DATA (asin_downward),
1444     TEST_f_f (asin, 0, 0),
1445     TEST_f_f (asin, minus_zero, minus_zero),
1446     TEST_f_f (asin, 0.5, M_PI_6l),
1447     TEST_f_f (asin, -0.5, -M_PI_6l),
1448     TEST_f_f (asin, 1.0, M_PI_2l),
1449     TEST_f_f (asin, -1.0, -M_PI_2l),
1450     END_DATA (asin_downward)
1451   };
1452
1453 static void
1454 asin_test_downward (void)
1455 {
1456   errno = 0;
1457   FUNC(asin) (0);
1458   if (errno == ENOSYS)
1459     /* Function not implemented.  */
1460     return;
1461
1462   START (asin_downward);
1463   RUN_TEST_LOOP_f_f (asin, asin_downward_test_data, FE_DOWNWARD);
1464   END (asin_downward);
1465 }
1466
1467
1468 static const struct test_f_f_data asin_upward_test_data[] =
1469   {
1470     START_DATA (asin_upward),
1471     TEST_f_f (asin, 0, 0),
1472     TEST_f_f (asin, minus_zero, minus_zero),
1473     TEST_f_f (asin, 0.5, M_PI_6l),
1474     TEST_f_f (asin, -0.5, -M_PI_6l),
1475     TEST_f_f (asin, 1.0, M_PI_2l),
1476     TEST_f_f (asin, -1.0, -M_PI_2l),
1477     END_DATA (asin_upward)
1478   };
1479
1480 static void
1481 asin_test_upward (void)
1482 {
1483   errno = 0;
1484   FUNC(asin) (0);
1485   if (errno == ENOSYS)
1486     /* Function not implemented.  */
1487     return;
1488
1489   START (asin_upward);
1490   RUN_TEST_LOOP_f_f (asin, asin_upward_test_data, FE_UPWARD);
1491   END (asin_upward);
1492 }
1493
1494 static const struct test_f_f_data asinh_test_data[] =
1495   {
1496     START_DATA (asinh),
1497     TEST_f_f (asinh, 0, 0),
1498     TEST_f_f (asinh, minus_zero, minus_zero),
1499 #ifndef TEST_INLINE
1500     TEST_f_f (asinh, plus_infty, plus_infty),
1501     TEST_f_f (asinh, minus_infty, minus_infty),
1502 #endif
1503     TEST_f_f (asinh, qnan_value, qnan_value),
1504     TEST_f_f (asinh, 0.75L, 0.693147180559945309417232121458176568L),
1505     END_DATA (asinh)
1506   };
1507
1508 static void
1509 asinh_test (void)
1510 {
1511   errno = 0;
1512   FUNC(asinh) (0.7L);
1513   if (errno == ENOSYS)
1514     /* Function not implemented.  */
1515     return;
1516
1517   START (asinh);
1518   RUN_TEST_LOOP_f_f (asinh, asinh_test_data, );
1519   END (asinh);
1520 }
1521
1522 static const struct test_f_f_data atan_test_data[] =
1523   {
1524     START_DATA (atan),
1525     TEST_f_f (atan, 0, 0),
1526     TEST_f_f (atan, minus_zero, minus_zero),
1527
1528     TEST_f_f (atan, plus_infty, M_PI_2l),
1529     TEST_f_f (atan, minus_infty, -M_PI_2l),
1530     TEST_f_f (atan, qnan_value, qnan_value),
1531     TEST_f_f (atan, max_value, M_PI_2l),
1532     TEST_f_f (atan, -max_value, -M_PI_2l),
1533
1534     TEST_f_f (atan, 1, M_PI_4l),
1535     TEST_f_f (atan, -1, -M_PI_4l),
1536
1537     TEST_f_f (atan, 0.75L, 0.643501108793284386802809228717322638L),
1538
1539     TEST_f_f (atan, 0x1p-100L, 0x1p-100L),
1540 #ifndef TEST_FLOAT
1541     TEST_f_f (atan, 0x1p-600L, 0x1p-600L),
1542 #endif
1543 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1544     TEST_f_f (atan, 0x1p-10000L, 0x1p-10000L),
1545 #endif
1546     END_DATA (atan)
1547   };
1548
1549 static void
1550 atan_test (void)
1551 {
1552   errno = 0;
1553   FUNC(atan) (0);
1554   if (errno == ENOSYS)
1555     /* Function not implemented.  */
1556     return;
1557
1558   START (atan);
1559   RUN_TEST_LOOP_f_f (atan, atan_test_data, );
1560   END (atan);
1561 }
1562
1563
1564
1565 static const struct test_f_f_data atanh_test_data[] =
1566   {
1567     START_DATA (atanh),
1568     TEST_f_f (atanh, 0, 0),
1569     TEST_f_f (atanh, minus_zero, minus_zero),
1570
1571     TEST_f_f (atanh, 1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1572     TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
1573     TEST_f_f (atanh, qnan_value, qnan_value),
1574
1575     /* atanh (x) == qNaN plus invalid exception if |x| > 1.  */
1576     TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION),
1577     TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION),
1578     TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION),
1579     TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION),
1580
1581     TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L),
1582     END_DATA (atanh)
1583   };
1584
1585 static void
1586 atanh_test (void)
1587 {
1588   errno = 0;
1589   FUNC(atanh) (0.7L);
1590   if (errno == ENOSYS)
1591     /* Function not implemented.  */
1592     return;
1593
1594   START (atanh);
1595   RUN_TEST_LOOP_f_f (atanh, atanh_test_data, );
1596   END (atanh);
1597 }
1598
1599 static const struct test_ff_f_data atan2_test_data[] =
1600   {
1601     START_DATA (atan2),
1602     /* atan2 (0,x) == 0 for x > 0.  */
1603     TEST_ff_f (atan2, 0, 1, 0),
1604
1605     /* atan2 (-0,x) == -0 for x > 0.  */
1606     TEST_ff_f (atan2, minus_zero, 1, minus_zero),
1607
1608     TEST_ff_f (atan2, 0, 0, 0),
1609     TEST_ff_f (atan2, minus_zero, 0, minus_zero),
1610
1611     /* atan2 (+0,x) == +pi for x < 0.  */
1612     TEST_ff_f (atan2, 0, -1, M_PIl),
1613
1614     /* atan2 (-0,x) == -pi for x < 0.  */
1615     TEST_ff_f (atan2, minus_zero, -1, -M_PIl),
1616
1617     TEST_ff_f (atan2, 0, minus_zero, M_PIl),
1618     TEST_ff_f (atan2, minus_zero, minus_zero, -M_PIl),
1619
1620     /* atan2 (y,+0) == pi/2 for y > 0.  */
1621     TEST_ff_f (atan2, 1, 0, M_PI_2l),
1622
1623     /* atan2 (y,-0) == pi/2 for y > 0.  */
1624     TEST_ff_f (atan2, 1, minus_zero, M_PI_2l),
1625
1626     /* atan2 (y,+0) == -pi/2 for y < 0.  */
1627     TEST_ff_f (atan2, -1, 0, -M_PI_2l),
1628
1629     /* atan2 (y,-0) == -pi/2 for y < 0.  */
1630     TEST_ff_f (atan2, -1, minus_zero, -M_PI_2l),
1631
1632     /* atan2 (y,inf) == +0 for finite y > 0.  */
1633     TEST_ff_f (atan2, 1, plus_infty, 0),
1634
1635     /* atan2 (y,inf) == -0 for finite y < 0.  */
1636     TEST_ff_f (atan2, -1, plus_infty, minus_zero),
1637
1638     /* atan2(+inf, x) == pi/2 for finite x.  */
1639     TEST_ff_f (atan2, plus_infty, -1, M_PI_2l),
1640
1641     /* atan2(-inf, x) == -pi/2 for finite x.  */
1642     TEST_ff_f (atan2, minus_infty, 1, -M_PI_2l),
1643
1644     /* atan2 (y,-inf) == +pi for finite y > 0.  */
1645     TEST_ff_f (atan2, 1, minus_infty, M_PIl),
1646
1647     /* atan2 (y,-inf) == -pi for finite y < 0.  */
1648     TEST_ff_f (atan2, -1, minus_infty, -M_PIl),
1649
1650     TEST_ff_f (atan2, plus_infty, plus_infty, M_PI_4l),
1651     TEST_ff_f (atan2, minus_infty, plus_infty, -M_PI_4l),
1652     TEST_ff_f (atan2, plus_infty, minus_infty, M_PI_34l),
1653     TEST_ff_f (atan2, minus_infty, minus_infty, -M_PI_34l),
1654     TEST_ff_f (atan2, qnan_value, qnan_value, qnan_value),
1655
1656     TEST_ff_f (atan2, max_value, max_value, M_PI_4l),
1657
1658     TEST_ff_f (atan2, max_value, min_value, M_PI_2l),
1659     TEST_ff_f (atan2, -max_value, -min_value, -M_PI_2l),
1660
1661     TEST_ff_f (atan2, 0.75L, 1, 0.643501108793284386802809228717322638L),
1662     TEST_ff_f (atan2, -0.75L, 1.0L, -0.643501108793284386802809228717322638L),
1663     TEST_ff_f (atan2, 0.75L, -1.0L, 2.49809154479650885165983415456218025L),
1664     TEST_ff_f (atan2, -0.75L, -1.0L, -2.49809154479650885165983415456218025L),
1665     TEST_ff_f (atan2, 0.390625L, .00029L, 1.57005392693128974780151246612928941L),
1666     TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L),
1667
1668     TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L),
1669 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
1670     TEST_ff_f (atan2, 0x1.00000000000001p0L, 0x1.00000000000001p0L, M_PI_4l),
1671 #endif
1672     END_DATA (atan2)
1673   };
1674
1675 static void
1676 atan2_test (void)
1677 {
1678   errno = 0;
1679   FUNC(atan2) (-0, 1);
1680   if (errno == ENOSYS)
1681     /* Function not implemented.  */
1682     return;
1683
1684   START (atan2);
1685   RUN_TEST_LOOP_ff_f (atan2, atan2_test_data, );
1686   END (atan2);
1687 }
1688
1689 static const struct test_c_f_data cabs_test_data[] =
1690   {
1691     START_DATA (cabs);
1692     /* cabs (x + iy) is specified as hypot (x,y) */
1693
1694     /* cabs (+inf + i x) == +inf.  */
1695     TEST_c_f (cabs, plus_infty, 1.0, plus_infty),
1696     /* cabs (-inf + i x) == +inf.  */
1697     TEST_c_f (cabs, minus_infty, 1.0, plus_infty),
1698
1699     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1700     TEST_c_f (cabs, minus_infty, qnan_value, plus_infty),
1701
1702     TEST_c_f (cabs, qnan_value, qnan_value, qnan_value),
1703
1704     /* cabs (x,y) == cabs (y,x).  */
1705     TEST_c_f (cabs, 0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1706     /* cabs (x,y) == cabs (-x,y).  */
1707     TEST_c_f (cabs, -12.390625L, 0.75L, 12.4133028598606664302388810868156657L),
1708     /* cabs (x,y) == cabs (-y,x).  */
1709     TEST_c_f (cabs, -0.75L, 12.390625L, 12.4133028598606664302388810868156657L),
1710     /* cabs (x,y) == cabs (-x,-y).  */
1711     TEST_c_f (cabs, -12.390625L, -0.75L, 12.4133028598606664302388810868156657L),
1712     /* cabs (x,y) == cabs (-y,-x).  */
1713     TEST_c_f (cabs, -0.75L, -12.390625L, 12.4133028598606664302388810868156657L),
1714     /* cabs (x,0) == fabs (x).  */
1715     TEST_c_f (cabs, -0.75L, 0, 0.75L),
1716     TEST_c_f (cabs, 0.75L, 0, 0.75L),
1717     TEST_c_f (cabs, -1.0L, 0, 1.0L),
1718     TEST_c_f (cabs, 1.0L, 0, 1.0L),
1719     TEST_c_f (cabs, -5.7e7L, 0, 5.7e7L),
1720     TEST_c_f (cabs, 5.7e7L, 0, 5.7e7L),
1721
1722     TEST_c_f (cabs, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
1723     END_DATA (cabs);
1724   };
1725
1726 static void
1727 cabs_test (void)
1728 {
1729   errno = 0;
1730   FUNC(cabs) (BUILD_COMPLEX (0.7L, 12.4L));
1731   if (errno == ENOSYS)
1732     /* Function not implemented.  */
1733     return;
1734
1735   START (cabs);
1736   RUN_TEST_LOOP_c_f (cabs, cabs_test_data, );
1737   END (cabs);
1738 }
1739
1740
1741 static const struct test_c_c_data cacos_test_data[] =
1742   {
1743     START_DATA (cacos),
1744     TEST_c_c (cacos, 0, 0, M_PI_2l, minus_zero),
1745     TEST_c_c (cacos, minus_zero, 0, M_PI_2l, minus_zero),
1746     TEST_c_c (cacos, minus_zero, minus_zero, M_PI_2l, 0.0),
1747     TEST_c_c (cacos, 0, minus_zero, M_PI_2l, 0.0),
1748
1749     TEST_c_c (cacos, minus_infty, plus_infty, M_PI_34l, minus_infty),
1750     TEST_c_c (cacos, minus_infty, minus_infty, M_PI_34l, plus_infty),
1751
1752     TEST_c_c (cacos, plus_infty, plus_infty, M_PI_4l, minus_infty),
1753     TEST_c_c (cacos, plus_infty, minus_infty, M_PI_4l, plus_infty),
1754
1755     TEST_c_c (cacos, -10.0, plus_infty, M_PI_2l, minus_infty),
1756     TEST_c_c (cacos, -10.0, minus_infty, M_PI_2l, plus_infty),
1757     TEST_c_c (cacos, 0, plus_infty, M_PI_2l, minus_infty),
1758     TEST_c_c (cacos, 0, minus_infty, M_PI_2l, plus_infty),
1759     TEST_c_c (cacos, 0.1L, plus_infty, M_PI_2l, minus_infty),
1760     TEST_c_c (cacos, 0.1L, minus_infty, M_PI_2l, plus_infty),
1761
1762     TEST_c_c (cacos, minus_infty, 0, M_PIl, minus_infty),
1763     TEST_c_c (cacos, minus_infty, minus_zero, M_PIl, plus_infty),
1764     TEST_c_c (cacos, minus_infty, 100, M_PIl, minus_infty),
1765     TEST_c_c (cacos, minus_infty, -100, M_PIl, plus_infty),
1766
1767     TEST_c_c (cacos, plus_infty, 0, 0.0, minus_infty),
1768     TEST_c_c (cacos, plus_infty, minus_zero, 0.0, plus_infty),
1769     TEST_c_c (cacos, plus_infty, 0.5, 0.0, minus_infty),
1770     TEST_c_c (cacos, plus_infty, -0.5, 0.0, plus_infty),
1771
1772     TEST_c_c (cacos, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1773     TEST_c_c (cacos, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
1774
1775     TEST_c_c (cacos, 0, qnan_value, M_PI_2l, qnan_value),
1776     TEST_c_c (cacos, minus_zero, qnan_value, M_PI_2l, qnan_value),
1777
1778     TEST_c_c (cacos, qnan_value, plus_infty, qnan_value, minus_infty),
1779     TEST_c_c (cacos, qnan_value, minus_infty, qnan_value, plus_infty),
1780
1781     TEST_c_c (cacos, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1782     TEST_c_c (cacos, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1783
1784     TEST_c_c (cacos, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1785     TEST_c_c (cacos, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
1786
1787     TEST_c_c (cacos, qnan_value, qnan_value, qnan_value, qnan_value),
1788
1789     TEST_c_c (cacos, plus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1790     TEST_c_c (cacos, minus_zero, -1.5L, M_PI_2l, 1.194763217287109304111930828519090523536L),
1791     TEST_c_c (cacos, plus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1792     TEST_c_c (cacos, minus_zero, -1.0L, M_PI_2l, 0.8813735870195430252326093249797923090282L),
1793     TEST_c_c (cacos, plus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1794     TEST_c_c (cacos, minus_zero, -0.5L, M_PI_2l, 0.4812118250596034474977589134243684231352L),
1795     TEST_c_c (cacos, plus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1796     TEST_c_c (cacos, minus_zero, 0.5L, M_PI_2l, -0.4812118250596034474977589134243684231352L),
1797     TEST_c_c (cacos, plus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1798     TEST_c_c (cacos, minus_zero, 1.0L, M_PI_2l, -0.8813735870195430252326093249797923090282L),
1799     TEST_c_c (cacos, plus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1800     TEST_c_c (cacos, minus_zero, 1.5L, M_PI_2l, -1.194763217287109304111930828519090523536L),
1801
1802     TEST_c_c (cacos, -1.5L, plus_zero, M_PIl, -0.9624236501192068949955178268487368462704L),
1803     TEST_c_c (cacos, -1.5L, minus_zero, M_PIl, 0.9624236501192068949955178268487368462704L),
1804     TEST_c_c (cacos, -1.0L, plus_zero, M_PIl, minus_zero),
1805     TEST_c_c (cacos, -1.0L, minus_zero, M_PIl, plus_zero),
1806     TEST_c_c (cacos, -0.5L, plus_zero, 2.094395102393195492308428922186335256131L, minus_zero),
1807     TEST_c_c (cacos, -0.5L, minus_zero, 2.094395102393195492308428922186335256131L, plus_zero),
1808     TEST_c_c (cacos, 0.5L, plus_zero, 1.047197551196597746154214461093167628066L, minus_zero),
1809     TEST_c_c (cacos, 0.5L, minus_zero, 1.047197551196597746154214461093167628066L, plus_zero),
1810     TEST_c_c (cacos, 1.0L, plus_zero, plus_zero, minus_zero),
1811     TEST_c_c (cacos, 1.0L, minus_zero, plus_zero, plus_zero),
1812     TEST_c_c (cacos, 1.5L, plus_zero, plus_zero, -0.9624236501192068949955178268487368462704L),
1813     TEST_c_c (cacos, 1.5L, minus_zero, plus_zero, 0.9624236501192068949955178268487368462704L),
1814
1815     TEST_c_c (cacos, 0x1p50L, 1.0L, 8.881784197001252323389053344727730248720e-16L, -3.535050620855721078027883819436720218708e1L),
1816     TEST_c_c (cacos, 0x1p50L, -1.0L, 8.881784197001252323389053344727730248720e-16L, 3.535050620855721078027883819436720218708e1L),
1817     TEST_c_c (cacos, -0x1p50L, 1.0L, 3.141592653589792350284223683154270545292L, -3.535050620855721078027883819436720218708e1L),
1818     TEST_c_c (cacos, -0x1p50L, -1.0L, 3.141592653589792350284223683154270545292L, 3.535050620855721078027883819436720218708e1L),
1819     TEST_c_c (cacos, 1.0L, 0x1p50L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436759661753e1L),
1820     TEST_c_c (cacos, -1.0L, 0x1p50L, 1.570796326794897507409741391764983781004L, -3.535050620855721078027883819436759661753e1L),
1821     TEST_c_c (cacos, 1.0L, -0x1p50L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436759661753e1L),
1822     TEST_c_c (cacos, -1.0L, -0x1p50L, 1.570796326794897507409741391764983781004L, 3.535050620855721078027883819436759661753e1L),
1823 #ifndef TEST_FLOAT
1824     TEST_c_c (cacos, 0x1p500L, 1.0L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
1825     TEST_c_c (cacos, 0x1p500L, -1.0L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
1826     TEST_c_c (cacos, -0x1p500L, 1.0L, 3.141592653589793238462643383279502884197L, -3.472667374605326000180332928505464606058e2L),
1827     TEST_c_c (cacos, -0x1p500L, -1.0L, 3.141592653589793238462643383279502884197L, 3.472667374605326000180332928505464606058e2L),
1828     TEST_c_c (cacos, 1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1829     TEST_c_c (cacos, -1.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
1830     TEST_c_c (cacos, 1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1831     TEST_c_c (cacos, -1.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
1832 #endif
1833 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1834     TEST_c_c (cacos, 0x1p5000L, 1.0L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
1835     TEST_c_c (cacos, 0x1p5000L, -1.0L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
1836     TEST_c_c (cacos, -0x1p5000L, 1.0L, 3.141592653589793238462643383279502884197L, -3.466429049980286492395577839412341016946e3L),
1837     TEST_c_c (cacos, -0x1p5000L, -1.0L, 3.141592653589793238462643383279502884197L, 3.466429049980286492395577839412341016946e3L),
1838     TEST_c_c (cacos, 1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1839     TEST_c_c (cacos, -1.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
1840     TEST_c_c (cacos, 1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1841     TEST_c_c (cacos, -1.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
1842 #endif
1843
1844     TEST_c_c (cacos, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, -8.973081118419833726837456344608533993585e1L),
1845 #ifndef TEST_FLOAT
1846     TEST_c_c (cacos, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, -7.107906849659093345062145442726115449315e2L),
1847 #endif
1848 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
1849     TEST_c_c (cacos, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, -1.135753137836666928715489992987020363057e4L),
1850 #endif
1851
1852     TEST_c_c (cacos, 0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442097L, -1.194763217287109304111930828519090523536L),
1853     TEST_c_c (cacos, 0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442097L, 1.194763217287109304111930828519090523536L),
1854     TEST_c_c (cacos, -0x1.fp-129L, 1.5L, 1.570796326794896619231321691639751442100L, -1.194763217287109304111930828519090523536L),
1855     TEST_c_c (cacos, -0x1.fp-129L, -1.5L, 1.570796326794896619231321691639751442100L, 1.194763217287109304111930828519090523536L),
1856     TEST_c_c (cacos, 1.5L, 0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1857     TEST_c_c (cacos, -1.5L, 0x1.fp-129L, 3.141592653589793238462643383279502884195L, -9.624236501192068949955178268487368462704e-1L),
1858     TEST_c_c (cacos, 1.5L, -0x1.fp-129L, 2.546345110742945032959687790021055102355e-39L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_FLOAT),
1859     TEST_c_c (cacos, -1.5L, -0x1.fp-129L, 3.141592653589793238462643383279502884195L, 9.624236501192068949955178268487368462704e-1L),
1860 #ifndef TEST_FLOAT
1861     TEST_c_c (cacos, 0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1862     TEST_c_c (cacos, 0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1863     TEST_c_c (cacos, -0x1.fp-1025L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1864     TEST_c_c (cacos, -0x1.fp-1025L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1865     TEST_c_c (cacos, 1.5L, 0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1866     TEST_c_c (cacos, -1.5L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
1867     TEST_c_c (cacos, 1.5L, -0x1.fp-1025L, 4.819934639999230680322935210539402497827e-309L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
1868     TEST_c_c (cacos, -1.5L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
1869 #endif
1870 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1871     TEST_c_c (cacos, 0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1872     TEST_c_c (cacos, 0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1873     TEST_c_c (cacos, -0x1.fp-16385L, 1.5L, 1.570796326794896619231321691639751442099L, -1.194763217287109304111930828519090523536L),
1874     TEST_c_c (cacos, -0x1.fp-16385L, -1.5L, 1.570796326794896619231321691639751442099L, 1.194763217287109304111930828519090523536L),
1875     TEST_c_c (cacos, 1.5L, 0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, -9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
1876     TEST_c_c (cacos, -1.5L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.624236501192068949955178268487368462704e-1L),
1877     TEST_c_c (cacos, 1.5L, -0x1.fp-16385L, 7.282957076134209141226696333885150260319e-4933L, 9.624236501192068949955178268487368462704e-1L, UNDERFLOW_EXCEPTION),
1878     TEST_c_c (cacos, -1.5L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.624236501192068949955178268487368462704e-1L),
1879 #endif
1880
1881     TEST_c_c (cacos, 0.5L, 1.0L, 1.221357263937683325603909865564381489366L, -9.261330313501824245501244453057873152694e-1L),
1882     TEST_c_c (cacos, 0.5L, -1.0L, 1.221357263937683325603909865564381489366L, 9.261330313501824245501244453057873152694e-1L),
1883     TEST_c_c (cacos, -0.5L, 1.0L, 1.920235389652109912858733517715121394831L, -9.261330313501824245501244453057873152694e-1L),
1884     TEST_c_c (cacos, -0.5L, -1.0L, 1.920235389652109912858733517715121394831L, 9.261330313501824245501244453057873152694e-1L),
1885     TEST_c_c (cacos, 1.0L, 0.5L, 6.748888455860063801646649673121744318756e-1L, -7.328576759736452608886724437653071523305e-1L),
1886     TEST_c_c (cacos, -1.0L, 0.5L, 2.466703808003786858297978415967328452322L, -7.328576759736452608886724437653071523305e-1L),
1887     TEST_c_c (cacos, 1.0L, -0.5L, 6.748888455860063801646649673121744318756e-1L, 7.328576759736452608886724437653071523305e-1L),
1888     TEST_c_c (cacos, -1.0L, -0.5L, 2.466703808003786858297978415967328452322L, 7.328576759736452608886724437653071523305e-1L),
1889     TEST_c_c (cacos, 0.25L, 1.0L, 1.394493894017929688812643125003661339452L, -8.924633639033482359562124741744951972772e-1L),
1890     TEST_c_c (cacos, 0.25L, -1.0L, 1.394493894017929688812643125003661339452L, 8.924633639033482359562124741744951972772e-1L),
1891     TEST_c_c (cacos, -0.25L, 1.0L, 1.747098759571863549650000258275841544745L, -8.924633639033482359562124741744951972772e-1L),
1892     TEST_c_c (cacos, -0.25L, -1.0L, 1.747098759571863549650000258275841544745L, 8.924633639033482359562124741744951972772e-1L),
1893     TEST_c_c (cacos, 1.0L, 0.25L, 4.890443302710802929202843732146540079124e-1L, -5.097911466811016354623559941115413499164e-1L),
1894     TEST_c_c (cacos, -1.0L, 0.25L, 2.652548323318712945542359010064848876285L, -5.097911466811016354623559941115413499164e-1L),
1895     TEST_c_c (cacos, 1.0L, -0.25L, 4.890443302710802929202843732146540079124e-1L, 5.097911466811016354623559941115413499164e-1L),
1896     TEST_c_c (cacos, -1.0L, -0.25L, 2.652548323318712945542359010064848876285L, 5.097911466811016354623559941115413499164e-1L),
1897     TEST_c_c (cacos, 0x1.fp-10L, 1.0L, 1.569458417435338878318763342108699202986L, -8.813742198809567991336704287826445879025e-1L),
1898     TEST_c_c (cacos, 0x1.fp-10L, -1.0L, 1.569458417435338878318763342108699202986L, 8.813742198809567991336704287826445879025e-1L),
1899     TEST_c_c (cacos, -0x1.fp-10L, 1.0L, 1.572134236154454360143880041170803681211L, -8.813742198809567991336704287826445879025e-1L),
1900     TEST_c_c (cacos, -0x1.fp-10L, -1.0L, 1.572134236154454360143880041170803681211L, 8.813742198809567991336704287826445879025e-1L),
1901     TEST_c_c (cacos, 1.0L, 0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, -4.350501469856803800217957402220976497152e-2L),
1902     TEST_c_c (cacos, -1.0L, 0x1.fp-10L, 3.098101355958774410750062883737683164607L, -4.350501469856803800217957402220976497152e-2L),
1903     TEST_c_c (cacos, 1.0L, -0x1.fp-10L, 4.349129763101882771258049954181971959031e-2L, 4.350501469856803800217957402220976497152e-2L),
1904     TEST_c_c (cacos, -1.0L, -0x1.fp-10L, 3.098101355958774410750062883737683164607L, 4.350501469856803800217957402220976497152e-2L),
1905     TEST_c_c (cacos, 0x1.fp-30L, 1.0L, 1.570796325518966635014803151387033957091L, -8.813735870195430258081932989769495326854e-1L),
1906     TEST_c_c (cacos, 0x1.fp-30L, -1.0L, 1.570796325518966635014803151387033957091L, 8.813735870195430258081932989769495326854e-1L),
1907     TEST_c_c (cacos, -0x1.fp-30L, 1.0L, 1.570796328070826603447840231892468927106L, -8.813735870195430258081932989769495326854e-1L),
1908     TEST_c_c (cacos, -0x1.fp-30L, -1.0L, 1.570796328070826603447840231892468927106L, 8.813735870195430258081932989769495326854e-1L),
1909     TEST_c_c (cacos, 1.0L, 0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, -4.247867098745151888768727039216644758847e-5L),
1910     TEST_c_c (cacos, -1.0L, 0x1.fp-30L, 3.141550174918818561961484385371624132331L, -4.247867098745151888768727039216644758847e-5L),
1911     TEST_c_c (cacos, 1.0L, -0x1.fp-30L, 4.247867097467650115899790787875186617316e-5L, 4.247867098745151888768727039216644758847e-5L),
1912     TEST_c_c (cacos, -1.0L, -0x1.fp-30L, 3.141550174918818561961484385371624132331L, 4.247867098745151888768727039216644758847e-5L),
1913     TEST_c_c (cacos, 0x1.fp-100L, 1.0L, 1.570796326794896619231321691638670687364L, -8.813735870195430252326093249797923090282e-1L),
1914     TEST_c_c (cacos, 0x1.fp-100L, -1.0L, 1.570796326794896619231321691638670687364L, 8.813735870195430252326093249797923090282e-1L),
1915     TEST_c_c (cacos, -0x1.fp-100L, 1.0L, 1.570796326794896619231321691640832196834L, -8.813735870195430252326093249797923090282e-1L),
1916     TEST_c_c (cacos, -0x1.fp-100L, -1.0L, 1.570796326794896619231321691640832196834L, 8.813735870195430252326093249797923090282e-1L),
1917     TEST_c_c (cacos, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, -1.236292038260260888664514866457202186027e-15L),
1918     TEST_c_c (cacos, -1.0L, 0x1.fp-100L, 3.141592653589792002170605123018614219682L, -1.236292038260260888664514866457202186027e-15L),
1919     TEST_c_c (cacos, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866456887257525e-15L, 1.236292038260260888664514866457202186027e-15L),
1920     TEST_c_c (cacos, -1.0L, -0x1.fp-100L, 3.141592653589792002170605123018614219682L, 1.236292038260260888664514866457202186027e-15L),
1921     TEST_c_c (cacos, 0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442097L, -8.813735870195430252326093249797923090282e-1L),
1922     TEST_c_c (cacos, 0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442097L, 8.813735870195430252326093249797923090282e-1L),
1923     TEST_c_c (cacos, -0x1.fp-129L, 1.0L, 1.570796326794896619231321691639751442101L, -8.813735870195430252326093249797923090282e-1L),
1924     TEST_c_c (cacos, -0x1.fp-129L, -1.0L, 1.570796326794896619231321691639751442101L, 8.813735870195430252326093249797923090282e-1L),
1925     TEST_c_c (cacos, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, -5.335635276982233498398987585285818977933e-20L),
1926     TEST_c_c (cacos, -1.0L, 0x1.fp-129L, 3.141592653589793238409287030509680549213L, -5.335635276982233498398987585285818977933e-20L),
1927     TEST_c_c (cacos, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977930e-20L, 5.335635276982233498398987585285818977933e-20L),
1928     TEST_c_c (cacos, -1.0L, -0x1.fp-129L, 3.141592653589793238409287030509680549213L, 5.335635276982233498398987585285818977933e-20L),
1929 #ifndef TEST_FLOAT
1930     TEST_c_c (cacos, 0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1931     TEST_c_c (cacos, 0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1932     TEST_c_c (cacos, -0x1.fp-1000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1933     TEST_c_c (cacos, -0x1.fp-1000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1934     TEST_c_c (cacos, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
1935     TEST_c_c (cacos, -1.0L, 0x1.fp-1000L, 3.141592653589793238462643383279502884197L, -4.252291453851660175550490409247739011867e-151L),
1936     TEST_c_c (cacos, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
1937     TEST_c_c (cacos, -1.0L, -0x1.fp-1000L, 3.141592653589793238462643383279502884197L, 4.252291453851660175550490409247739011867e-151L),
1938     TEST_c_c (cacos, 0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1939     TEST_c_c (cacos, 0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1940     TEST_c_c (cacos, -0x1.fp-1025L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1941     TEST_c_c (cacos, -0x1.fp-1025L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1942     TEST_c_c (cacos, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
1943     TEST_c_c (cacos, -1.0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -7.340879205566679497036857179189356754017e-155L),
1944     TEST_c_c (cacos, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
1945     TEST_c_c (cacos, -1.0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 7.340879205566679497036857179189356754017e-155L),
1946 #endif
1947 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
1948     TEST_c_c (cacos, 0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1949     TEST_c_c (cacos, 0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1950     TEST_c_c (cacos, -0x1.fp-10000L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1951     TEST_c_c (cacos, -0x1.fp-10000L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1952     TEST_c_c (cacos, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
1953     TEST_c_c (cacos, -1.0L, 0x1.fp-10000L, 3.141592653589793238462643383279502884197L, -9.854680208706673586644342922051388714633e-1506L),
1954     TEST_c_c (cacos, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
1955     TEST_c_c (cacos, -1.0L, -0x1.fp-10000L, 3.141592653589793238462643383279502884197L, 9.854680208706673586644342922051388714633e-1506L),
1956     TEST_c_c (cacos, 0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1957     TEST_c_c (cacos, 0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1958     TEST_c_c (cacos, -0x1.fp-16385L, 1.0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797923090282e-1L),
1959     TEST_c_c (cacos, -0x1.fp-16385L, -1.0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797923090282e-1L),
1960     TEST_c_c (cacos, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
1961     TEST_c_c (cacos, -1.0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -9.023632056840860275214893047597614177639e-2467L),
1962     TEST_c_c (cacos, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
1963     TEST_c_c (cacos, -1.0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 9.023632056840860275214893047597614177639e-2467L),
1964 #endif
1965
1966     TEST_c_c (cacos, 0x1p-23L, 0x1.000002p0L, 1.570796242501204621739026081991856762292L, -8.813736713132400470205730751186547909968e-1L),
1967     TEST_c_c (cacos, 0x1p-23L, -0x1.000002p0L, 1.570796242501204621739026081991856762292L, 8.813736713132400470205730751186547909968e-1L),
1968     TEST_c_c (cacos, -0x1p-23L, 0x1.000002p0L, 1.570796411088588616723617301287646121905L, -8.813736713132400470205730751186547909968e-1L),
1969     TEST_c_c (cacos, -0x1p-23L, -0x1.000002p0L, 1.570796411088588616723617301287646121905L, 8.813736713132400470205730751186547909968e-1L),
1970     TEST_c_c (cacos, 0x1.000002p0L, 0x1p-23L, 2.222118384408546368406374049167636760903e-4L, -5.364668491573609633134147164031476452679e-4L),
1971     TEST_c_c (cacos, -0x1.000002p0L, 0x1p-23L, 3.141370441751352383825802745874586120521L, -5.364668491573609633134147164031476452679e-4L),
1972     TEST_c_c (cacos, 0x1.000002p0L, -0x1p-23L, 2.222118384408546368406374049167636760903e-4L, 5.364668491573609633134147164031476452679e-4L),
1973     TEST_c_c (cacos, -0x1.000002p0L, -0x1p-23L, 3.141370441751352383825802745874586120521L, 5.364668491573609633134147164031476452679e-4L),
1974     TEST_c_c (cacos, 0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442097L, -8.813736713132375348727889167749389235161e-1L),
1975     TEST_c_c (cacos, 0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442097L, 8.813736713132375348727889167749389235161e-1L),
1976     TEST_c_c (cacos, -0x1.fp-129L, 0x1.000002p0L, 1.570796326794896619231321691639751442101L, -8.813736713132375348727889167749389235161e-1L),
1977     TEST_c_c (cacos, -0x1.fp-129L, -0x1.000002p0L, 1.570796326794896619231321691639751442101L, 8.813736713132375348727889167749389235161e-1L),
1978     TEST_c_c (cacos, 0x1.000002p0L, 0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, -4.882812451493617206486388134172712975070e-4L),
1979     TEST_c_c (cacos, -0x1.000002p0L, 0x1.fp-129L, 3.141592653589793238462643383279502878367L, -4.882812451493617206486388134172712975070e-4L),
1980     TEST_c_c (cacos, 0x1.000002p0L, -0x1.fp-129L, 5.830451806317544230969669308596361881467e-36L, 4.882812451493617206486388134172712975070e-4L),
1981     TEST_c_c (cacos, -0x1.000002p0L, -0x1.fp-129L, 3.141592653589793238462643383279502878367L, 4.882812451493617206486388134172712975070e-4L),
1982     TEST_c_c (cacos, 0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
1983     TEST_c_c (cacos, 0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
1984     TEST_c_c (cacos, -0.0L, 0x1.000002p0L, 1.570796326794896619231321691639751442099L, -8.813736713132375348727889167749389235161e-1L),
1985     TEST_c_c (cacos, -0.0L, -0x1.000002p0L, 1.570796326794896619231321691639751442099L, 8.813736713132375348727889167749389235161e-1L),
1986     TEST_c_c (cacos, 0x1.000002p0L, 0.0L, 0.0L, -4.882812451493617206486388134172712975070e-4L),
1987     TEST_c_c (cacos, -0x1.000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.882812451493617206486388134172712975070e-4L),
1988     TEST_c_c (cacos, 0x1.000002p0L, -0.0L, 0.0L, 4.882812451493617206486388134172712975070e-4L),
1989     TEST_c_c (cacos, -0x1.000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.882812451493617206486388134172712975070e-4L),
1990 #ifndef TEST_FLOAT
1991     TEST_c_c (cacos, 0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, -8.813735870195431822418551933572982483664e-1L),
1992     TEST_c_c (cacos, 0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896462222075823262262934288L, 8.813735870195431822418551933572982483664e-1L),
1993     TEST_c_c (cacos, -0x1p-52L, 0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, -8.813735870195431822418551933572982483664e-1L),
1994     TEST_c_c (cacos, -0x1p-52L, -0x1.0000000000001p0L, 1.570796326794896776240567560017239949909L, 8.813735870195431822418551933572982483664e-1L),
1995     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1p-52L, 9.590301705980041385828904092662391018164e-9L, -2.315303644582684770975188768022139415020e-8L),
1996     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1p-52L, 3.141592643999491532482601997450598791535L, -2.315303644582684770975188768022139415020e-8L),
1997     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1p-52L, 9.590301705980041385828904092662391018164e-9L, 2.315303644582684770975188768022139415020e-8L),
1998     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1p-52L, 3.141592643999491532482601997450598791535L, 2.315303644582684770975188768022139415020e-8L),
1999     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2000     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2001     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2002     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2003     TEST_c_c (cacos, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, -2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2004     TEST_c_c (cacos, -0x1.0000000000001p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
2005     TEST_c_c (cacos, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.557178503953494342609835913586108008322e-301L, 2.107342425544701550354780375182800088393e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2006     TEST_c_c (cacos, -0x1.0000000000001p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
2007     TEST_c_c (cacos, 0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2008     TEST_c_c (cacos, 0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2009     TEST_c_c (cacos, -0.0L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195431822418551933572895326024e-1L),
2010     TEST_c_c (cacos, -0.0L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195431822418551933572895326024e-1L),
2011     TEST_c_c (cacos, 0x1.0000000000001p0L, 0.0L, 0.0L, -2.107342425544701550354780375182800088393e-8L),
2012     TEST_c_c (cacos, -0x1.0000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.107342425544701550354780375182800088393e-8L),
2013     TEST_c_c (cacos, 0x1.0000000000001p0L, -0.0L, 0.0L, 2.107342425544701550354780375182800088393e-8L),
2014     TEST_c_c (cacos, -0x1.0000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.107342425544701550354780375182800088393e-8L),
2015 #endif
2016 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2017     TEST_c_c (cacos, 0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, -8.813735870195430253092739958139610131001e-1L),
2018     TEST_c_c (cacos, 0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619154657020805582738031L, 8.813735870195430253092739958139610131001e-1L),
2019     TEST_c_c (cacos, -0x1p-63L, 0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, -8.813735870195430253092739958139610131001e-1L),
2020     TEST_c_c (cacos, -0x1p-63L, -0x1.0000000000000002p0L, 1.570796326794896619307986362473920146166L, 8.813735870195430253092739958139610131001e-1L),
2021     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1p-63L, 2.119177303101063432592523199680782317447e-10L, -5.116146586219826555037807251857670783420e-10L),
2022     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1p-63L, 3.141592653377875508152537040020250564229L, -5.116146586219826555037807251857670783420e-10L),
2023     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1p-63L, 2.119177303101063432592523199680782317447e-10L, 5.116146586219826555037807251857670783420e-10L),
2024     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1p-63L, 3.141592653377875508152537040020250564229L, 5.116146586219826555037807251857670783420e-10L),
2025 # if LDBL_MIN_EXP <= -16381
2026     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2027     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2028     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2029     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2030     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, -4.656612873077392578082927418388212703712e-10L),
2031     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2032     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.748608650034385653922359120438227480943e-4923L, 4.656612873077392578082927418388212703712e-10L),
2033     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2034 # endif
2035     TEST_c_c (cacos, 0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2036     TEST_c_c (cacos, 0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2037     TEST_c_c (cacos, -0.0L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430253092739958139610130980e-1L),
2038     TEST_c_c (cacos, -0.0L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430253092739958139610130980e-1L),
2039     TEST_c_c (cacos, 0x1.0000000000000002p0L, 0.0L, 0.0L, -4.656612873077392578082927418388212703712e-10L),
2040     TEST_c_c (cacos, -0x1.0000000000000002p0L, 0.0L, 3.141592653589793238462643383279502884197L, -4.656612873077392578082927418388212703712e-10L),
2041     TEST_c_c (cacos, 0x1.0000000000000002p0L, -0.0L, 0.0L, 4.656612873077392578082927418388212703712e-10L),
2042     TEST_c_c (cacos, -0x1.0000000000000002p0L, -0.0L, 3.141592653589793238462643383279502884197L, 4.656612873077392578082927418388212703712e-10L),
2043 #endif
2044 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2045     TEST_c_c (cacos, 0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, -8.813735870195430252326093249798097405561e-1L),
2046     TEST_c_c (cacos, 0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639742726335L, 8.813735870195430252326093249798097405561e-1L),
2047     TEST_c_c (cacos, -0x1p-106L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, -8.813735870195430252326093249798097405561e-1L),
2048     TEST_c_c (cacos, -0x1p-106L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639760157863L, 8.813735870195430252326093249798097405561e-1L),
2049     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1p-106L, 5.394221422390606848017034778914096659726e-17L, -2.285028863093221674154232933662774454211e-16L),
2050     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1p-106L, 3.141592653589793184520429159373434404027L, -2.285028863093221674154232933662774454211e-16L),
2051     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1p-106L, 5.394221422390606848017034778914096659726e-17L, 2.285028863093221674154232933662774454211e-16L),
2052     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1p-106L, 3.141592653589793184520429159373434404027L, 2.285028863093221674154232933662774454211e-16L),
2053     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2054     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2055     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2056     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2057     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, -2.220446049250313080847263336181636063482e-16L),
2058     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2059     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.426922623448365473354662093431821897807e-293L, 2.220446049250313080847263336181636063482e-16L),
2060     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2061     TEST_c_c (cacos, 0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2062     TEST_c_c (cacos, 0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2063     TEST_c_c (cacos, -0.0L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249798097405561e-1L),
2064     TEST_c_c (cacos, -0.0L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249798097405561e-1L),
2065     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, 0.0L, 0.0L, -2.220446049250313080847263336181636063482e-16L),
2066     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, 0.0L, 3.141592653589793238462643383279502884197L, -2.220446049250313080847263336181636063482e-16L),
2067     TEST_c_c (cacos, 0x1.000000000000000000000000008p0L, -0.0L, 0.0L, 2.220446049250313080847263336181636063482e-16L),
2068     TEST_c_c (cacos, -0x1.000000000000000000000000008p0L, -0.0L, 3.141592653589793238462643383279502884197L, 2.220446049250313080847263336181636063482e-16L),
2069 #endif
2070 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2071     TEST_c_c (cacos, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, -8.813735870195430252326093249797924452120e-1L),
2072     TEST_c_c (cacos, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751374007L, 8.813735870195430252326093249797924452120e-1L),
2073     TEST_c_c (cacos, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, -8.813735870195430252326093249797924452120e-1L),
2074     TEST_c_c (cacos, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751510190L, 8.813735870195430252326093249797924452120e-1L),
2075     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 4.767863183742677481693563511435642755521e-18L, -2.019699255375255198156433710951064632386e-17L),
2076     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 3.141592653589793233694780199536825402504L, -2.019699255375255198156433710951064632386e-17L),
2077     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 4.767863183742677481693563511435642755521e-18L, 2.019699255375255198156433710951064632386e-17L),
2078     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 3.141592653589793233694780199536825402504L, 2.019699255375255198156433710951064632386e-17L),
2079     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2080     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2081     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2082     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2083     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, -1.962615573354718824241727964954454332780e-17L),
2084     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2085     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 4.148847925325683229178506116378864361396e-4916L, 1.962615573354718824241727964954454332780e-17L),
2086     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2087     TEST_c_c (cacos, 0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2088     TEST_c_c (cacos, 0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2089     TEST_c_c (cacos, -0.0L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797924452120e-1L),
2090     TEST_c_c (cacos, -0.0L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797924452120e-1L),
2091     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, 0.0L, 0.0L, -1.962615573354718824241727964954454332780e-17L),
2092     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, 0.0L, 3.141592653589793238462643383279502884197L, -1.962615573354718824241727964954454332780e-17L),
2093     TEST_c_c (cacos, 0x1.0000000000000000000000000001p0L, -0.0L, 0.0L, 1.962615573354718824241727964954454332780e-17L),
2094     TEST_c_c (cacos, -0x1.0000000000000000000000000001p0L, -0.0L, 3.141592653589793238462643383279502884197L, 1.962615573354718824241727964954454332780e-17L),
2095 #endif
2096
2097     TEST_c_c (cacos, 0x1p-23L, 0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, -8.813735448726963984495965873956465777250e-1L),
2098     TEST_c_c (cacos, 0x1p-23L, -0x0.ffffffp0L, 1.570796242501197085295336701632142060969L, 8.813735448726963984495965873956465777250e-1L),
2099     TEST_c_c (cacos, -0x1p-23L, 0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, -8.813735448726963984495965873956465777250e-1L),
2100     TEST_c_c (cacos, -0x1p-23L, -0x0.ffffffp0L, 1.570796411088596153167306681647360823228L, 8.813735448726963984495965873956465777250e-1L),
2101     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1p-23L, 4.391863861910487109445187743978204002614e-4L, -2.714321200917194650737217746780928423385e-4L),
2102     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1p-23L, 3.141153467203602189751698864505105063797L, -2.714321200917194650737217746780928423385e-4L),
2103     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1p-23L, 4.391863861910487109445187743978204002614e-4L, 2.714321200917194650737217746780928423385e-4L),
2104     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1p-23L, 3.141153467203602189751698864505105063797L, 2.714321200917194650737217746780928423385e-4L),
2105     TEST_c_c (cacos, 0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, -8.813735448726938863015878255140556727969e-1L),
2106     TEST_c_c (cacos, 0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442097L, 8.813735448726938863015878255140556727969e-1L),
2107     TEST_c_c (cacos, -0x1.fp-129L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, -8.813735448726938863015878255140556727969e-1L),
2108     TEST_c_c (cacos, -0x1.fp-129L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442101L, 8.813735448726938863015878255140556727969e-1L),
2109     TEST_c_c (cacos, 0x0.ffffffp0L, 0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, -8.245504387859737323891843603996428534945e-36L),
2110     TEST_c_c (cacos, -0x0.ffffffp0L, 0x1.fp-129L, 3.141247386605077034875040133796864147700L, -8.245504387859737323891843603996428534945e-36L),
2111     TEST_c_c (cacos, 0x0.ffffffp0L, -0x1.fp-129L, 3.452669847162035876032494826387364972849e-4L, 8.245504387859737323891843603996428534945e-36L),
2112     TEST_c_c (cacos, -0x0.ffffffp0L, -0x1.fp-129L, 3.141247386605077034875040133796864147700L, 8.245504387859737323891843603996428534945e-36L),
2113     TEST_c_c (cacos, 0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2114     TEST_c_c (cacos, 0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2115     TEST_c_c (cacos, -0.0L, 0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735448726938863015878255140556727969e-1L),
2116     TEST_c_c (cacos, -0.0L, -0x0.ffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735448726938863015878255140556727969e-1L),
2117     TEST_c_c (cacos, 0x0.ffffffp0L, 0.0L, 3.452669847162035876032494826387364972849e-4L, -0.0L),
2118     TEST_c_c (cacos, -0x0.ffffffp0L, 0.0L, 3.141247386605077034875040133796864147700L, -0.0L),
2119     TEST_c_c (cacos, 0x0.ffffffp0L, -0.0L, 3.452669847162035876032494826387364972849e-4L, 0.0L),
2120     TEST_c_c (cacos, -0x0.ffffffp0L, -0.0L, 3.141247386605077034875040133796864147700L, 0.0L),
2121     TEST_c_c (cacos, 0x1p-23L, 0.5L, 1.570796220170866625230343643673321150378L, -4.812118250596059896127318386463676808798e-1L),
2122     TEST_c_c (cacos, 0x1p-23L, -0.5L, 1.570796220170866625230343643673321150378L, 4.812118250596059896127318386463676808798e-1L),
2123     TEST_c_c (cacos, -0x1p-23L, 0.5L, 1.570796433418926613232299739606181733819L, -4.812118250596059896127318386463676808798e-1L),
2124     TEST_c_c (cacos, -0x1p-23L, -0.5L, 1.570796433418926613232299739606181733819L, 4.812118250596059896127318386463676808798e-1L),
2125     TEST_c_c (cacos, 0.5L, 0x1p-23L, 1.047197551196603215914744618665204532273L, -1.376510308240943236356088341381173571841e-7L),
2126     TEST_c_c (cacos, -0.5L, 0x1p-23L, 2.094395102393190022547898764614298351924L, -1.376510308240943236356088341381173571841e-7L),
2127     TEST_c_c (cacos, 0.5L, -0x1p-23L, 1.047197551196603215914744618665204532273L, 1.376510308240943236356088341381173571841e-7L),
2128     TEST_c_c (cacos, -0.5L, -0x1p-23L, 2.094395102393190022547898764614298351924L, 1.376510308240943236356088341381173571841e-7L),
2129     TEST_c_c (cacos, 0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442096L, -4.812118250596034474977589134243684231352e-1L),
2130     TEST_c_c (cacos, 0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442096L, 4.812118250596034474977589134243684231352e-1L),
2131     TEST_c_c (cacos, -0x1.fp-129L, 0.5L, 1.570796326794896619231321691639751442101L, -4.812118250596034474977589134243684231352e-1L),
2132     TEST_c_c (cacos, -0x1.fp-129L, -0.5L, 1.570796326794896619231321691639751442101L, 4.812118250596034474977589134243684231352e-1L),
2133     TEST_c_c (cacos, 0.5L, 0x1.fp-129L, 1.047197551196597746154214461093167628066L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2134     TEST_c_c (cacos, -0.5L, 0x1.fp-129L, 2.094395102393195492308428922186335256131L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2135     TEST_c_c (cacos, 0.5L, -0x1.fp-129L, 1.047197551196597746154214461093167628066L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2136     TEST_c_c (cacos, -0.5L, -0x1.fp-129L, 2.094395102393195492308428922186335256131L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2137     TEST_c_c (cacos, 0x1p-23L, 0x1p-23L, 1.570796207585607068450636380271254316214L, -1.192092895507818146886315028596704749235e-7L),
2138     TEST_c_c (cacos, 0x1p-23L, -0x1p-23L, 1.570796207585607068450636380271254316214L, 1.192092895507818146886315028596704749235e-7L),
2139     TEST_c_c (cacos, -0x1p-23L, 0x1p-23L, 1.570796446004186170012007003008248567984L, -1.192092895507818146886315028596704749235e-7L),
2140     TEST_c_c (cacos, -0x1p-23L, -0x1p-23L, 1.570796446004186170012007003008248567984L, 1.192092895507818146886315028596704749235e-7L),
2141     TEST_c_c (cacos, 0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442096L, -1.192092895507809676556842485683592032154e-7L),
2142     TEST_c_c (cacos, 0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442096L, 1.192092895507809676556842485683592032154e-7L),
2143     TEST_c_c (cacos, -0x1.fp-129L, 0x1p-23L, 1.570796326794896619231321691639751442101L, -1.192092895507809676556842485683592032154e-7L),
2144     TEST_c_c (cacos, -0x1.fp-129L, -0x1p-23L, 1.570796326794896619231321691639751442101L, 1.192092895507809676556842485683592032154e-7L),
2145     TEST_c_c (cacos, 0x1p-23L, 0x1.fp-129L, 1.570796207585607068449789347324000006847L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2146     TEST_c_c (cacos, -0x1p-23L, 0x1.fp-129L, 1.570796446004186170012854035955502877351L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2147     TEST_c_c (cacos, 0x1p-23L, -0x1.fp-129L, 1.570796207585607068449789347324000006847L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2148     TEST_c_c (cacos, -0x1p-23L, -0x1.fp-129L, 1.570796446004186170012854035955502877351L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2149     TEST_c_c (cacos, 0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2150     TEST_c_c (cacos, 0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2151     TEST_c_c (cacos, -0.0L, 0x1p-23L, 1.570796326794896619231321691639751442099L, -1.192092895507809676556842485683592032154e-7L),
2152     TEST_c_c (cacos, -0.0L, -0x1p-23L, 1.570796326794896619231321691639751442099L, 1.192092895507809676556842485683592032154e-7L),
2153     TEST_c_c (cacos, 0x1p-23L, 0.0L, 1.570796207585607068449789347324000006847L, -0.0L),
2154     TEST_c_c (cacos, -0x1p-23L, 0.0L, 1.570796446004186170012854035955502877351L, -0.0L),
2155     TEST_c_c (cacos, 0x1p-23L, -0.0L, 1.570796207585607068449789347324000006847L, 0.0L),
2156     TEST_c_c (cacos, -0x1p-23L, -0.0L, 1.570796446004186170012854035955502877351L, 0.0L),
2157     TEST_c_c (cacos, 0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2158     TEST_c_c (cacos, 0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2159     TEST_c_c (cacos, -0x1.fp-129L, 0x1.fp-129L, 1.570796326794896619231321691639751442101L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2160     TEST_c_c (cacos, -0x1.fp-129L, -0x1.fp-129L, 1.570796326794896619231321691639751442101L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2161 #ifndef TEST_FLOAT
2162     TEST_c_c (cacos, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, -8.813735870195429467279863907910458761820e-1L),
2163     TEST_c_c (cacos, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896462222075823262236786996L, 8.813735870195429467279863907910458761820e-1L),
2164     TEST_c_c (cacos, -0x1p-52L, 0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, -8.813735870195429467279863907910458761820e-1L),
2165     TEST_c_c (cacos, -0x1p-52L, -0x0.fffffffffffff8p0L, 1.570796326794896776240567560017266097201L, 8.813735870195429467279863907910458761820e-1L),
2166     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.895456983915074112227925127005564372844e-8L, -1.171456840272878582596796205397918831268e-8L),
2167     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1p-52L, 3.141592634635223399311902261000251614142L, -1.171456840272878582596796205397918831268e-8L),
2168     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.895456983915074112227925127005564372844e-8L, 1.171456840272878582596796205397918831268e-8L),
2169     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1p-52L, 3.141592634635223399311902261000251614142L, 1.171456840272878582596796205397918831268e-8L),
2170     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2171     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2172     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2173     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2174     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2175     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.141592638688632044614986995416067458693L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2176     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.490116119384765638786343542550461592240e-8L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2177     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.141592638688632044614986995416067458693L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2178     TEST_c_c (cacos, 0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2179     TEST_c_c (cacos, 0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2180     TEST_c_c (cacos, -0.0L, 0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195429467279863907910371604180e-1L),
2181     TEST_c_c (cacos, -0.0L, -0x0.fffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195429467279863907910371604180e-1L),
2182     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, 0.0L, 1.490116119384765638786343542550461592240e-8L, -0.0L),
2183     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, 0.0L, 3.141592638688632044614986995416067458693L, -0.0L),
2184     TEST_c_c (cacos, 0x0.fffffffffffff8p0L, -0.0L, 1.490116119384765638786343542550461592240e-8L, 0.0L),
2185     TEST_c_c (cacos, -0x0.fffffffffffff8p0L, -0.0L, 3.141592638688632044614986995416067458693L, 0.0L),
2186 #endif
2187     TEST_c_c (cacos, 0x1p-52L, 0.5L, 1.570796326794896420628589431857911675917L, -4.812118250596034474977589134243772428682e-1L),
2188     TEST_c_c (cacos, 0x1p-52L, -0.5L, 1.570796326794896420628589431857911675917L, 4.812118250596034474977589134243772428682e-1L),
2189     TEST_c_c (cacos, -0x1p-52L, 0.5L, 1.570796326794896817834053951421591208280L, -4.812118250596034474977589134243772428682e-1L),
2190     TEST_c_c (cacos, -0x1p-52L, -0.5L, 1.570796326794896817834053951421591208280L, 4.812118250596034474977589134243772428682e-1L),
2191     TEST_c_c (cacos, 0.5L, 0x1p-52L, 1.047197551196597746154214461093186605110L, -2.563950248511418570403591756798643804971e-16L),
2192     TEST_c_c (cacos, -0.5L, 0x1p-52L, 2.094395102393195492308428922186316279087L, -2.563950248511418570403591756798643804971e-16L),
2193     TEST_c_c (cacos, 0.5L, -0x1p-52L, 1.047197551196597746154214461093186605110L, 2.563950248511418570403591756798643804971e-16L),
2194     TEST_c_c (cacos, -0.5L, -0x1p-52L, 2.094395102393195492308428922186316279087L, 2.563950248511418570403591756798643804971e-16L),
2195 #ifndef TEST_FLOAT
2196     TEST_c_c (cacos, 0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2197     TEST_c_c (cacos, 0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2198     TEST_c_c (cacos, -0x1.fp-1025L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2199     TEST_c_c (cacos, -0x1.fp-1025L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2200     TEST_c_c (cacos, 0.5L, 0x1.fp-1025L, 1.047197551196597746154214461093167628066L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2201     TEST_c_c (cacos, -0.5L, 0x1.fp-1025L, 2.094395102393195492308428922186335256131L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2202     TEST_c_c (cacos, 0.5L, -0x1.fp-1025L, 1.047197551196597746154214461093167628066L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2203     TEST_c_c (cacos, -0.5L, -0x1.fp-1025L, 2.094395102393195492308428922186335256131L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2204 #endif
2205     TEST_c_c (cacos, 0x1p-52L, 0x1p-52L, 1.570796326794896397186716766608443357372L, -2.220446049250313080847263336181677117148e-16L),
2206     TEST_c_c (cacos, 0x1p-52L, -0x1p-52L, 1.570796326794896397186716766608443357372L, 2.220446049250313080847263336181677117148e-16L),
2207     TEST_c_c (cacos, -0x1p-52L, 0x1p-52L, 1.570796326794896841275926616671059526825L, -2.220446049250313080847263336181677117148e-16L),
2208     TEST_c_c (cacos, -0x1p-52L, -0x1p-52L, 1.570796326794896841275926616671059526825L, 2.220446049250313080847263336181677117148e-16L),
2209 #ifndef TEST_FLOAT
2210     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2211     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2212     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2213     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2214     TEST_c_c (cacos, 0x1p-52L, 0x1.fp-1025L, 1.570796326794896397186716766608443357372L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2215     TEST_c_c (cacos, -0x1p-52L, 0x1.fp-1025L, 1.570796326794896841275926616671059526825L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2216     TEST_c_c (cacos, 0x1p-52L, -0x1.fp-1025L, 1.570796326794896397186716766608443357372L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2217     TEST_c_c (cacos, -0x1p-52L, -0x1.fp-1025L, 1.570796326794896841275926616671059526825L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2218 #endif
2219     TEST_c_c (cacos, 0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2220     TEST_c_c (cacos, 0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2221     TEST_c_c (cacos, -0.0L, 0x1p-52L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181622378926e-16L),
2222     TEST_c_c (cacos, -0.0L, -0x1p-52L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181622378926e-16L),
2223     TEST_c_c (cacos, 0x1p-52L, 0.0L, 1.570796326794896397186716766608443357372L, -0.0L),
2224     TEST_c_c (cacos, -0x1p-52L, 0.0L, 1.570796326794896841275926616671059526825L, -0.0L),
2225     TEST_c_c (cacos, 0x1p-52L, -0.0L, 1.570796326794896397186716766608443357372L, 0.0L),
2226     TEST_c_c (cacos, -0x1p-52L, -0.0L, 1.570796326794896841275926616671059526825L, 0.0L),
2227 #ifndef TEST_FLOAT
2228     TEST_c_c (cacos, 0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2229     TEST_c_c (cacos, 0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2230     TEST_c_c (cacos, -0x1.fp-1025L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2231     TEST_c_c (cacos, -0x1.fp-1025L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2232 #endif
2233 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2234     TEST_c_c (cacos, 0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, -8.813735870195430251942769895627079569937e-1L),
2235     TEST_c_c (cacos, 0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619154657020805582738025L, 8.813735870195430251942769895627079569937e-1L),
2236     TEST_c_c (cacos, -0x1p-63L, 0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, -8.813735870195430251942769895627079569937e-1L),
2237     TEST_c_c (cacos, -0x1p-63L, -0x0.ffffffffffffffffp0L, 1.570796326794896619307986362473920146173L, 8.813735870195430251942769895627079569937e-1L),
2238     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1p-63L, 4.188407771167967636741951941902992986043e-10L, -2.588578361325995866221775673638805081337e-10L),
2239     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1p-63L, 3.141592653170952461345846619605307690007L, -2.588578361325995866221775673638805081337e-10L),
2240     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1p-63L, 4.188407771167967636741951941902992986043e-10L, 2.588578361325995866221775673638805081337e-10L),
2241     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1p-63L, 3.141592653170952461345846619605307690007L, 2.588578361325995866221775673638805081337e-10L),
2242 # if LDBL_MIN_EXP <= -16381
2243     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2244     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2245     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2246     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2247     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, -2.472906068161537187835415298076415423459e-4923L),
2248     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 3.141592653260520984471283759942320330996L, -2.472906068161537187835415298076415423459e-4923L),
2249     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.292722539913596233371825532007990724506e-10L, 2.472906068161537187835415298076415423459e-4923L),
2250     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 3.141592653260520984471283759942320330996L, 2.472906068161537187835415298076415423459e-4923L),
2251 # endif
2252     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2253     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2254     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430251942769895627079569917e-1L),
2255     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430251942769895627079569917e-1L),
2256     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, 0.0L, 3.292722539913596233371825532007990724506e-10L, -0.0L),
2257     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, 0.0L, 3.141592653260520984471283759942320330996L, -0.0L),
2258     TEST_c_c (cacos, 0x0.ffffffffffffffffp0L, -0.0L, 3.292722539913596233371825532007990724506e-10L, 0.0L),
2259     TEST_c_c (cacos, -0x0.ffffffffffffffffp0L, -0.0L, 3.141592653260520984471283759942320330996L, 0.0L),
2260 #endif
2261     TEST_c_c (cacos, 0x1p-63L, 0.5L, 1.570796326794896619134347701278529840650L, -4.812118250596034474977589134243684231373e-1L),
2262     TEST_c_c (cacos, 0x1p-63L, -0.5L, 1.570796326794896619134347701278529840650L, 4.812118250596034474977589134243684231373e-1L),
2263     TEST_c_c (cacos, -0x1p-63L, 0.5L, 1.570796326794896619328295682000973043547L, -4.812118250596034474977589134243684231373e-1L),
2264     TEST_c_c (cacos, -0x1p-63L, -0.5L, 1.570796326794896619328295682000973043547L, 4.812118250596034474977589134243684231373e-1L),
2265     TEST_c_c (cacos, 0.5L, 0x1p-63L, 1.047197551196597746154214461093167628070L, -1.251928832280966098829878787499365228659e-19L),
2266     TEST_c_c (cacos, -0.5L, 0x1p-63L, 2.094395102393195492308428922186335256127L, -1.251928832280966098829878787499365228659e-19L),
2267     TEST_c_c (cacos, 0.5L, -0x1p-63L, 1.047197551196597746154214461093167628070L, 1.251928832280966098829878787499365228659e-19L),
2268     TEST_c_c (cacos, -0.5L, -0x1p-63L, 2.094395102393195492308428922186335256127L, 1.251928832280966098829878787499365228659e-19L),
2269 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2270     TEST_c_c (cacos, 0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2271     TEST_c_c (cacos, 0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2272     TEST_c_c (cacos, -0x1.fp-16385L, 0.5L, 1.570796326794896619231321691639751442099L, -4.812118250596034474977589134243684231352e-1L),
2273     TEST_c_c (cacos, -0x1.fp-16385L, -0.5L, 1.570796326794896619231321691639751442099L, 4.812118250596034474977589134243684231352e-1L),
2274     TEST_c_c (cacos, 0.5L, 0x1.fp-16385L, 1.047197551196597746154214461093167628066L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2275     TEST_c_c (cacos, -0.5L, 0x1.fp-16385L, 2.094395102393195492308428922186335256131L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2276     TEST_c_c (cacos, 0.5L, -0x1.fp-16385L, 1.047197551196597746154214461093167628066L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2277     TEST_c_c (cacos, -0.5L, -0x1.fp-16385L, 2.094395102393195492308428922186335256131L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
2278 #endif
2279     TEST_c_c (cacos, 0x1p-63L, 0x1p-63L, 1.570796326794896619122901474391200998698L, -1.084202172485504434007452800869941711430e-19L),
2280     TEST_c_c (cacos, 0x1p-63L, -0x1p-63L, 1.570796326794896619122901474391200998698L, 1.084202172485504434007452800869941711430e-19L),
2281     TEST_c_c (cacos, -0x1p-63L, 0x1p-63L, 1.570796326794896619339741908888301885499L, -1.084202172485504434007452800869941711430e-19L),
2282     TEST_c_c (cacos, -0x1p-63L, -0x1p-63L, 1.570796326794896619339741908888301885499L, 1.084202172485504434007452800869941711430e-19L),
2283 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2284     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2285     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2286     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2287     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2288     TEST_c_c (cacos, 0x1p-63L, 0x1.fp-16385L, 1.570796326794896619122901474391200998698L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2289     TEST_c_c (cacos, -0x1p-63L, 0x1.fp-16385L, 1.570796326794896619339741908888301885499L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2290     TEST_c_c (cacos, 0x1p-63L, -0x1.fp-16385L, 1.570796326794896619122901474391200998698L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2291     TEST_c_c (cacos, -0x1p-63L, -0x1.fp-16385L, 1.570796326794896619339741908888301885499L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
2292 #endif
2293     TEST_c_c (cacos, 0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2294     TEST_c_c (cacos, 0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2295     TEST_c_c (cacos, -0.0L, 0x1p-63L, 1.570796326794896619231321691639751442099L, -1.084202172485504434007452800869941711424e-19L),
2296     TEST_c_c (cacos, -0.0L, -0x1p-63L, 1.570796326794896619231321691639751442099L, 1.084202172485504434007452800869941711424e-19L),
2297     TEST_c_c (cacos, 0x1p-63L, 0.0L, 1.570796326794896619122901474391200998698L, -0.0L),
2298     TEST_c_c (cacos, -0x1p-63L, 0.0L, 1.570796326794896619339741908888301885499L, -0.0L),
2299     TEST_c_c (cacos, 0x1p-63L, -0.0L, 1.570796326794896619122901474391200998698L, 0.0L),
2300     TEST_c_c (cacos, -0x1p-63L, -0.0L, 1.570796326794896619339741908888301885499L, 0.0L),
2301 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2302     TEST_c_c (cacos, 0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2303     TEST_c_c (cacos, 0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2304     TEST_c_c (cacos, -0x1.fp-16385L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2305     TEST_c_c (cacos, -0x1.fp-16385L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2306 #endif
2307 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2308     TEST_c_c (cacos, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, -8.813735870195430252326093249797835932642e-1L),
2309     TEST_c_c (cacos, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639734010571L, 8.813735870195430252326093249797835932642e-1L),
2310     TEST_c_c (cacos, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, -8.813735870195430252326093249797835932642e-1L),
2311     TEST_c_c (cacos, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639768873627L, 8.813735870195430252326093249797835932642e-1L),
2312     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.997188458999618357060632049675702684031e-16L, -1.234330349600789959989661887846005659983e-16L),
2313     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 3.141592653589793038743797483317667178134L, -1.234330349600789959989661887846005659983e-16L),
2314     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.997188458999618357060632049675702684031e-16L, 1.234330349600789959989661887846005659983e-16L),
2315     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 3.141592653589793038743797483317667178134L, 1.234330349600789959989661887846005659983e-16L),
2316     TEST_c_c (cacos, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2317     TEST_c_c (cacos, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2318     TEST_c_c (cacos, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2319     TEST_c_c (cacos, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2320     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2321     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.141592653589793081453397514901996944859L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2322     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570092458683775059393382371963565104164e-16L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2323     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.141592653589793081453397514901996944859L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2324     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2325     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2326     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797835932642e-1L),
2327     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797835932642e-1L),
2328     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570092458683775059393382371963565104164e-16L, -0.0L),
2329     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 3.141592653589793081453397514901996944859L, -0.0L),
2330     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570092458683775059393382371963565104164e-16L, 0.0L),
2331     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 3.141592653589793081453397514901996944859L, 0.0L),
2332 #endif
2333     TEST_c_c (cacos, 0x1p-105L, 0.5L, 1.570796326794896619231321691639729392766L, -4.812118250596034474977589134243684231352e-1L),
2334     TEST_c_c (cacos, 0x1p-105L, -0.5L, 1.570796326794896619231321691639729392766L, 4.812118250596034474977589134243684231352e-1L),
2335     TEST_c_c (cacos, -0x1p-105L, 0.5L, 1.570796326794896619231321691639773491431L, -4.812118250596034474977589134243684231352e-1L),
2336     TEST_c_c (cacos, -0x1p-105L, -0.5L, 1.570796326794896619231321691639773491431L, 4.812118250596034474977589134243684231352e-1L),
2337     TEST_c_c (cacos, 0.5L, 0x1p-105L, 1.047197551196597746154214461093167628066L, -2.846556599890768890940941645338546615370e-32L),
2338     TEST_c_c (cacos, -0.5L, 0x1p-105L, 2.094395102393195492308428922186335256131L, -2.846556599890768890940941645338546615370e-32L),
2339     TEST_c_c (cacos, 0.5L, -0x1p-105L, 1.047197551196597746154214461093167628066L, 2.846556599890768890940941645338546615370e-32L),
2340     TEST_c_c (cacos, -0.5L, -0x1p-105L, 2.094395102393195492308428922186335256131L, 2.846556599890768890940941645338546615370e-32L),
2341     TEST_c_c (cacos, 0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639726790195L, -2.465190328815661891911651766508706967729e-32L),
2342     TEST_c_c (cacos, 0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639726790195L, 2.465190328815661891911651766508706967729e-32L),
2343     TEST_c_c (cacos, -0x1p-105L, 0x1p-105L, 1.570796326794896619231321691639776094002L, -2.465190328815661891911651766508706967729e-32L),
2344     TEST_c_c (cacos, -0x1p-105L, -0x1p-105L, 1.570796326794896619231321691639776094002L, 2.465190328815661891911651766508706967729e-32L),
2345 #ifndef TEST_FLOAT
2346     TEST_c_c (cacos, 0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2347     TEST_c_c (cacos, 0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2348     TEST_c_c (cacos, -0x1.fp-1025L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2349     TEST_c_c (cacos, -0x1.fp-1025L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2350     TEST_c_c (cacos, 0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639726790195L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2351     TEST_c_c (cacos, -0x1p-105L, 0x1.fp-1025L, 1.570796326794896619231321691639776094002L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2352     TEST_c_c (cacos, 0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639726790195L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2353     TEST_c_c (cacos, -0x1p-105L, -0x1.fp-1025L, 1.570796326794896619231321691639776094002L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2354 #endif
2355     TEST_c_c (cacos, 0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2356     TEST_c_c (cacos, 0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2357     TEST_c_c (cacos, -0.0L, 0x1p-105L, 1.570796326794896619231321691639751442099L, -2.465190328815661891911651766508706967729e-32L),
2358     TEST_c_c (cacos, -0.0L, -0x1p-105L, 1.570796326794896619231321691639751442099L, 2.465190328815661891911651766508706967729e-32L),
2359     TEST_c_c (cacos, 0x1p-105L, 0.0L, 1.570796326794896619231321691639726790195L, -0.0L),
2360     TEST_c_c (cacos, -0x1p-105L, 0.0L, 1.570796326794896619231321691639776094002L, -0.0L),
2361     TEST_c_c (cacos, 0x1p-105L, -0.0L, 1.570796326794896619231321691639726790195L, 0.0L),
2362     TEST_c_c (cacos, -0x1p-105L, -0.0L, 1.570796326794896619231321691639776094002L, 0.0L),
2363 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2364     TEST_c_c (cacos, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, -8.813735870195430252326093249797922409363e-1L),
2365     TEST_c_c (cacos, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751305915L, 8.813735870195430252326093249797922409363e-1L),
2366     TEST_c_c (cacos, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, -8.813735870195430252326093249797922409363e-1L),
2367     TEST_c_c (cacos, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751578282L, 8.813735870195430252326093249797922409363e-1L),
2368     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.765281878332676474347460257221369818872e-17L, -1.091004200533850618345330909857103457781e-17L),
2369     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 3.141592653589793220809824599952738140723L, -1.091004200533850618345330909857103457781e-17L),
2370     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.765281878332676474347460257221369818872e-17L, 1.091004200533850618345330909857103457781e-17L),
2371     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 3.141592653589793220809824599952738140723L, 1.091004200533850618345330909857103457781e-17L),
2372     TEST_c_c (cacos, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2373     TEST_c_c (cacos, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2374     TEST_c_c (cacos, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2375     TEST_c_c (cacos, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2376     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, -5.867357004219059108790368268900490184505e-4916L),
2377     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 3.141592653589793224584855575465046128902L, -5.867357004219059108790368268900490184505e-4916L),
2378     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.387778780781445675529539585113525401762e-17L, 5.867357004219059108790368268900490184505e-4916L),
2379     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 3.141592653589793224584855575465046128902L, 5.867357004219059108790368268900490184505e-4916L),
2380     TEST_c_c (cacos, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2381     TEST_c_c (cacos, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2382     TEST_c_c (cacos, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, -8.813735870195430252326093249797922409363e-1L),
2383     TEST_c_c (cacos, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.570796326794896619231321691639751442099L, 8.813735870195430252326093249797922409363e-1L),
2384     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.387778780781445675529539585113525401762e-17L, -0.0L),
2385     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 3.141592653589793224584855575465046128902L, -0.0L),
2386     TEST_c_c (cacos, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.387778780781445675529539585113525401762e-17L, 0.0L),
2387     TEST_c_c (cacos, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 3.141592653589793224584855575465046128902L, 0.0L),
2388 #endif
2389     TEST_c_c (cacos, 0x1p-112L, 0.5L, 1.570796326794896619231321691639751269838L, -4.812118250596034474977589134243684231352e-1L),
2390     TEST_c_c (cacos, 0x1p-112L, -0.5L, 1.570796326794896619231321691639751269838L, 4.812118250596034474977589134243684231352e-1L),
2391     TEST_c_c (cacos, -0x1p-112L, 0.5L, 1.570796326794896619231321691639751614359L, -4.812118250596034474977589134243684231352e-1L),
2392     TEST_c_c (cacos, -0x1p-112L, -0.5L, 1.570796326794896619231321691639751614359L, 4.812118250596034474977589134243684231352e-1L),
2393     TEST_c_c (cacos, 0.5L, 0x1p-112L, 1.047197551196597746154214461093167628066L, -2.223872343664663196047610660420739543258e-34L),
2394     TEST_c_c (cacos, -0.5L, 0x1p-112L, 2.094395102393195492308428922186335256131L, -2.223872343664663196047610660420739543258e-34L),
2395     TEST_c_c (cacos, 0.5L, -0x1p-112L, 1.047197551196597746154214461093167628066L, 2.223872343664663196047610660420739543258e-34L),
2396     TEST_c_c (cacos, -0.5L, -0x1p-112L, 2.094395102393195492308428922186335256131L, 2.223872343664663196047610660420739543258e-34L),
2397     TEST_c_c (cacos, 0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751249506L, -1.925929944387235853055977942584927318538e-34L),
2398     TEST_c_c (cacos, 0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751249506L, 1.925929944387235853055977942584927318538e-34L),
2399     TEST_c_c (cacos, -0x1p-112L, 0x1p-112L, 1.570796326794896619231321691639751634692L, -1.925929944387235853055977942584927318538e-34L),
2400     TEST_c_c (cacos, -0x1p-112L, -0x1p-112L, 1.570796326794896619231321691639751634692L, 1.925929944387235853055977942584927318538e-34L),
2401 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2402     TEST_c_c (cacos, 0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2403     TEST_c_c (cacos, 0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2404     TEST_c_c (cacos, -0x1.fp-16385L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2405     TEST_c_c (cacos, -0x1.fp-16385L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2406     TEST_c_c (cacos, 0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751249506L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2407     TEST_c_c (cacos, -0x1p-112L, 0x1.fp-16385L, 1.570796326794896619231321691639751634692L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2408     TEST_c_c (cacos, 0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751249506L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2409     TEST_c_c (cacos, -0x1p-112L, -0x1.fp-16385L, 1.570796326794896619231321691639751634692L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
2410 #endif
2411     TEST_c_c (cacos, 0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2412     TEST_c_c (cacos, 0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2413     TEST_c_c (cacos, -0.0L, 0x1p-112L, 1.570796326794896619231321691639751442099L, -1.925929944387235853055977942584927318538e-34L),
2414     TEST_c_c (cacos, -0.0L, -0x1p-112L, 1.570796326794896619231321691639751442099L, 1.925929944387235853055977942584927318538e-34L),
2415     TEST_c_c (cacos, 0x1p-112L, 0.0L, 1.570796326794896619231321691639751249506L, -0.0L),
2416     TEST_c_c (cacos, -0x1p-112L, 0.0L, 1.570796326794896619231321691639751634692L, -0.0L),
2417     TEST_c_c (cacos, 0x1p-112L, -0.0L, 1.570796326794896619231321691639751249506L, 0.0L),
2418     TEST_c_c (cacos, -0x1p-112L, -0.0L, 1.570796326794896619231321691639751634692L, 0.0L),
2419
2420     TEST_c_c (cacos, 0.75L, 1.25L, 1.11752014915610270578240049553777969L, -1.13239363160530819522266333696834467L),
2421     TEST_c_c (cacos, -2, -3, 2.1414491111159960199416055713254211L, 1.9833870299165354323470769028940395L),
2422     END_DATA (cacos)
2423   };
2424
2425 static void
2426 cacos_test (void)
2427 {
2428   errno = 0;
2429   FUNC(cacos) (BUILD_COMPLEX (0.7L, 1.2L));
2430   if (errno == ENOSYS)
2431     /* Function not implemented.  */
2432     return;
2433
2434   START (cacos);
2435   RUN_TEST_LOOP_c_c (cacos, cacos_test_data, );
2436   END (cacos, complex);
2437 }
2438
2439 static const struct test_c_c_data cacosh_test_data[] =
2440   {
2441     START_DATA (cacosh),
2442     TEST_c_c (cacosh, 0, 0, 0.0, M_PI_2l),
2443     TEST_c_c (cacosh, minus_zero, 0, 0.0, M_PI_2l),
2444     TEST_c_c (cacosh, 0, minus_zero, 0.0, -M_PI_2l),
2445     TEST_c_c (cacosh, minus_zero, minus_zero, 0.0, -M_PI_2l),
2446     TEST_c_c (cacosh, minus_infty, plus_infty, plus_infty, M_PI_34l),
2447     TEST_c_c (cacosh, minus_infty, minus_infty, plus_infty, -M_PI_34l),
2448
2449     TEST_c_c (cacosh, plus_infty, plus_infty, plus_infty, M_PI_4l),
2450     TEST_c_c (cacosh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
2451
2452     TEST_c_c (cacosh, -10.0, plus_infty, plus_infty, M_PI_2l),
2453     TEST_c_c (cacosh, -10.0, minus_infty, plus_infty, -M_PI_2l),
2454     TEST_c_c (cacosh, 0, plus_infty, plus_infty, M_PI_2l),
2455     TEST_c_c (cacosh, 0, minus_infty, plus_infty, -M_PI_2l),
2456     TEST_c_c (cacosh, 0.1L, plus_infty, plus_infty, M_PI_2l),
2457     TEST_c_c (cacosh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
2458
2459     TEST_c_c (cacosh, minus_infty, 0, plus_infty, M_PIl),
2460     TEST_c_c (cacosh, minus_infty, minus_zero, plus_infty, -M_PIl),
2461     TEST_c_c (cacosh, minus_infty, 100, plus_infty, M_PIl),
2462     TEST_c_c (cacosh, minus_infty, -100, plus_infty, -M_PIl),
2463
2464     TEST_c_c (cacosh, plus_infty, 0, plus_infty, 0.0),
2465     TEST_c_c (cacosh, plus_infty, minus_zero, plus_infty, minus_zero),
2466     TEST_c_c (cacosh, plus_infty, 0.5, plus_infty, 0.0),
2467     TEST_c_c (cacosh, plus_infty, -0.5, plus_infty, minus_zero),
2468
2469     TEST_c_c (cacosh, plus_infty, qnan_value, plus_infty, qnan_value),
2470     TEST_c_c (cacosh, minus_infty, qnan_value, plus_infty, qnan_value),
2471
2472     TEST_c_c (cacosh, 0, qnan_value, qnan_value, qnan_value),
2473     TEST_c_c (cacosh, minus_zero, qnan_value, qnan_value, qnan_value),
2474
2475     TEST_c_c (cacosh, qnan_value, plus_infty, plus_infty, qnan_value),
2476     TEST_c_c (cacosh, qnan_value, minus_infty, plus_infty, qnan_value),
2477
2478     TEST_c_c (cacosh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2479     TEST_c_c (cacosh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2480
2481     TEST_c_c (cacosh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2482     TEST_c_c (cacosh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
2483
2484     TEST_c_c (cacosh, qnan_value, qnan_value, qnan_value, qnan_value),
2485
2486     TEST_c_c (cacosh, plus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2487     TEST_c_c (cacosh, minus_zero, -1.5L, 1.194763217287109304111930828519090523536L, -M_PI_2l),
2488     TEST_c_c (cacosh, plus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2489     TEST_c_c (cacosh, minus_zero, -1.0L, 0.8813735870195430252326093249797923090282L, -M_PI_2l),
2490     TEST_c_c (cacosh, plus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2491     TEST_c_c (cacosh, minus_zero, -0.5L, 0.4812118250596034474977589134243684231352L, -M_PI_2l),
2492     TEST_c_c (cacosh, plus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2493     TEST_c_c (cacosh, minus_zero, 0.5L, 0.4812118250596034474977589134243684231352L, M_PI_2l),
2494     TEST_c_c (cacosh, plus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2495     TEST_c_c (cacosh, minus_zero, 1.0L, 0.8813735870195430252326093249797923090282L, M_PI_2l),
2496     TEST_c_c (cacosh, plus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2497     TEST_c_c (cacosh, minus_zero, 1.5L, 1.194763217287109304111930828519090523536L, M_PI_2l),
2498
2499     TEST_c_c (cacosh, -1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, M_PIl),
2500     TEST_c_c (cacosh, -1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, -M_PIl),
2501     TEST_c_c (cacosh, -1.0L, plus_zero, plus_zero, M_PIl),
2502     TEST_c_c (cacosh, -1.0L, minus_zero, plus_zero, -M_PIl),
2503     TEST_c_c (cacosh, -0.5L, plus_zero, plus_zero, 2.094395102393195492308428922186335256131L),
2504     TEST_c_c (cacosh, -0.5L, minus_zero, plus_zero, -2.094395102393195492308428922186335256131L),
2505     TEST_c_c (cacosh, 0.5L, plus_zero, plus_zero, 1.047197551196597746154214461093167628066L),
2506     TEST_c_c (cacosh, 0.5L, minus_zero, plus_zero, -1.047197551196597746154214461093167628066L),
2507     TEST_c_c (cacosh, 1.0L, plus_zero, plus_zero, plus_zero),
2508     TEST_c_c (cacosh, 1.0L, minus_zero, plus_zero, minus_zero),
2509     TEST_c_c (cacosh, 1.5L, plus_zero, 0.9624236501192068949955178268487368462704L, plus_zero),
2510     TEST_c_c (cacosh, 1.5L, minus_zero, 0.9624236501192068949955178268487368462704L, minus_zero),
2511
2512     TEST_c_c (cacosh, 0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 8.881784197001252323389053344727730248720e-16L),
2513     TEST_c_c (cacosh, 0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -8.881784197001252323389053344727730248720e-16L),
2514     TEST_c_c (cacosh, -0x1p50L, 1.0L, 3.535050620855721078027883819436720218708e1L, 3.141592653589792350284223683154270545292L),
2515     TEST_c_c (cacosh, -0x1p50L, -1.0L, 3.535050620855721078027883819436720218708e1L, -3.141592653589792350284223683154270545292L),
2516     TEST_c_c (cacosh, 1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794895731052901991514519103193L),
2517     TEST_c_c (cacosh, -1.0L, 0x1p50L, 3.535050620855721078027883819436759661753e1L, 1.570796326794897507409741391764983781004L),
2518     TEST_c_c (cacosh, 1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794895731052901991514519103193L),
2519     TEST_c_c (cacosh, -1.0L, -0x1p50L, 3.535050620855721078027883819436759661753e1L, -1.570796326794897507409741391764983781004L),
2520 #ifndef TEST_FLOAT
2521     TEST_c_c (cacosh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
2522     TEST_c_c (cacosh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
2523     TEST_c_c (cacosh, -0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.141592653589793238462643383279502884197L),
2524     TEST_c_c (cacosh, -0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.141592653589793238462643383279502884197L),
2525     TEST_c_c (cacosh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2526     TEST_c_c (cacosh, -1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
2527     TEST_c_c (cacosh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2528     TEST_c_c (cacosh, -1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
2529 #endif
2530 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2531     TEST_c_c (cacosh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
2532     TEST_c_c (cacosh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
2533     TEST_c_c (cacosh, -0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 3.141592653589793238462643383279502884197L),
2534     TEST_c_c (cacosh, -0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -3.141592653589793238462643383279502884197L),
2535     TEST_c_c (cacosh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2536     TEST_c_c (cacosh, -1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
2537     TEST_c_c (cacosh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2538     TEST_c_c (cacosh, -1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
2539 #endif
2540     TEST_c_c (cacosh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
2541 #ifndef TEST_FLOAT
2542     TEST_c_c (cacosh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
2543 #endif
2544 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
2545     TEST_c_c (cacosh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
2546 #endif
2547     TEST_c_c (cacosh, 0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442097L),
2548     TEST_c_c (cacosh, 0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442097L),
2549     TEST_c_c (cacosh, -0x1.fp-129L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442100L),
2550     TEST_c_c (cacosh, -0x1.fp-129L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442100L),
2551     TEST_c_c (cacosh, 1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2552     TEST_c_c (cacosh, -1.5L, 0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884195L),
2553     TEST_c_c (cacosh, 1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
2554     TEST_c_c (cacosh, -1.5L, -0x1.fp-129L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884195L),
2555 #ifndef TEST_FLOAT
2556     TEST_c_c (cacosh, 0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2557     TEST_c_c (cacosh, 0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2558     TEST_c_c (cacosh, -0x1.fp-1025L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2559     TEST_c_c (cacosh, -0x1.fp-1025L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2560     TEST_c_c (cacosh, 1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2561     TEST_c_c (cacosh, -1.5L, 0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2562     TEST_c_c (cacosh, 1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
2563     TEST_c_c (cacosh, -1.5L, -0x1.fp-1025L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2564 #endif
2565 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2566     TEST_c_c (cacosh, 0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2567     TEST_c_c (cacosh, 0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2568     TEST_c_c (cacosh, -0x1.fp-16385L, 1.5L, 1.194763217287109304111930828519090523536L, 1.570796326794896619231321691639751442099L),
2569     TEST_c_c (cacosh, -0x1.fp-16385L, -1.5L, 1.194763217287109304111930828519090523536L, -1.570796326794896619231321691639751442099L),
2570     TEST_c_c (cacosh, 1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2571     TEST_c_c (cacosh, -1.5L, 0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, 3.141592653589793238462643383279502884197L),
2572     TEST_c_c (cacosh, 1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
2573     TEST_c_c (cacosh, -1.5L, -0x1.fp-16385L, 9.624236501192068949955178268487368462704e-1L, -3.141592653589793238462643383279502884197L),
2574 #endif
2575     TEST_c_c (cacosh, 0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.221357263937683325603909865564381489366L),
2576     TEST_c_c (cacosh, 0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.221357263937683325603909865564381489366L),
2577     TEST_c_c (cacosh, -0.5L, 1.0L, 9.261330313501824245501244453057873152694e-1L, 1.920235389652109912858733517715121394831L),
2578     TEST_c_c (cacosh, -0.5L, -1.0L, 9.261330313501824245501244453057873152694e-1L, -1.920235389652109912858733517715121394831L),
2579     TEST_c_c (cacosh, 1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 6.748888455860063801646649673121744318756e-1L),
2580     TEST_c_c (cacosh, -1.0L, 0.5L, 7.328576759736452608886724437653071523305e-1L, 2.466703808003786858297978415967328452322L),
2581     TEST_c_c (cacosh, 1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -6.748888455860063801646649673121744318756e-1L),
2582     TEST_c_c (cacosh, -1.0L, -0.5L, 7.328576759736452608886724437653071523305e-1L, -2.466703808003786858297978415967328452322L),
2583     TEST_c_c (cacosh, 0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.394493894017929688812643125003661339452L),
2584     TEST_c_c (cacosh, 0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.394493894017929688812643125003661339452L),
2585     TEST_c_c (cacosh, -0.25L, 1.0L, 8.924633639033482359562124741744951972772e-1L, 1.747098759571863549650000258275841544745L),
2586     TEST_c_c (cacosh, -0.25L, -1.0L, 8.924633639033482359562124741744951972772e-1L, -1.747098759571863549650000258275841544745L),
2587     TEST_c_c (cacosh, 1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 4.890443302710802929202843732146540079124e-1L),
2588     TEST_c_c (cacosh, -1.0L, 0.25L, 5.097911466811016354623559941115413499164e-1L, 2.652548323318712945542359010064848876285L),
2589     TEST_c_c (cacosh, 1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -4.890443302710802929202843732146540079124e-1L),
2590     TEST_c_c (cacosh, -1.0L, -0.25L, 5.097911466811016354623559941115413499164e-1L, -2.652548323318712945542359010064848876285L),
2591     TEST_c_c (cacosh, 0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.569458417435338878318763342108699202986L),
2592     TEST_c_c (cacosh, 0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.569458417435338878318763342108699202986L),
2593     TEST_c_c (cacosh, -0x1.fp-10L, 1.0L, 8.813742198809567991336704287826445879025e-1L, 1.572134236154454360143880041170803681211L),
2594     TEST_c_c (cacosh, -0x1.fp-10L, -1.0L, 8.813742198809567991336704287826445879025e-1L, -1.572134236154454360143880041170803681211L),
2595     TEST_c_c (cacosh, 1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 4.349129763101882771258049954181971959031e-2L),
2596     TEST_c_c (cacosh, -1.0L, 0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, 3.098101355958774410750062883737683164607L),
2597     TEST_c_c (cacosh, 1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -4.349129763101882771258049954181971959031e-2L),
2598     TEST_c_c (cacosh, -1.0L, -0x1.fp-10L, 4.350501469856803800217957402220976497152e-2L, -3.098101355958774410750062883737683164607L),
2599     TEST_c_c (cacosh, 0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796325518966635014803151387033957091L),
2600     TEST_c_c (cacosh, 0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796325518966635014803151387033957091L),
2601     TEST_c_c (cacosh, -0x1.fp-30L, 1.0L, 8.813735870195430258081932989769495326854e-1L, 1.570796328070826603447840231892468927106L),
2602     TEST_c_c (cacosh, -0x1.fp-30L, -1.0L, 8.813735870195430258081932989769495326854e-1L, -1.570796328070826603447840231892468927106L),
2603     TEST_c_c (cacosh, 1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 4.247867097467650115899790787875186617316e-5L),
2604     TEST_c_c (cacosh, -1.0L, 0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, 3.141550174918818561961484385371624132331L),
2605     TEST_c_c (cacosh, 1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -4.247867097467650115899790787875186617316e-5L),
2606     TEST_c_c (cacosh, -1.0L, -0x1.fp-30L, 4.247867098745151888768727039216644758847e-5L, -3.141550174918818561961484385371624132331L),
2607     TEST_c_c (cacosh, 0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691638670687364L),
2608     TEST_c_c (cacosh, 0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691638670687364L),
2609     TEST_c_c (cacosh, -0x1.fp-100L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691640832196834L),
2610     TEST_c_c (cacosh, -0x1.fp-100L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691640832196834L),
2611     TEST_c_c (cacosh, 1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 1.236292038260260888664514866456887257525e-15L),
2612     TEST_c_c (cacosh, -1.0L, 0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, 3.141592653589792002170605123018614219682L),
2613     TEST_c_c (cacosh, 1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -1.236292038260260888664514866456887257525e-15L),
2614     TEST_c_c (cacosh, -1.0L, -0x1.fp-100L, 1.236292038260260888664514866457202186027e-15L, -3.141592653589792002170605123018614219682L),
2615     TEST_c_c (cacosh, 0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442097L),
2616     TEST_c_c (cacosh, 0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442097L),
2617     TEST_c_c (cacosh, -0x1.fp-129L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442101L),
2618     TEST_c_c (cacosh, -0x1.fp-129L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442101L),
2619     TEST_c_c (cacosh, 1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 5.335635276982233498398987585285818977930e-20L),
2620     TEST_c_c (cacosh, -1.0L, 0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, 3.141592653589793238409287030509680549213L),
2621     TEST_c_c (cacosh, 1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -5.335635276982233498398987585285818977930e-20L),
2622     TEST_c_c (cacosh, -1.0L, -0x1.fp-129L, 5.335635276982233498398987585285818977933e-20L, -3.141592653589793238409287030509680549213L),
2623 #ifndef TEST_FLOAT
2624     TEST_c_c (cacosh, 0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2625     TEST_c_c (cacosh, 0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2626     TEST_c_c (cacosh, -0x1.fp-1000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2627     TEST_c_c (cacosh, -0x1.fp-1000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2628     TEST_c_c (cacosh, 1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 4.252291453851660175550490409247739011867e-151L),
2629     TEST_c_c (cacosh, -1.0L, 0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, 3.141592653589793238462643383279502884197L),
2630     TEST_c_c (cacosh, 1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -4.252291453851660175550490409247739011867e-151L),
2631     TEST_c_c (cacosh, -1.0L, -0x1.fp-1000L, 4.252291453851660175550490409247739011867e-151L, -3.141592653589793238462643383279502884197L),
2632     TEST_c_c (cacosh, 0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2633     TEST_c_c (cacosh, 0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2634     TEST_c_c (cacosh, -0x1.fp-1025L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2635     TEST_c_c (cacosh, -0x1.fp-1025L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2636     TEST_c_c (cacosh, 1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 7.340879205566679497036857179189356754017e-155L),
2637     TEST_c_c (cacosh, -1.0L, 0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, 3.141592653589793238462643383279502884197L),
2638     TEST_c_c (cacosh, 1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -7.340879205566679497036857179189356754017e-155L),
2639     TEST_c_c (cacosh, -1.0L, -0x1.fp-1025L, 7.340879205566679497036857179189356754017e-155L, -3.141592653589793238462643383279502884197L),
2640 #endif
2641 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2642     TEST_c_c (cacosh, 0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2643     TEST_c_c (cacosh, 0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2644     TEST_c_c (cacosh, -0x1.fp-10000L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2645     TEST_c_c (cacosh, -0x1.fp-10000L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2646     TEST_c_c (cacosh, 1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 9.854680208706673586644342922051388714633e-1506L),
2647     TEST_c_c (cacosh, -1.0L, 0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, 3.141592653589793238462643383279502884197L),
2648     TEST_c_c (cacosh, 1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -9.854680208706673586644342922051388714633e-1506L),
2649     TEST_c_c (cacosh, -1.0L, -0x1.fp-10000L, 9.854680208706673586644342922051388714633e-1506L, -3.141592653589793238462643383279502884197L),
2650     TEST_c_c (cacosh, 0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2651     TEST_c_c (cacosh, 0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2652     TEST_c_c (cacosh, -0x1.fp-16385L, 1.0L, 8.813735870195430252326093249797923090282e-1L, 1.570796326794896619231321691639751442099L),
2653     TEST_c_c (cacosh, -0x1.fp-16385L, -1.0L, 8.813735870195430252326093249797923090282e-1L, -1.570796326794896619231321691639751442099L),
2654     TEST_c_c (cacosh, 1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 9.023632056840860275214893047597614177639e-2467L),
2655     TEST_c_c (cacosh, -1.0L, 0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, 3.141592653589793238462643383279502884197L),
2656     TEST_c_c (cacosh, 1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -9.023632056840860275214893047597614177639e-2467L),
2657     TEST_c_c (cacosh, -1.0L, -0x1.fp-16385L, 9.023632056840860275214893047597614177639e-2467L, -3.141592653589793238462643383279502884197L),
2658 #endif
2659     TEST_c_c (cacosh, 0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796242501204621739026081991856762292L),
2660     TEST_c_c (cacosh, 0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796242501204621739026081991856762292L),
2661     TEST_c_c (cacosh, -0x1p-23L, 0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, 1.570796411088588616723617301287646121905L),
2662     TEST_c_c (cacosh, -0x1p-23L, -0x1.000002p0L, 8.813736713132400470205730751186547909968e-1L, -1.570796411088588616723617301287646121905L),
2663     TEST_c_c (cacosh, 0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 2.222118384408546368406374049167636760903e-4L),
2664     TEST_c_c (cacosh, -0x1.000002p0L, 0x1p-23L, 5.364668491573609633134147164031476452679e-4L, 3.141370441751352383825802745874586120521L),
2665     TEST_c_c (cacosh, 0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -2.222118384408546368406374049167636760903e-4L),
2666     TEST_c_c (cacosh, -0x1.000002p0L, -0x1p-23L, 5.364668491573609633134147164031476452679e-4L, -3.141370441751352383825802745874586120521L),
2667     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442097L),
2668     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442097L),
2669     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442101L),
2670     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442101L),
2671     TEST_c_c (cacosh, 0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 5.830451806317544230969669308596361881467e-36L),
2672     TEST_c_c (cacosh, -0x1.000002p0L, 0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502878367L),
2673     TEST_c_c (cacosh, 0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -5.830451806317544230969669308596361881467e-36L),
2674     TEST_c_c (cacosh, -0x1.000002p0L, -0x1.fp-129L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502878367L),
2675     TEST_c_c (cacosh, 0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2676     TEST_c_c (cacosh, 0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2677     TEST_c_c (cacosh, -0.0L, 0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, 1.570796326794896619231321691639751442099L),
2678     TEST_c_c (cacosh, -0.0L, -0x1.000002p0L, 8.813736713132375348727889167749389235161e-1L, -1.570796326794896619231321691639751442099L),
2679     TEST_c_c (cacosh, 0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 0.0L),
2680     TEST_c_c (cacosh, -0x1.000002p0L, 0.0L, 4.882812451493617206486388134172712975070e-4L, 3.141592653589793238462643383279502884197L),
2681     TEST_c_c (cacosh, 0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -0.0L),
2682     TEST_c_c (cacosh, -0x1.000002p0L, -0.0L, 4.882812451493617206486388134172712975070e-4L, -3.141592653589793238462643383279502884197L),
2683 #ifndef TEST_FLOAT
2684     TEST_c_c (cacosh, 0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896462222075823262262934288L),
2685     TEST_c_c (cacosh, 0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896462222075823262262934288L),
2686     TEST_c_c (cacosh, -0x1p-52L, 0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, 1.570796326794896776240567560017239949909L),
2687     TEST_c_c (cacosh, -0x1p-52L, -0x1.0000000000001p0L, 8.813735870195431822418551933572982483664e-1L, -1.570796326794896776240567560017239949909L),
2688     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 9.590301705980041385828904092662391018164e-9L),
2689     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1p-52L, 2.315303644582684770975188768022139415020e-8L, 3.141592643999491532482601997450598791535L),
2690     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -9.590301705980041385828904092662391018164e-9L),
2691     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1p-52L, 2.315303644582684770975188768022139415020e-8L, -3.141592643999491532482601997450598791535L),
2692     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2693     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2694     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2695     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2696     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2697     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2698     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -2.557178503953494342609835913586108008322e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2699     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0x1.fp-1025L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2700     TEST_c_c (cacosh, 0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2701     TEST_c_c (cacosh, 0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2702     TEST_c_c (cacosh, -0.0L, 0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, 1.570796326794896619231321691639751442099L),
2703     TEST_c_c (cacosh, -0.0L, -0x1.0000000000001p0L, 8.813735870195431822418551933572895326024e-1L, -1.570796326794896619231321691639751442099L),
2704     TEST_c_c (cacosh, 0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 0.0L),
2705     TEST_c_c (cacosh, -0x1.0000000000001p0L, 0.0L, 2.107342425544701550354780375182800088393e-8L, 3.141592653589793238462643383279502884197L),
2706     TEST_c_c (cacosh, 0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -0.0L),
2707     TEST_c_c (cacosh, -0x1.0000000000001p0L, -0.0L, 2.107342425544701550354780375182800088393e-8L, -3.141592653589793238462643383279502884197L),
2708 #endif
2709 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2710     TEST_c_c (cacosh, 0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619154657020805582738031L),
2711     TEST_c_c (cacosh, 0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619154657020805582738031L),
2712     TEST_c_c (cacosh, -0x1p-63L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, 1.570796326794896619307986362473920146166L),
2713     TEST_c_c (cacosh, -0x1p-63L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610131001e-1L, -1.570796326794896619307986362473920146166L),
2714     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 2.119177303101063432592523199680782317447e-10L),
2715     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1p-63L, 5.116146586219826555037807251857670783420e-10L, 3.141592653377875508152537040020250564229L),
2716     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -2.119177303101063432592523199680782317447e-10L),
2717     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1p-63L, 5.116146586219826555037807251857670783420e-10L, -3.141592653377875508152537040020250564229L),
2718 # if LDBL_MIN_EXP <= -16381
2719     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2720     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2721     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2722     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2723     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 1.748608650034385653922359120438227480943e-4923L),
2724     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2725     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -1.748608650034385653922359120438227480943e-4923L),
2726     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0x1.fp-16385L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2727 # endif
2728     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2729     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2730     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, 1.570796326794896619231321691639751442099L),
2731     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000002p0L, 8.813735870195430253092739958139610130980e-1L, -1.570796326794896619231321691639751442099L),
2732     TEST_c_c (cacosh, 0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 0.0L),
2733     TEST_c_c (cacosh, -0x1.0000000000000002p0L, 0.0L, 4.656612873077392578082927418388212703712e-10L, 3.141592653589793238462643383279502884197L),
2734     TEST_c_c (cacosh, 0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -0.0L),
2735     TEST_c_c (cacosh, -0x1.0000000000000002p0L, -0.0L, 4.656612873077392578082927418388212703712e-10L, -3.141592653589793238462643383279502884197L),
2736 #endif
2737 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
2738     TEST_c_c (cacosh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639742726335L),
2739     TEST_c_c (cacosh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639742726335L),
2740     TEST_c_c (cacosh, -0x1p-106L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639760157863L),
2741     TEST_c_c (cacosh, -0x1p-106L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639760157863L),
2742     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 5.394221422390606848017034778914096659726e-17L),
2743     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1p-106L, 2.285028863093221674154232933662774454211e-16L, 3.141592653589793184520429159373434404027L),
2744     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -5.394221422390606848017034778914096659726e-17L),
2745     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1p-106L, 2.285028863093221674154232933662774454211e-16L, -3.141592653589793184520429159373434404027L),
2746     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2747     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2748     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2749     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2750     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2751     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2752     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -2.426922623448365473354662093431821897807e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2753     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2754     TEST_c_c (cacosh, 0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2755     TEST_c_c (cacosh, 0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2756     TEST_c_c (cacosh, -0.0L, 0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, 1.570796326794896619231321691639751442099L),
2757     TEST_c_c (cacosh, -0.0L, -0x1.000000000000000000000000008p0L, 8.813735870195430252326093249798097405561e-1L, -1.570796326794896619231321691639751442099L),
2758     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 0.0L),
2759     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, 0.0L, 2.220446049250313080847263336181636063482e-16L, 3.141592653589793238462643383279502884197L),
2760     TEST_c_c (cacosh, 0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -0.0L),
2761     TEST_c_c (cacosh, -0x1.000000000000000000000000008p0L, -0.0L, 2.220446049250313080847263336181636063482e-16L, -3.141592653589793238462643383279502884197L),
2762 #endif
2763 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
2764     TEST_c_c (cacosh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751374007L),
2765     TEST_c_c (cacosh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751374007L),
2766     TEST_c_c (cacosh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751510190L),
2767     TEST_c_c (cacosh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751510190L),
2768     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 4.767863183742677481693563511435642755521e-18L),
2769     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, 2.019699255375255198156433710951064632386e-17L, 3.141592653589793233694780199536825402504L),
2770     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -4.767863183742677481693563511435642755521e-18L),
2771     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, 2.019699255375255198156433710951064632386e-17L, -3.141592653589793233694780199536825402504L),
2772     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2773     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2774     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2775     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2776     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 4.148847925325683229178506116378864361396e-4916L),
2777     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2778     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -4.148847925325683229178506116378864361396e-4916L),
2779     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2780     TEST_c_c (cacosh, 0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2781     TEST_c_c (cacosh, 0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2782     TEST_c_c (cacosh, -0.0L, 0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, 1.570796326794896619231321691639751442099L),
2783     TEST_c_c (cacosh, -0.0L, -0x1.0000000000000000000000000001p0L, 8.813735870195430252326093249797924452120e-1L, -1.570796326794896619231321691639751442099L),
2784     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 0.0L),
2785     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, 0.0L, 1.962615573354718824241727964954454332780e-17L, 3.141592653589793238462643383279502884197L),
2786     TEST_c_c (cacosh, 0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -0.0L),
2787     TEST_c_c (cacosh, -0x1.0000000000000000000000000001p0L, -0.0L, 1.962615573354718824241727964954454332780e-17L, -3.141592653589793238462643383279502884197L),
2788 #endif
2789     TEST_c_c (cacosh, 0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796242501197085295336701632142060969L),
2790     TEST_c_c (cacosh, 0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796242501197085295336701632142060969L),
2791     TEST_c_c (cacosh, -0x1p-23L, 0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, 1.570796411088596153167306681647360823228L),
2792     TEST_c_c (cacosh, -0x1p-23L, -0x0.ffffffp0L, 8.813735448726963984495965873956465777250e-1L, -1.570796411088596153167306681647360823228L),
2793     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 4.391863861910487109445187743978204002614e-4L),
2794     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1p-23L, 2.714321200917194650737217746780928423385e-4L, 3.141153467203602189751698864505105063797L),
2795     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -4.391863861910487109445187743978204002614e-4L),
2796     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1p-23L, 2.714321200917194650737217746780928423385e-4L, -3.141153467203602189751698864505105063797L),
2797     TEST_c_c (cacosh, 0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442097L),
2798     TEST_c_c (cacosh, 0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442097L),
2799     TEST_c_c (cacosh, -0x1.fp-129L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442101L),
2800     TEST_c_c (cacosh, -0x1.fp-129L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442101L),
2801     TEST_c_c (cacosh, 0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.452669847162035876032494826387364972849e-4L),
2802     TEST_c_c (cacosh, -0x0.ffffffp0L, 0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, 3.141247386605077034875040133796864147700L),
2803     TEST_c_c (cacosh, 0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.452669847162035876032494826387364972849e-4L),
2804     TEST_c_c (cacosh, -0x0.ffffffp0L, -0x1.fp-129L, 8.245504387859737323891843603996428534945e-36L, -3.141247386605077034875040133796864147700L),
2805     TEST_c_c (cacosh, 0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2806     TEST_c_c (cacosh, 0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2807     TEST_c_c (cacosh, -0.0L, 0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, 1.570796326794896619231321691639751442099L),
2808     TEST_c_c (cacosh, -0.0L, -0x0.ffffffp0L, 8.813735448726938863015878255140556727969e-1L, -1.570796326794896619231321691639751442099L),
2809     TEST_c_c (cacosh, 0x0.ffffffp0L, 0.0L, 0.0L, 3.452669847162035876032494826387364972849e-4L),
2810     TEST_c_c (cacosh, -0x0.ffffffp0L, 0.0L, 0.0L, 3.141247386605077034875040133796864147700L),
2811     TEST_c_c (cacosh, 0x0.ffffffp0L, -0.0L, 0.0L, -3.452669847162035876032494826387364972849e-4L),
2812     TEST_c_c (cacosh, -0x0.ffffffp0L, -0.0L, 0.0L, -3.141247386605077034875040133796864147700L),
2813     TEST_c_c (cacosh, 0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796220170866625230343643673321150378L),
2814     TEST_c_c (cacosh, 0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796220170866625230343643673321150378L),
2815     TEST_c_c (cacosh, -0x1p-23L, 0.5L, 4.812118250596059896127318386463676808798e-1L, 1.570796433418926613232299739606181733819L),
2816     TEST_c_c (cacosh, -0x1p-23L, -0.5L, 4.812118250596059896127318386463676808798e-1L, -1.570796433418926613232299739606181733819L),
2817     TEST_c_c (cacosh, 0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 1.047197551196603215914744618665204532273L),
2818     TEST_c_c (cacosh, -0.5L, 0x1p-23L, 1.376510308240943236356088341381173571841e-7L, 2.094395102393190022547898764614298351924L),
2819     TEST_c_c (cacosh, 0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -1.047197551196603215914744618665204532273L),
2820     TEST_c_c (cacosh, -0.5L, -0x1p-23L, 1.376510308240943236356088341381173571841e-7L, -2.094395102393190022547898764614298351924L),
2821     TEST_c_c (cacosh, 0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442096L),
2822     TEST_c_c (cacosh, 0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442096L),
2823     TEST_c_c (cacosh, -0x1.fp-129L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442101L),
2824     TEST_c_c (cacosh, -0x1.fp-129L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442101L),
2825     TEST_c_c (cacosh, 0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2826     TEST_c_c (cacosh, -0.5L, 0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2827     TEST_c_c (cacosh, 0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_FLOAT),
2828     TEST_c_c (cacosh, -0.5L, -0x1.fp-129L, 3.287317402534702257036015056278368274737e-39L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_FLOAT),
2829     TEST_c_c (cacosh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796207585607068450636380271254316214L),
2830     TEST_c_c (cacosh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796207585607068450636380271254316214L),
2831     TEST_c_c (cacosh, -0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.570796446004186170012007003008248567984L),
2832     TEST_c_c (cacosh, -0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.570796446004186170012007003008248567984L),
2833     TEST_c_c (cacosh, 0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442096L),
2834     TEST_c_c (cacosh, 0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442096L),
2835     TEST_c_c (cacosh, -0x1.fp-129L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442101L),
2836     TEST_c_c (cacosh, -0x1.fp-129L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442101L),
2837     TEST_c_c (cacosh, 0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2838     TEST_c_c (cacosh, -0x1p-23L, 0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, 1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2839     TEST_c_c (cacosh, 0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796207585607068449789347324000006847L, UNDERFLOW_EXCEPTION_FLOAT),
2840     TEST_c_c (cacosh, -0x1p-23L, -0x1.fp-129L, 2.846900380897747786805634596726756660388e-39L, -1.570796446004186170012854035955502877351L, UNDERFLOW_EXCEPTION_FLOAT),
2841     TEST_c_c (cacosh, 0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2842     TEST_c_c (cacosh, 0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2843     TEST_c_c (cacosh, -0.0L, 0x1p-23L, 1.192092895507809676556842485683592032154e-7L, 1.570796326794896619231321691639751442099L),
2844     TEST_c_c (cacosh, -0.0L, -0x1p-23L, 1.192092895507809676556842485683592032154e-7L, -1.570796326794896619231321691639751442099L),
2845     TEST_c_c (cacosh, 0x1p-23L, 0.0L, 0.0L, 1.570796207585607068449789347324000006847L),
2846     TEST_c_c (cacosh, -0x1p-23L, 0.0L, 0.0L, 1.570796446004186170012854035955502877351L),
2847     TEST_c_c (cacosh, 0x1p-23L, -0.0L, 0.0L, -1.570796207585607068449789347324000006847L),
2848     TEST_c_c (cacosh, -0x1p-23L, -0.0L, 0.0L, -1.570796446004186170012854035955502877351L),
2849     TEST_c_c (cacosh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2850     TEST_c_c (cacosh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442096L, UNDERFLOW_EXCEPTION_FLOAT),
2851     TEST_c_c (cacosh, -0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2852     TEST_c_c (cacosh, -0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -1.570796326794896619231321691639751442101L, UNDERFLOW_EXCEPTION_FLOAT),
2853 #ifndef TEST_FLOAT
2854     TEST_c_c (cacosh, 0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896462222075823262236786996L),
2855     TEST_c_c (cacosh, 0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896462222075823262236786996L),
2856     TEST_c_c (cacosh, -0x1p-52L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, 1.570796326794896776240567560017266097201L),
2857     TEST_c_c (cacosh, -0x1p-52L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910458761820e-1L, -1.570796326794896776240567560017266097201L),
2858     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 1.895456983915074112227925127005564372844e-8L),
2859     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1p-52L, 1.171456840272878582596796205397918831268e-8L, 3.141592634635223399311902261000251614142L),
2860     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -1.895456983915074112227925127005564372844e-8L),
2861     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1p-52L, 1.171456840272878582596796205397918831268e-8L, -3.141592634635223399311902261000251614142L),
2862     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2863     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2864     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2865     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2866     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2867     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, 3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2868     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -1.490116119384765638786343542550461592240e-8L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2869     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, 3.616396521699973256461764099945789620604e-301L, -3.141592638688632044614986995416067458693L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
2870     TEST_c_c (cacosh, 0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2871     TEST_c_c (cacosh, 0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2872     TEST_c_c (cacosh, -0.0L, 0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, 1.570796326794896619231321691639751442099L),
2873     TEST_c_c (cacosh, -0.0L, -0x0.fffffffffffff8p0L, 8.813735870195429467279863907910371604180e-1L, -1.570796326794896619231321691639751442099L),
2874     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, 0.0L, 0.0L, 1.490116119384765638786343542550461592240e-8L),
2875     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, 0.0L, 0.0L, 3.141592638688632044614986995416067458693L),
2876     TEST_c_c (cacosh, 0x0.fffffffffffff8p0L, -0.0L, 0.0L, -1.490116119384765638786343542550461592240e-8L),
2877     TEST_c_c (cacosh, -0x0.fffffffffffff8p0L, -0.0L, 0.0L, -3.141592638688632044614986995416067458693L),
2878 #endif
2879     TEST_c_c (cacosh, 0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896420628589431857911675917L),
2880     TEST_c_c (cacosh, 0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896420628589431857911675917L),
2881     TEST_c_c (cacosh, -0x1p-52L, 0.5L, 4.812118250596034474977589134243772428682e-1L, 1.570796326794896817834053951421591208280L),
2882     TEST_c_c (cacosh, -0x1p-52L, -0.5L, 4.812118250596034474977589134243772428682e-1L, -1.570796326794896817834053951421591208280L),
2883     TEST_c_c (cacosh, 0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 1.047197551196597746154214461093186605110L),
2884     TEST_c_c (cacosh, -0.5L, 0x1p-52L, 2.563950248511418570403591756798643804971e-16L, 2.094395102393195492308428922186316279087L),
2885     TEST_c_c (cacosh, 0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -1.047197551196597746154214461093186605110L),
2886     TEST_c_c (cacosh, -0.5L, -0x1p-52L, 2.563950248511418570403591756798643804971e-16L, -2.094395102393195492308428922186316279087L),
2887 #ifndef TEST_FLOAT
2888     TEST_c_c (cacosh, 0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2889     TEST_c_c (cacosh, 0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2890     TEST_c_c (cacosh, -0x1.fp-1025L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2891     TEST_c_c (cacosh, -0x1.fp-1025L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2892     TEST_c_c (cacosh, 0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
2893     TEST_c_c (cacosh, -0.5L, 0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
2894     TEST_c_c (cacosh, 0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION_DOUBLE),
2895     TEST_c_c (cacosh, -0.5L, -0x1.fp-1025L, 6.222508863508420569166420770843207333493e-309L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION_DOUBLE),
2896 #endif
2897     TEST_c_c (cacosh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896397186716766608443357372L),
2898     TEST_c_c (cacosh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896397186716766608443357372L),
2899     TEST_c_c (cacosh, -0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 1.570796326794896841275926616671059526825L),
2900     TEST_c_c (cacosh, -0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -1.570796326794896841275926616671059526825L),
2901 #ifndef TEST_FLOAT
2902     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2903     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2904     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2905     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2906     TEST_c_c (cacosh, 0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
2907     TEST_c_c (cacosh, -0x1p-52L, 0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, 1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
2908     TEST_c_c (cacosh, 0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896397186716766608443357372L, UNDERFLOW_EXCEPTION_DOUBLE),
2909     TEST_c_c (cacosh, -0x1p-52L, -0x1.fp-1025L, 5.388850751072128349671657362289548938458e-309L, -1.570796326794896841275926616671059526825L, UNDERFLOW_EXCEPTION_DOUBLE),
2910 #endif
2911     TEST_c_c (cacosh, 0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2912     TEST_c_c (cacosh, 0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2913     TEST_c_c (cacosh, -0.0L, 0x1p-52L, 2.220446049250313080847263336181622378926e-16L, 1.570796326794896619231321691639751442099L),
2914     TEST_c_c (cacosh, -0.0L, -0x1p-52L, 2.220446049250313080847263336181622378926e-16L, -1.570796326794896619231321691639751442099L),
2915     TEST_c_c (cacosh, 0x1p-52L, 0.0L, 0.0L, 1.570796326794896397186716766608443357372L),
2916     TEST_c_c (cacosh, -0x1p-52L, 0.0L, 0.0L, 1.570796326794896841275926616671059526825L),
2917     TEST_c_c (cacosh, 0x1p-52L, -0.0L, 0.0L, -1.570796326794896397186716766608443357372L),
2918     TEST_c_c (cacosh, -0x1p-52L, -0.0L, 0.0L, -1.570796326794896841275926616671059526825L),
2919 #ifndef TEST_FLOAT
2920     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2921     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2922     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2923     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
2924 #endif
2925 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
2926     TEST_c_c (cacosh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619154657020805582738025L),
2927     TEST_c_c (cacosh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619154657020805582738025L),
2928     TEST_c_c (cacosh, -0x1p-63L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, 1.570796326794896619307986362473920146173L),
2929     TEST_c_c (cacosh, -0x1p-63L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569937e-1L, -1.570796326794896619307986362473920146173L),
2930     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 4.188407771167967636741951941902992986043e-10L),
2931     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1p-63L, 2.588578361325995866221775673638805081337e-10L, 3.141592653170952461345846619605307690007L),
2932     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -4.188407771167967636741951941902992986043e-10L),
2933     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1p-63L, 2.588578361325995866221775673638805081337e-10L, -3.141592653170952461345846619605307690007L),
2934 # if LDBL_MIN_EXP <= -16381
2935     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2936     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2937     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2938     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2939     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.292722539913596233371825532007990724506e-10L),
2940     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, 3.141592653260520984471283759942320330996L),
2941     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.292722539913596233371825532007990724506e-10L),
2942     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 2.472906068161537187835415298076415423459e-4923L, -3.141592653260520984471283759942320330996L),
2943 # endif
2944     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2945     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2946     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, 1.570796326794896619231321691639751442099L),
2947     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffp0L, 8.813735870195430251942769895627079569917e-1L, -1.570796326794896619231321691639751442099L),
2948     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.292722539913596233371825532007990724506e-10L),
2949     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, 0.0L, 0.0L, 3.141592653260520984471283759942320330996L),
2950     TEST_c_c (cacosh, 0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.292722539913596233371825532007990724506e-10L),
2951     TEST_c_c (cacosh, -0x0.ffffffffffffffffp0L, -0.0L, 0.0L, -3.141592653260520984471283759942320330996L),
2952 #endif
2953     TEST_c_c (cacosh, 0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619134347701278529840650L),
2954     TEST_c_c (cacosh, 0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619134347701278529840650L),
2955     TEST_c_c (cacosh, -0x1p-63L, 0.5L, 4.812118250596034474977589134243684231373e-1L, 1.570796326794896619328295682000973043547L),
2956     TEST_c_c (cacosh, -0x1p-63L, -0.5L, 4.812118250596034474977589134243684231373e-1L, -1.570796326794896619328295682000973043547L),
2957     TEST_c_c (cacosh, 0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 1.047197551196597746154214461093167628070L),
2958     TEST_c_c (cacosh, -0.5L, 0x1p-63L, 1.251928832280966098829878787499365228659e-19L, 2.094395102393195492308428922186335256127L),
2959     TEST_c_c (cacosh, 0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -1.047197551196597746154214461093167628070L),
2960     TEST_c_c (cacosh, -0.5L, -0x1p-63L, 1.251928832280966098829878787499365228659e-19L, -2.094395102393195492308428922186335256127L),
2961 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2962     TEST_c_c (cacosh, 0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2963     TEST_c_c (cacosh, 0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2964     TEST_c_c (cacosh, -0x1.fp-16385L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751442099L),
2965     TEST_c_c (cacosh, -0x1.fp-16385L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751442099L),
2966     TEST_c_c (cacosh, 0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
2967     TEST_c_c (cacosh, -0.5L, 0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, 2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
2968     TEST_c_c (cacosh, 0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -1.047197551196597746154214461093167628066L, UNDERFLOW_EXCEPTION),
2969     TEST_c_c (cacosh, -0.5L, -0x1.fp-16385L, 9.402257155670418112159334875199821342890e-4933L, -2.094395102393195492308428922186335256131L, UNDERFLOW_EXCEPTION),
2970 #endif
2971     TEST_c_c (cacosh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619122901474391200998698L),
2972     TEST_c_c (cacosh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619122901474391200998698L),
2973     TEST_c_c (cacosh, -0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.570796326794896619339741908888301885499L),
2974     TEST_c_c (cacosh, -0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.570796326794896619339741908888301885499L),
2975 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2976     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2977     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2978     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2979     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2980     TEST_c_c (cacosh, 0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
2981     TEST_c_c (cacosh, -0x1p-63L, 0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, 1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
2982     TEST_c_c (cacosh, 0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION),
2983     TEST_c_c (cacosh, -0x1p-63L, -0x1.fp-16385L, 8.142593549724601460479922838826119584465e-4933L, -1.570796326794896619339741908888301885499L, UNDERFLOW_EXCEPTION),
2984 #endif
2985     TEST_c_c (cacosh, 0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2986     TEST_c_c (cacosh, 0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2987     TEST_c_c (cacosh, -0.0L, 0x1p-63L, 1.084202172485504434007452800869941711424e-19L, 1.570796326794896619231321691639751442099L),
2988     TEST_c_c (cacosh, -0.0L, -0x1p-63L, 1.084202172485504434007452800869941711424e-19L, -1.570796326794896619231321691639751442099L),
2989     TEST_c_c (cacosh, 0x1p-63L, 0.0L, 0.0L, 1.570796326794896619122901474391200998698L),
2990     TEST_c_c (cacosh, -0x1p-63L, 0.0L, 0.0L, 1.570796326794896619339741908888301885499L),
2991     TEST_c_c (cacosh, 0x1p-63L, -0.0L, 0.0L, -1.570796326794896619122901474391200998698L),
2992     TEST_c_c (cacosh, -0x1p-63L, -0.0L, 0.0L, -1.570796326794896619339741908888301885499L),
2993 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
2994     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2995     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2996     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2997     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
2998 #endif
2999 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3000     TEST_c_c (cacosh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639734010571L),
3001     TEST_c_c (cacosh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639734010571L),
3002     TEST_c_c (cacosh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639768873627L),
3003     TEST_c_c (cacosh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639768873627L),
3004     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 1.997188458999618357060632049675702684031e-16L),
3005     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.234330349600789959989661887846005659983e-16L, 3.141592653589793038743797483317667178134L),
3006     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -1.997188458999618357060632049675702684031e-16L),
3007     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.234330349600789959989661887846005659983e-16L, -3.141592653589793038743797483317667178134L),
3008     TEST_c_c (cacosh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3009     TEST_c_c (cacosh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3010     TEST_c_c (cacosh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3011     TEST_c_c (cacosh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3012     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3013     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, 3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3014     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -1.570092458683775059393382371963565104164e-16L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3015     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 3.432186888910770473784103112009399360940e-293L, -3.141592653589793081453397514901996944859L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3016     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3017     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3018     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, 1.570796326794896619231321691639751442099L),
3019     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 8.813735870195430252326093249797835932642e-1L, -1.570796326794896619231321691639751442099L),
3020     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 1.570092458683775059393382371963565104164e-16L),
3021     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 0.0L, 3.141592653589793081453397514901996944859L),
3022     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -1.570092458683775059393382371963565104164e-16L),
3023     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 0.0L, -3.141592653589793081453397514901996944859L),
3024 #endif
3025     TEST_c_c (cacosh, 0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639729392766L),
3026     TEST_c_c (cacosh, 0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639729392766L),
3027     TEST_c_c (cacosh, -0x1p-105L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639773491431L),
3028     TEST_c_c (cacosh, -0x1p-105L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639773491431L),
3029     TEST_c_c (cacosh, 0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 1.047197551196597746154214461093167628066L),
3030     TEST_c_c (cacosh, -0.5L, 0x1p-105L, 2.846556599890768890940941645338546615370e-32L, 2.094395102393195492308428922186335256131L),
3031     TEST_c_c (cacosh, 0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -1.047197551196597746154214461093167628066L),
3032     TEST_c_c (cacosh, -0.5L, -0x1p-105L, 2.846556599890768890940941645338546615370e-32L, -2.094395102393195492308428922186335256131L),
3033     TEST_c_c (cacosh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639726790195L),
3034     TEST_c_c (cacosh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639726790195L),
3035     TEST_c_c (cacosh, -0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639776094002L),
3036     TEST_c_c (cacosh, -0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639776094002L),
3037 #ifndef TEST_FLOAT
3038     TEST_c_c (cacosh, 0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3039     TEST_c_c (cacosh, 0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3040     TEST_c_c (cacosh, -0x1.fp-1025L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3041     TEST_c_c (cacosh, -0x1.fp-1025L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3042     TEST_c_c (cacosh, 0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3043     TEST_c_c (cacosh, -0x1p-105L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3044     TEST_c_c (cacosh, 0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639726790195L, UNDERFLOW_EXCEPTION_DOUBLE),
3045     TEST_c_c (cacosh, -0x1p-105L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -1.570796326794896619231321691639776094002L, UNDERFLOW_EXCEPTION_DOUBLE),
3046 #endif
3047     TEST_c_c (cacosh, 0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3048     TEST_c_c (cacosh, 0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3049     TEST_c_c (cacosh, -0.0L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 1.570796326794896619231321691639751442099L),
3050     TEST_c_c (cacosh, -0.0L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -1.570796326794896619231321691639751442099L),
3051     TEST_c_c (cacosh, 0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639726790195L),
3052     TEST_c_c (cacosh, -0x1p-105L, 0.0L, 0.0L, 1.570796326794896619231321691639776094002L),
3053     TEST_c_c (cacosh, 0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639726790195L),
3054     TEST_c_c (cacosh, -0x1p-105L, -0.0L, 0.0L, -1.570796326794896619231321691639776094002L),
3055 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3056     TEST_c_c (cacosh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751305915L),
3057     TEST_c_c (cacosh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751305915L),
3058     TEST_c_c (cacosh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751578282L),
3059     TEST_c_c (cacosh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751578282L),
3060     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 1.765281878332676474347460257221369818872e-17L),
3061     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.091004200533850618345330909857103457781e-17L, 3.141592653589793220809824599952738140723L),
3062     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -1.765281878332676474347460257221369818872e-17L),
3063     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.091004200533850618345330909857103457781e-17L, -3.141592653589793220809824599952738140723L),
3064     TEST_c_c (cacosh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3065     TEST_c_c (cacosh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3066     TEST_c_c (cacosh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3067     TEST_c_c (cacosh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3068     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 1.387778780781445675529539585113525401762e-17L),
3069     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, 3.141592653589793224584855575465046128902L),
3070     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -1.387778780781445675529539585113525401762e-17L),
3071     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 5.867357004219059108790368268900490184505e-4916L, -3.141592653589793224584855575465046128902L),
3072     TEST_c_c (cacosh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3073     TEST_c_c (cacosh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3074     TEST_c_c (cacosh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, 1.570796326794896619231321691639751442099L),
3075     TEST_c_c (cacosh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 8.813735870195430252326093249797922409363e-1L, -1.570796326794896619231321691639751442099L),
3076     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 1.387778780781445675529539585113525401762e-17L),
3077     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 0.0L, 3.141592653589793224584855575465046128902L),
3078     TEST_c_c (cacosh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -1.387778780781445675529539585113525401762e-17L),
3079     TEST_c_c (cacosh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 0.0L, -3.141592653589793224584855575465046128902L),
3080 #endif
3081     TEST_c_c (cacosh, 0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751269838L),
3082     TEST_c_c (cacosh, 0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751269838L),
3083     TEST_c_c (cacosh, -0x1p-112L, 0.5L, 4.812118250596034474977589134243684231352e-1L, 1.570796326794896619231321691639751614359L),
3084     TEST_c_c (cacosh, -0x1p-112L, -0.5L, 4.812118250596034474977589134243684231352e-1L, -1.570796326794896619231321691639751614359L),
3085     TEST_c_c (cacosh, 0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 1.047197551196597746154214461093167628066L),
3086     TEST_c_c (cacosh, -0.5L, 0x1p-112L, 2.223872343664663196047610660420739543258e-34L, 2.094395102393195492308428922186335256131L),
3087     TEST_c_c (cacosh, 0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -1.047197551196597746154214461093167628066L),
3088     TEST_c_c (cacosh, -0.5L, -0x1p-112L, 2.223872343664663196047610660420739543258e-34L, -2.094395102393195492308428922186335256131L),
3089     TEST_c_c (cacosh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751249506L),
3090     TEST_c_c (cacosh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751249506L),
3091     TEST_c_c (cacosh, -0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751634692L),
3092     TEST_c_c (cacosh, -0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751634692L),
3093 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3094     TEST_c_c (cacosh, 0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3095     TEST_c_c (cacosh, 0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3096     TEST_c_c (cacosh, -0x1.fp-16385L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3097     TEST_c_c (cacosh, -0x1.fp-16385L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3098     TEST_c_c (cacosh, 0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3099     TEST_c_c (cacosh, -0x1p-112L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3100     TEST_c_c (cacosh, 0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751249506L, UNDERFLOW_EXCEPTION),
3101     TEST_c_c (cacosh, -0x1p-112L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -1.570796326794896619231321691639751634692L, UNDERFLOW_EXCEPTION),
3102 #endif
3103     TEST_c_c (cacosh, 0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3104     TEST_c_c (cacosh, 0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3105     TEST_c_c (cacosh, -0.0L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.570796326794896619231321691639751442099L),
3106     TEST_c_c (cacosh, -0.0L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.570796326794896619231321691639751442099L),
3107     TEST_c_c (cacosh, 0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751249506L),
3108     TEST_c_c (cacosh, -0x1p-112L, 0.0L, 0.0L, 1.570796326794896619231321691639751634692L),
3109     TEST_c_c (cacosh, 0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751249506L),
3110     TEST_c_c (cacosh, -0x1p-112L, -0.0L, 0.0L, -1.570796326794896619231321691639751634692L),
3111
3112     TEST_c_c (cacosh, 0.75L, 1.25L, 1.13239363160530819522266333696834467L, 1.11752014915610270578240049553777969L),
3113     TEST_c_c (cacosh, -2, -3, 1.9833870299165354323470769028940395L, -2.1414491111159960199416055713254211L),
3114     END_DATA (cacosh)
3115   };
3116
3117 static void
3118 cacosh_test (void)
3119 {
3120   errno = 0;
3121   FUNC(cacosh) (BUILD_COMPLEX (0.7L, 1.2L));
3122   if (errno == ENOSYS)
3123     /* Function not implemented.  */
3124     return;
3125
3126   START (cacosh);
3127   RUN_TEST_LOOP_c_c (cacosh, cacosh_test_data, );
3128   END (cacosh, complex);
3129 }
3130
3131
3132 static const struct test_c_f_data carg_test_data[] =
3133   {
3134     START_DATA (carg);
3135     /* carg (x + iy) is specified as atan2 (y, x) */
3136
3137     /* carg (x + i 0) == 0 for x > 0.  */
3138     TEST_c_f (carg, 2.0, 0, 0),
3139     /* carg (x - i 0) == -0 for x > 0.  */
3140     TEST_c_f (carg, 2.0, minus_zero, minus_zero),
3141
3142     TEST_c_f (carg, 0, 0, 0),
3143     TEST_c_f (carg, 0, minus_zero, minus_zero),
3144
3145     /* carg (x + i 0) == +pi for x < 0.  */
3146     TEST_c_f (carg, -2.0, 0, M_PIl),
3147
3148     /* carg (x - i 0) == -pi for x < 0.  */
3149     TEST_c_f (carg, -2.0, minus_zero, -M_PIl),
3150
3151     TEST_c_f (carg, minus_zero, 0, M_PIl),
3152     TEST_c_f (carg, minus_zero, minus_zero, -M_PIl),
3153
3154     /* carg (+0 + i y) == pi/2 for y > 0.  */
3155     TEST_c_f (carg, 0, 2.0, M_PI_2l),
3156
3157     /* carg (-0 + i y) == pi/2 for y > 0.  */
3158     TEST_c_f (carg, minus_zero, 2.0, M_PI_2l),
3159
3160     /* carg (+0 + i y) == -pi/2 for y < 0.  */
3161     TEST_c_f (carg, 0, -2.0, -M_PI_2l),
3162
3163     /* carg (-0 + i y) == -pi/2 for y < 0.  */
3164     TEST_c_f (carg, minus_zero, -2.0, -M_PI_2l),
3165
3166     /* carg (inf + i y) == +0 for finite y > 0.  */
3167     TEST_c_f (carg, plus_infty, 2.0, 0),
3168
3169     /* carg (inf + i y) == -0 for finite y < 0.  */
3170     TEST_c_f (carg, plus_infty, -2.0, minus_zero),
3171
3172     /* carg(x + i inf) == pi/2 for finite x.  */
3173     TEST_c_f (carg, 10.0, plus_infty, M_PI_2l),
3174
3175     /* carg(x - i inf) == -pi/2 for finite x.  */
3176     TEST_c_f (carg, 10.0, minus_infty, -M_PI_2l),
3177
3178     /* carg (-inf + i y) == +pi for finite y > 0.  */
3179     TEST_c_f (carg, minus_infty, 10.0, M_PIl),
3180
3181     /* carg (-inf + i y) == -pi for finite y < 0.  */
3182     TEST_c_f (carg, minus_infty, -10.0, -M_PIl),
3183
3184     TEST_c_f (carg, plus_infty, plus_infty, M_PI_4l),
3185
3186     TEST_c_f (carg, plus_infty, minus_infty, -M_PI_4l),
3187
3188     TEST_c_f (carg, minus_infty, plus_infty, M_PI_34l),
3189
3190     TEST_c_f (carg, minus_infty, minus_infty, -M_PI_34l),
3191
3192     TEST_c_f (carg, qnan_value, qnan_value, qnan_value),
3193     END_DATA (carg);
3194   };
3195
3196 static void
3197 carg_test (void)
3198 {
3199   START (carg);
3200   RUN_TEST_LOOP_c_f (carg, carg_test_data, );
3201   END (carg);
3202 }
3203
3204 static const struct test_c_c_data casin_test_data[] =
3205   {
3206     START_DATA (casin),
3207     TEST_c_c (casin, 0, 0, 0.0, 0.0),
3208     TEST_c_c (casin, minus_zero, 0, minus_zero, 0.0),
3209     TEST_c_c (casin, 0, minus_zero, 0.0, minus_zero),
3210     TEST_c_c (casin, minus_zero, minus_zero, minus_zero, minus_zero),
3211
3212     TEST_c_c (casin, plus_infty, plus_infty, M_PI_4l, plus_infty),
3213     TEST_c_c (casin, plus_infty, minus_infty, M_PI_4l, minus_infty),
3214     TEST_c_c (casin, minus_infty, plus_infty, -M_PI_4l, plus_infty),
3215     TEST_c_c (casin, minus_infty, minus_infty, -M_PI_4l, minus_infty),
3216
3217     TEST_c_c (casin, -10.0, plus_infty, minus_zero, plus_infty),
3218     TEST_c_c (casin, -10.0, minus_infty, minus_zero, minus_infty),
3219     TEST_c_c (casin, 0, plus_infty, 0.0, plus_infty),
3220     TEST_c_c (casin, 0, minus_infty, 0.0, minus_infty),
3221     TEST_c_c (casin, minus_zero, plus_infty, minus_zero, plus_infty),
3222     TEST_c_c (casin, minus_zero, minus_infty, minus_zero, minus_infty),
3223     TEST_c_c (casin, 0.1L, plus_infty, 0.0, plus_infty),
3224     TEST_c_c (casin, 0.1L, minus_infty, 0.0, minus_infty),
3225
3226     TEST_c_c (casin, minus_infty, 0, -M_PI_2l, plus_infty),
3227     TEST_c_c (casin, minus_infty, minus_zero, -M_PI_2l, minus_infty),
3228     TEST_c_c (casin, minus_infty, 100, -M_PI_2l, plus_infty),
3229     TEST_c_c (casin, minus_infty, -100, -M_PI_2l, minus_infty),
3230
3231     TEST_c_c (casin, plus_infty, 0, M_PI_2l, plus_infty),
3232     TEST_c_c (casin, plus_infty, minus_zero, M_PI_2l, minus_infty),
3233     TEST_c_c (casin, plus_infty, 0.5, M_PI_2l, plus_infty),
3234     TEST_c_c (casin, plus_infty, -0.5, M_PI_2l, minus_infty),
3235
3236     TEST_c_c (casin, qnan_value, plus_infty, qnan_value, plus_infty),
3237     TEST_c_c (casin, qnan_value, minus_infty, qnan_value, minus_infty),
3238
3239     TEST_c_c (casin, 0.0, qnan_value, 0.0, qnan_value),
3240     TEST_c_c (casin, minus_zero, qnan_value, minus_zero, qnan_value),
3241
3242     TEST_c_c (casin, plus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3243     TEST_c_c (casin, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
3244
3245     TEST_c_c (casin, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3246     TEST_c_c (casin, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3247
3248     TEST_c_c (casin, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3249     TEST_c_c (casin, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3250
3251     TEST_c_c (casin, qnan_value, qnan_value, qnan_value, qnan_value),
3252
3253     TEST_c_c (casin, plus_zero, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L),
3254     TEST_c_c (casin, minus_zero, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L),
3255     TEST_c_c (casin, plus_zero, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L),
3256     TEST_c_c (casin, minus_zero, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L),
3257     TEST_c_c (casin, plus_zero, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L),
3258     TEST_c_c (casin, minus_zero, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L),
3259     TEST_c_c (casin, plus_zero, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L),
3260     TEST_c_c (casin, minus_zero, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L),
3261     TEST_c_c (casin, plus_zero, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L),
3262     TEST_c_c (casin, minus_zero, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L),
3263     TEST_c_c (casin, plus_zero, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L),
3264     TEST_c_c (casin, minus_zero, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L),
3265
3266     TEST_c_c (casin, -1.5L, plus_zero, -M_PI_2l, 0.9624236501192068949955178268487368462704L),
3267     TEST_c_c (casin, -1.5L, minus_zero, -M_PI_2l, -0.9624236501192068949955178268487368462704L),
3268     TEST_c_c (casin, -1.0L, plus_zero, -M_PI_2l, plus_zero),
3269     TEST_c_c (casin, -1.0L, minus_zero, -M_PI_2l, minus_zero),
3270     TEST_c_c (casin, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L, plus_zero),
3271     TEST_c_c (casin, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L, minus_zero),
3272     TEST_c_c (casin, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L, plus_zero),
3273     TEST_c_c (casin, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L, minus_zero),
3274     TEST_c_c (casin, 1.0L, plus_zero, M_PI_2l, plus_zero),
3275     TEST_c_c (casin, 1.0L, minus_zero, M_PI_2l, minus_zero),
3276     TEST_c_c (casin, 1.5L, plus_zero, M_PI_2l, 0.9624236501192068949955178268487368462704L),
3277     TEST_c_c (casin, 1.5L, minus_zero, M_PI_2l, -0.9624236501192068949955178268487368462704L),
3278
3279     TEST_c_c (casin, 0x1p50L, 1.0L, 1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3280     TEST_c_c (casin, 0x1p50L, -1.0L, 1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3281     TEST_c_c (casin, -0x1p50L, 1.0L, -1.570796326794895731052901991514519103193L, 3.535050620855721078027883819436720218708e1L),
3282     TEST_c_c (casin, -0x1p50L, -1.0L, -1.570796326794895731052901991514519103193L, -3.535050620855721078027883819436720218708e1L),
3283     TEST_c_c (casin, 1.0L, 0x1p50L, 8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3284     TEST_c_c (casin, -1.0L, 0x1p50L, -8.881784197001252323389053344720723756399e-16L, 3.535050620855721078027883819436759661753e1L),
3285     TEST_c_c (casin, 1.0L, -0x1p50L, 8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3286     TEST_c_c (casin, -1.0L, -0x1p50L, -8.881784197001252323389053344720723756399e-16L, -3.535050620855721078027883819436759661753e1L),
3287 #ifndef TEST_FLOAT
3288     TEST_c_c (casin, 0x1p500L, 1.0L, 1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3289     TEST_c_c (casin, 0x1p500L, -1.0L, 1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3290     TEST_c_c (casin, -0x1p500L, 1.0L, -1.570796326794896619231321691639751442099L, 3.472667374605326000180332928505464606058e2L),
3291     TEST_c_c (casin, -0x1p500L, -1.0L, -1.570796326794896619231321691639751442099L, -3.472667374605326000180332928505464606058e2L),
3292     TEST_c_c (casin, 1.0L, 0x1p500L, 3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3293     TEST_c_c (casin, -1.0L, 0x1p500L, -3.054936363499604682051979393213617699789e-151L, 3.472667374605326000180332928505464606058e2L),
3294     TEST_c_c (casin, 1.0L, -0x1p500L, 3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3295     TEST_c_c (casin, -1.0L, -0x1p500L, -3.054936363499604682051979393213617699789e-151L, -3.472667374605326000180332928505464606058e2L),
3296 #endif
3297 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3298     TEST_c_c (casin, 0x1p5000L, 1.0L, 1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3299     TEST_c_c (casin, 0x1p5000L, -1.0L, 1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3300     TEST_c_c (casin, -0x1p5000L, 1.0L, -1.570796326794896619231321691639751442099L, 3.466429049980286492395577839412341016946e3L),
3301     TEST_c_c (casin, -0x1p5000L, -1.0L, -1.570796326794896619231321691639751442099L, -3.466429049980286492395577839412341016946e3L),
3302     TEST_c_c (casin, 1.0L, 0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3303     TEST_c_c (casin, -1.0L, 0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, 3.466429049980286492395577839412341016946e3L),
3304     TEST_c_c (casin, 1.0L, -0x1p5000L, 7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3305     TEST_c_c (casin, -1.0L, -0x1p5000L, -7.079811261048172892385615158694057552948e-1506L, -3.466429049980286492395577839412341016946e3L),
3306 #endif
3307
3308     TEST_c_c (casin, 0x1.fp127L, 0x1.fp127L, 7.853981633974483096156608458198757210493e-1L, 8.973081118419833726837456344608533993585e1L),
3309 #ifndef TEST_FLOAT
3310     TEST_c_c (casin, 0x1.fp1023L, 0x1.fp1023L, 7.853981633974483096156608458198757210493e-1L, 7.107906849659093345062145442726115449315e2L),
3311 #endif
3312 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
3313     TEST_c_c (casin, 0x1.fp16383L, 0x1.fp16383L, 7.853981633974483096156608458198757210493e-1L, 1.135753137836666928715489992987020363057e4L),
3314 #endif
3315
3316     TEST_c_c (casin, 0x1.fp-129L, 1.5L, 1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3317     TEST_c_c (casin, 0x1.fp-129L, -1.5L, 1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3318     TEST_c_c (casin, -0x1.fp-129L, 1.5L, -1.579176199917649005841160751101628985741e-39L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3319     TEST_c_c (casin, -0x1.fp-129L, -1.5L, -1.579176199917649005841160751101628985741e-39L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_FLOAT),
3320     TEST_c_c (casin, 1.5L, 0x1.fp-129L, 1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3321     TEST_c_c (casin, -1.5L, 0x1.fp-129L, -1.570796326794896619231321691639751442096L, 9.624236501192068949955178268487368462704e-1L),
3322     TEST_c_c (casin, 1.5L, -0x1.fp-129L, 1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3323     TEST_c_c (casin, -1.5L, -0x1.fp-129L, -1.570796326794896619231321691639751442096L, -9.624236501192068949955178268487368462704e-1L),
3324 #ifndef TEST_FLOAT
3325     TEST_c_c (casin, 0x1.fp-1025L, 1.5L, 2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3326     TEST_c_c (casin, 0x1.fp-1025L, -1.5L, 2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3327     TEST_c_c (casin, -0x1.fp-1025L, 1.5L, -2.989196569048182929051881765490354365918e-309L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3328     TEST_c_c (casin, -0x1.fp-1025L, -1.5L, -2.989196569048182929051881765490354365918e-309L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION_DOUBLE),
3329     TEST_c_c (casin, 1.5L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3330     TEST_c_c (casin, -1.5L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3331     TEST_c_c (casin, 1.5L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3332     TEST_c_c (casin, -1.5L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3333 #endif
3334 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3335     TEST_c_c (casin, 0x1.fp-16385L, 1.5L, 4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3336     TEST_c_c (casin, 0x1.fp-16385L, -1.5L, 4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3337     TEST_c_c (casin, -0x1.fp-16385L, 1.5L, -4.516698239814521372306784062043266700598e-4933L, 1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3338     TEST_c_c (casin, -0x1.fp-16385L, -1.5L, -4.516698239814521372306784062043266700598e-4933L, -1.194763217287109304111930828519090523536L, UNDERFLOW_EXCEPTION),
3339     TEST_c_c (casin, 1.5L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3340     TEST_c_c (casin, -1.5L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.624236501192068949955178268487368462704e-1L),
3341     TEST_c_c (casin, 1.5L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3342     TEST_c_c (casin, -1.5L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.624236501192068949955178268487368462704e-1L),
3343 #endif
3344
3345     TEST_c_c (casin, 0.5L, 1.0L, 3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3346     TEST_c_c (casin, 0.5L, -1.0L, 3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3347     TEST_c_c (casin, -0.5L, 1.0L, -3.494390628572132936274118260753699527325e-1L, 9.261330313501824245501244453057873152694e-1L),
3348     TEST_c_c (casin, -0.5L, -1.0L, -3.494390628572132936274118260753699527325e-1L, -9.261330313501824245501244453057873152694e-1L),
3349     TEST_c_c (casin, 1.0L, 0.5L, 8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3350     TEST_c_c (casin, -1.0L, 0.5L, -8.959074812088902390666567243275770102229e-1L, 7.328576759736452608886724437653071523305e-1L),
3351     TEST_c_c (casin, 1.0L, -0.5L, 8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3352     TEST_c_c (casin, -1.0L, -0.5L, -8.959074812088902390666567243275770102229e-1L, -7.328576759736452608886724437653071523305e-1L),
3353     TEST_c_c (casin, 0.25L, 1.0L, 1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3354     TEST_c_c (casin, 0.25L, -1.0L, 1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3355     TEST_c_c (casin, -0.25L, 1.0L, -1.763024327769669304186785666360901026468e-1L, 8.924633639033482359562124741744951972772e-1L),
3356     TEST_c_c (casin, -0.25L, -1.0L, -1.763024327769669304186785666360901026468e-1L, -8.924633639033482359562124741744951972772e-1L),
3357     TEST_c_c (casin, 1.0L, 0.25L, 1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3358     TEST_c_c (casin, -1.0L, 0.25L, -1.081751996523816326311037318425097434186L, 5.097911466811016354623559941115413499164e-1L),
3359     TEST_c_c (casin, 1.0L, -0.25L, 1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3360     TEST_c_c (casin, -1.0L, -0.25L, -1.081751996523816326311037318425097434186L, -5.097911466811016354623559941115413499164e-1L),
3361     TEST_c_c (casin, 0x1.fp-10L, 1.0L, 1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3362     TEST_c_c (casin, 0x1.fp-10L, -1.0L, 1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3363     TEST_c_c (casin, -0x1.fp-10L, 1.0L, -1.337909359557740912558349531052239112857e-3L, 8.813742198809567991336704287826445879025e-1L),
3364     TEST_c_c (casin, -0x1.fp-10L, -1.0L, -1.337909359557740912558349531052239112857e-3L, -8.813742198809567991336704287826445879025e-1L),
3365     TEST_c_c (casin, 1.0L, 0x1.fp-10L, 1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3366     TEST_c_c (casin, -1.0L, 0x1.fp-10L, -1.527305029163877791518741192097931722508L, 4.350501469856803800217957402220976497152e-2L),
3367     TEST_c_c (casin, 1.0L, -0x1.fp-10L, 1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3368     TEST_c_c (casin, -1.0L, -0x1.fp-10L, -1.527305029163877791518741192097931722508L, -4.350501469856803800217957402220976497152e-2L),
3369     TEST_c_c (casin, 0x1.fp-30L, 1.0L, 1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3370     TEST_c_c (casin, 0x1.fp-30L, -1.0L, 1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3371     TEST_c_c (casin, -0x1.fp-30L, 1.0L, -1.275929984216518540252717485007112529021e-9L, 8.813735870195430258081932989769495326854e-1L),
3372     TEST_c_c (casin, -0x1.fp-30L, -1.0L, -1.275929984216518540252717485007112529021e-9L, -8.813735870195430258081932989769495326854e-1L),
3373     TEST_c_c (casin, 1.0L, 0x1.fp-30L, 1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3374     TEST_c_c (casin, -1.0L, 0x1.fp-30L, -1.570753848123921942730162693731872690232L, 4.247867098745151888768727039216644758847e-5L),
3375     TEST_c_c (casin, 1.0L, -0x1.fp-30L, 1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3376     TEST_c_c (casin, -1.0L, -0x1.fp-30L, -1.570753848123921942730162693731872690232L, -4.247867098745151888768727039216644758847e-5L),
3377     TEST_c_c (casin, 0x1.fp-100L, 1.0L, 1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3378     TEST_c_c (casin, 0x1.fp-100L, -1.0L, 1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3379     TEST_c_c (casin, -0x1.fp-100L, 1.0L, -1.080754735021050612990719608916167354321e-30L, 8.813735870195430252326093249797923090282e-1L),
3380     TEST_c_c (casin, -0x1.fp-100L, -1.0L, -1.080754735021050612990719608916167354321e-30L, -8.813735870195430252326093249797923090282e-1L),
3381     TEST_c_c (casin, 1.0L, 0x1.fp-100L, 1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3382     TEST_c_c (casin, -1.0L, 0x1.fp-100L, -1.570796326794895382939283431378862777584L, 1.236292038260260888664514866457202186027e-15L),
3383     TEST_c_c (casin, 1.0L, -0x1.fp-100L, 1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3384     TEST_c_c (casin, -1.0L, -0x1.fp-100L, -1.570796326794895382939283431378862777584L, -1.236292038260260888664514866457202186027e-15L),
3385     TEST_c_c (casin, 0x1.fp-129L, 1.0L, 2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3386     TEST_c_c (casin, 0x1.fp-129L, -1.0L, 2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3387     TEST_c_c (casin, -0x1.fp-129L, 1.0L, -2.013062564695348242280482517399205554874e-39L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3388     TEST_c_c (casin, -0x1.fp-129L, -1.0L, -2.013062564695348242280482517399205554874e-39L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3389     TEST_c_c (casin, 1.0L, 0x1.fp-129L, 1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3390     TEST_c_c (casin, -1.0L, 0x1.fp-129L, -1.570796326794896619177965338869929107115L, 5.335635276982233498398987585285818977933e-20L),
3391     TEST_c_c (casin, 1.0L, -0x1.fp-129L, 1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3392     TEST_c_c (casin, -1.0L, -0x1.fp-129L, -1.570796326794896619177965338869929107115L, -5.335635276982233498398987585285818977933e-20L),
3393 #ifndef TEST_FLOAT
3394     TEST_c_c (casin, 0x1.fp-1000L, 1.0L, 1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3395     TEST_c_c (casin, 0x1.fp-1000L, -1.0L, 1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3396     TEST_c_c (casin, -0x1.fp-1000L, 1.0L, -1.278589251976747242280879285935084814093e-301L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3397     TEST_c_c (casin, -0x1.fp-1000L, -1.0L, -1.278589251976747242280879285935084814093e-301L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3398     TEST_c_c (casin, 1.0L, 0x1.fp-1000L, 1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3399     TEST_c_c (casin, -1.0L, 0x1.fp-1000L, -1.570796326794896619231321691639751442099L, 4.252291453851660175550490409247739011867e-151L),
3400     TEST_c_c (casin, 1.0L, -0x1.fp-1000L, 1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3401     TEST_c_c (casin, -1.0L, -0x1.fp-1000L, -1.570796326794896619231321691639751442099L, -4.252291453851660175550490409247739011867e-151L),
3402     TEST_c_c (casin, 0x1.fp-1025L, 1.0L, 3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3403     TEST_c_c (casin, 0x1.fp-1025L, -1.0L, 3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3404     TEST_c_c (casin, -0x1.fp-1025L, 1.0L, -3.810492908885321743133304375216617626230e-309L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3405     TEST_c_c (casin, -0x1.fp-1025L, -1.0L, -3.810492908885321743133304375216617626230e-309L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3406     TEST_c_c (casin, 1.0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3407     TEST_c_c (casin, -1.0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 7.340879205566679497036857179189356754017e-155L),
3408     TEST_c_c (casin, 1.0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3409     TEST_c_c (casin, -1.0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -7.340879205566679497036857179189356754017e-155L),
3410 #endif
3411 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3412     TEST_c_c (casin, 0x1.fp-10000L, 1.0L, 6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3413     TEST_c_c (casin, 0x1.fp-10000L, -1.0L, 6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3414     TEST_c_c (casin, -0x1.fp-10000L, 1.0L, -6.867047849047171855399183659351043150871e-3011L, 8.813735870195430252326093249797923090282e-1L),
3415     TEST_c_c (casin, -0x1.fp-10000L, -1.0L, -6.867047849047171855399183659351043150871e-3011L, -8.813735870195430252326093249797923090282e-1L),
3416     TEST_c_c (casin, 1.0L, 0x1.fp-10000L, 1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3417     TEST_c_c (casin, -1.0L, 0x1.fp-10000L, -1.570796326794896619231321691639751442099L, 9.854680208706673586644342922051388714633e-1506L),
3418     TEST_c_c (casin, 1.0L, -0x1.fp-10000L, 1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3419     TEST_c_c (casin, -1.0L, -0x1.fp-10000L, -1.570796326794896619231321691639751442099L, -9.854680208706673586644342922051388714633e-1506L),
3420     TEST_c_c (casin, 0x1.fp-16385L, 1.0L, 5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3421     TEST_c_c (casin, 0x1.fp-16385L, -1.0L, 5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3422     TEST_c_c (casin, -0x1.fp-16385L, 1.0L, -5.757683115456107044131264955348448954458e-4933L, 8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3423     TEST_c_c (casin, -0x1.fp-16385L, -1.0L, -5.757683115456107044131264955348448954458e-4933L, -8.813735870195430252326093249797923090282e-1L, UNDERFLOW_EXCEPTION),
3424     TEST_c_c (casin, 1.0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3425     TEST_c_c (casin, -1.0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 9.023632056840860275214893047597614177639e-2467L),
3426     TEST_c_c (casin, 1.0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3427     TEST_c_c (casin, -1.0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -9.023632056840860275214893047597614177639e-2467L),
3428 #endif
3429
3430     TEST_c_c (casin, 0x1p-23L, 0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3431     TEST_c_c (casin, 0x1p-23L, -0x1.000002p0L, 8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3432     TEST_c_c (casin, -0x1p-23L, 0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, 8.813736713132400470205730751186547909968e-1L),
3433     TEST_c_c (casin, -0x1p-23L, -0x1.000002p0L, -8.429369199749229560964789467980644296420e-8L, -8.813736713132400470205730751186547909968e-1L),
3434     TEST_c_c (casin, 0x1.000002p0L, 0x1p-23L, 1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3435     TEST_c_c (casin, -0x1.000002p0L, 0x1p-23L, -1.570574114956455764594481054234834678422L, 5.364668491573609633134147164031476452679e-4L),
3436     TEST_c_c (casin, 0x1.000002p0L, -0x1p-23L, 1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3437     TEST_c_c (casin, -0x1.000002p0L, -0x1p-23L, -1.570574114956455764594481054234834678422L, -5.364668491573609633134147164031476452679e-4L),
3438     TEST_c_c (casin, 0x1.fp-129L, 0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3439     TEST_c_c (casin, 0x1.fp-129L, -0x1.000002p0L, 2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3440     TEST_c_c (casin, -0x1.fp-129L, 0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, 8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3441     TEST_c_c (casin, -0x1.fp-129L, -0x1.000002p0L, -2.013062444707472738895109955455676357057e-39L, -8.813736713132375348727889167749389235161e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3442     TEST_c_c (casin, 0x1.000002p0L, 0x1.fp-129L, 1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3443     TEST_c_c (casin, -0x1.000002p0L, 0x1.fp-129L, -1.570796326794896619231321691639751436268L, 4.882812451493617206486388134172712975070e-4L),
3444     TEST_c_c (casin, 0x1.000002p0L, -0x1.fp-129L, 1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3445     TEST_c_c (casin, -0x1.000002p0L, -0x1.fp-129L, -1.570796326794896619231321691639751436268L, -4.882812451493617206486388134172712975070e-4L),
3446     TEST_c_c (casin, 0.0L, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L),
3447     TEST_c_c (casin, 0.0L, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L),
3448     TEST_c_c (casin, -0.0L, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L),
3449     TEST_c_c (casin, -0.0L, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L),
3450     TEST_c_c (casin, 0x1.000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3451     TEST_c_c (casin, -0x1.000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.882812451493617206486388134172712975070e-4L),
3452     TEST_c_c (casin, 0x1.000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3453     TEST_c_c (casin, -0x1.000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.882812451493617206486388134172712975070e-4L),
3454 #ifndef TEST_FLOAT
3455     TEST_c_c (casin, 0x1p-52L, 0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3456     TEST_c_c (casin, 0x1p-52L, -0x1.0000000000001p0L, 1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3457     TEST_c_c (casin, -0x1p-52L, 0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, 8.813735870195431822418551933572982483664e-1L),
3458     TEST_c_c (casin, -0x1p-52L, -0x1.0000000000001p0L, -1.570092458683774885078102529858632363236e-16L, -8.813735870195431822418551933572982483664e-1L),
3459     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1p-52L, 1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3460     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1p-52L, -1.570796317204594913251280305810847349436L, 2.315303644582684770975188768022139415020e-8L),
3461     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1p-52L, 1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3462     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1p-52L, -1.570796317204594913251280305810847349436L, -2.315303644582684770975188768022139415020e-8L),
3463     TEST_c_c (casin, 0x1.fp-1025L, 0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3464     TEST_c_c (casin, 0x1.fp-1025L, -0x1.0000000000001p0L, 3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3465     TEST_c_c (casin, -0x1.fp-1025L, 0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, 8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3466     TEST_c_c (casin, -0x1.fp-1025L, -0x1.0000000000001p0L, -3.810492908885321320083608113679347200012e-309L, -8.813735870195431822418551933572895326024e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3467     TEST_c_c (casin, 0x1.0000000000001p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3468     TEST_c_c (casin, -0x1.0000000000001p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3469     TEST_c_c (casin, 0x1.0000000000001p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3470     TEST_c_c (casin, -0x1.0000000000001p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3471     TEST_c_c (casin, 0.0L, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L),
3472     TEST_c_c (casin, 0.0L, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L),
3473     TEST_c_c (casin, -0.0L, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L),
3474     TEST_c_c (casin, -0.0L, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L),
3475     TEST_c_c (casin, 0x1.0000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3476     TEST_c_c (casin, -0x1.0000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.107342425544701550354780375182800088393e-8L),
3477     TEST_c_c (casin, 0x1.0000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3478     TEST_c_c (casin, -0x1.0000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.107342425544701550354780375182800088393e-8L),
3479 #endif
3480 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3481     TEST_c_c (casin, 0x1p-63L, 0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3482     TEST_c_c (casin, 0x1p-63L, -0x1.0000000000000002p0L, 7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3483     TEST_c_c (casin, -0x1p-63L, 0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, 8.813735870195430253092739958139610131001e-1L),
3484     TEST_c_c (casin, -0x1p-63L, -0x1.0000000000000002p0L, -7.666467083416870406778649849746878368519e-20L, -8.813735870195430253092739958139610131001e-1L),
3485     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1p-63L, 1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3486     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1p-63L, -1.570796326582978888921215348380499122131L, 5.116146586219826555037807251857670783420e-10L),
3487     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1p-63L, 1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3488     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1p-63L, -1.570796326582978888921215348380499122131L, -5.116146586219826555037807251857670783420e-10L),
3489 # if LDBL_MIN_EXP <= -16381
3490     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3491     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000002p0L, 5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3492     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, 8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3493     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000002p0L, -5.757683115456107043819140328235418018963e-4933L, -8.813735870195430253092739958139610130980e-1L, UNDERFLOW_EXCEPTION),
3494     TEST_c_c (casin, 0x1.0000000000000002p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3495     TEST_c_c (casin, -0x1.0000000000000002p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3496     TEST_c_c (casin, 0x1.0000000000000002p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3497     TEST_c_c (casin, -0x1.0000000000000002p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3498 # endif
3499     TEST_c_c (casin, 0.0L, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L),
3500     TEST_c_c (casin, 0.0L, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L),
3501     TEST_c_c (casin, -0.0L, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L),
3502     TEST_c_c (casin, -0.0L, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L),
3503     TEST_c_c (casin, 0x1.0000000000000002p0L, 0.0L, 1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3504     TEST_c_c (casin, -0x1.0000000000000002p0L, 0.0L, -1.570796326794896619231321691639751442099L, 4.656612873077392578082927418388212703712e-10L),
3505     TEST_c_c (casin, 0x1.0000000000000002p0L, -0.0L, 1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3506     TEST_c_c (casin, -0x1.0000000000000002p0L, -0.0L, -1.570796326794896619231321691639751442099L, -4.656612873077392578082927418388212703712e-10L),
3507 #endif
3508 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3509     TEST_c_c (casin, 0x1p-106L, 0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3510     TEST_c_c (casin, 0x1p-106L, -0x1.000000000000000000000000008p0L, 8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3511     TEST_c_c (casin, -0x1p-106L, 0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, 8.813735870195430252326093249798097405561e-1L),
3512     TEST_c_c (casin, -0x1p-106L, -0x1.000000000000000000000000008p0L, -8.715763992105246878957416200936726072500e-33L, -8.813735870195430252326093249798097405561e-1L),
3513     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1p-106L, 1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3514     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1p-106L, -1.570796326794896565289107467733682961928L, 2.285028863093221674154232933662774454211e-16L),
3515     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1p-106L, 1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3516     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1p-106L, -1.570796326794896565289107467733682961928L, -2.285028863093221674154232933662774454211e-16L),
3517     TEST_c_c (casin, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3518     TEST_c_c (casin, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3519     TEST_c_c (casin, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, 8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3520     TEST_c_c (casin, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -3.810492908885321743133304375216570658278e-309L, -8.813735870195430252326093249798097405561e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3521     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3522     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3523     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3524     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3525     TEST_c_c (casin, 0.0L, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L),
3526     TEST_c_c (casin, 0.0L, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L),
3527     TEST_c_c (casin, -0.0L, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L),
3528     TEST_c_c (casin, -0.0L, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L),
3529     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, 0.0L, 1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3530     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, 0.0L, -1.570796326794896619231321691639751442099L, 2.220446049250313080847263336181636063482e-16L),
3531     TEST_c_c (casin, 0x1.000000000000000000000000008p0L, -0.0L, 1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3532     TEST_c_c (casin, -0x1.000000000000000000000000008p0L, -0.0L, -1.570796326794896619231321691639751442099L, -2.220446049250313080847263336181636063482e-16L),
3533 #endif
3534 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3535     TEST_c_c (casin, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3536     TEST_c_c (casin, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3537     TEST_c_c (casin, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, 8.813735870195430252326093249797924452120e-1L),
3538     TEST_c_c (casin, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -6.809190618832224124185481406981900518193e-35L, -8.813735870195430252326093249797924452120e-1L),
3539     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3540     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -1.570796326794896614463458507897073960405L, 2.019699255375255198156433710951064632386e-17L),
3541     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3542     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -1.570796326794896614463458507897073960405L, -2.019699255375255198156433710951064632386e-17L),
3543     TEST_c_c (casin, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3544     TEST_c_c (casin, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3545     TEST_c_c (casin, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, 8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3546     TEST_c_c (casin, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -5.757683115456107044131264955348448400014e-4933L, -8.813735870195430252326093249797924452120e-1L, UNDERFLOW_EXCEPTION),
3547     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3548     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3549     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3550     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3551     TEST_c_c (casin, 0.0L, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L),
3552     TEST_c_c (casin, 0.0L, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L),
3553     TEST_c_c (casin, -0.0L, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L),
3554     TEST_c_c (casin, -0.0L, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L),
3555     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, 0.0L, 1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3556     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, 0.0L, -1.570796326794896619231321691639751442099L, 1.962615573354718824241727964954454332780e-17L),
3557     TEST_c_c (casin, 0x1.0000000000000000000000000001p0L, -0.0L, 1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3558     TEST_c_c (casin, -0x1.0000000000000000000000000001p0L, -0.0L, -1.570796326794896619231321691639751442099L, -1.962615573354718824241727964954454332780e-17L),
3559 #endif
3560
3561     TEST_c_c (casin, 0x1p-23L, 0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3562     TEST_c_c (casin, 0x1p-23L, -0x0.ffffffp0L, 8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3563     TEST_c_c (casin, -0x1p-23L, 0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, 8.813735448726963984495965873956465777250e-1L),
3564     TEST_c_c (casin, -0x1p-23L, -0x0.ffffffp0L, -8.429369953393598499000760938112968755257e-8L, -8.813735448726963984495965873956465777250e-1L),
3565     TEST_c_c (casin, 0x0.ffffffp0L, 0x1p-23L, 1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3566     TEST_c_c (casin, -0x0.ffffffp0L, 0x1p-23L, -1.570357140408705570520377172865353621698L, 2.714321200917194650737217746780928423385e-4L),
3567     TEST_c_c (casin, 0x0.ffffffp0L, -0x1p-23L, 1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3568     TEST_c_c (casin, -0x0.ffffffp0L, -0x1p-23L, -1.570357140408705570520377172865353621698L, -2.714321200917194650737217746780928423385e-4L),
3569     TEST_c_c (casin, 0x1.fp-129L, 0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3570     TEST_c_c (casin, 0x1.fp-129L, -0x0.ffffffp0L, 2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3571     TEST_c_c (casin, -0x1.fp-129L, 0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, 8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3572     TEST_c_c (casin, -0x1.fp-129L, -0x0.ffffffp0L, -2.013062624689288675911339929224634593425e-39L, -8.813735448726938863015878255140556727969e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3573     TEST_c_c (casin, 0x0.ffffffp0L, 0x1.fp-129L, 1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3574     TEST_c_c (casin, -0x0.ffffffp0L, 0x1.fp-129L, -1.570451059810180415643718442157112705601L, 8.245504387859737323891843603996428534945e-36L),
3575     TEST_c_c (casin, 0x0.ffffffp0L, -0x1.fp-129L, 1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3576     TEST_c_c (casin, -0x0.ffffffp0L, -0x1.fp-129L, -1.570451059810180415643718442157112705601L, -8.245504387859737323891843603996428534945e-36L),
3577     TEST_c_c (casin, 0.0L, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L),
3578     TEST_c_c (casin, 0.0L, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L),
3579     TEST_c_c (casin, -0.0L, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L),
3580     TEST_c_c (casin, -0.0L, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L),
3581     TEST_c_c (casin, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L, 0.0L),
3582     TEST_c_c (casin, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L, 0.0L),
3583     TEST_c_c (casin, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L, -0.0L),
3584     TEST_c_c (casin, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L, -0.0L),
3585     TEST_c_c (casin, 0x1p-23L, 0.5L, 1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3586     TEST_c_c (casin, 0x1p-23L, -0.5L, 1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3587     TEST_c_c (casin, -0x1p-23L, 0.5L, -1.066240299940009780479664302917201696886e-7L, 4.812118250596059896127318386463676808798e-1L),
3588     TEST_c_c (casin, -0x1p-23L, -0.5L, -1.066240299940009780479664302917201696886e-7L, -4.812118250596059896127318386463676808798e-1L),
3589     TEST_c_c (casin, 0.5L, 0x1p-23L, 5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3590     TEST_c_c (casin, -0.5L, 0x1p-23L, -5.235987755982934033165770729745469098254e-1L, 1.376510308240943236356088341381173571841e-7L),
3591     TEST_c_c (casin, 0.5L, -0x1p-23L, 5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3592     TEST_c_c (casin, -0.5L, -0x1p-23L, -5.235987755982934033165770729745469098254e-1L, -1.376510308240943236356088341381173571841e-7L),
3593     TEST_c_c (casin, 0x1.fp-129L, 0.5L, 2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3594     TEST_c_c (casin, 0x1.fp-129L, -0.5L, 2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3595     TEST_c_c (casin, -0x1.fp-129L, 0.5L, -2.546345110742945032959687790021055102355e-39L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3596     TEST_c_c (casin, -0x1.fp-129L, -0.5L, -2.546345110742945032959687790021055102355e-39L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_FLOAT),
3597     TEST_c_c (casin, 0.5L, 0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3598     TEST_c_c (casin, -0.5L, 0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, 3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3599     TEST_c_c (casin, 0.5L, -0x1.fp-129L, 5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3600     TEST_c_c (casin, -0.5L, -0x1.fp-129L, -5.235987755982988730771072305465838140329e-1L, -3.287317402534702257036015056278368274737e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3601     TEST_c_c (casin, 0x1p-23L, 0x1p-23L, 1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3602     TEST_c_c (casin, 0x1p-23L, -0x1p-23L, 1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3603     TEST_c_c (casin, -0x1p-23L, 0x1p-23L, -1.192092895507806853113684971258850504935e-7L, 1.192092895507818146886315028596704749235e-7L),
3604     TEST_c_c (casin, -0x1p-23L, -0x1p-23L, -1.192092895507806853113684971258850504935e-7L, -1.192092895507818146886315028596704749235e-7L),
3605     /* Bug 15319: underflow exception may be missing.  */
3606     TEST_c_c (casin, 0x1.fp-129L, 0x1p-23L, 2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3607     TEST_c_c (casin, 0x1.fp-129L, -0x1p-23L, 2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3608     TEST_c_c (casin, -0x1.fp-129L, 0x1p-23L, -2.846900380897707329917933005874691056564e-39L, 1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3609     TEST_c_c (casin, -0x1.fp-129L, -0x1p-23L, -2.846900380897707329917933005874691056564e-39L, -1.192092895507809676556842485683592032154e-7L, UNDERFLOW_EXCEPTION_OK_FLOAT),
3610     TEST_c_c (casin, 0x1p-23L, 0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3611     TEST_c_c (casin, -0x1p-23L, 0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, 2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3612     TEST_c_c (casin, 0x1p-23L, -0x1.fp-129L, 1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3613     TEST_c_c (casin, -0x1p-23L, -0x1.fp-129L, -1.192092895507815323443157514352519154304e-7L, -2.846900380897747786805634596726756660388e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3614     TEST_c_c (casin, 0.0L, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L),
3615     TEST_c_c (casin, 0.0L, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L),
3616     TEST_c_c (casin, -0.0L, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L),
3617     TEST_c_c (casin, -0.0L, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L),
3618     TEST_c_c (casin, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L, 0.0L),
3619     TEST_c_c (casin, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L, 0.0L),
3620     TEST_c_c (casin, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L, -0.0L),
3621     TEST_c_c (casin, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L, -0.0L),
3622     TEST_c_c (casin, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3623     TEST_c_c (casin, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3624     TEST_c_c (casin, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3625     TEST_c_c (casin, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
3626 #ifndef TEST_FLOAT
3627     TEST_c_c (casin, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3628     TEST_c_c (casin, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3629     TEST_c_c (casin, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, 8.813735870195429467279863907910458761820e-1L),
3630     TEST_c_c (casin, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.570092458683775146551022293016031474627e-16L, -8.813735870195429467279863907910458761820e-1L),
3631     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1p-52L, 1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3632     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1p-52L, -1.570796307840326780080580569360500172043L, 1.171456840272878582596796205397918831268e-8L),
3633     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1p-52L, 1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3634     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1p-52L, -1.570796307840326780080580569360500172043L, -1.171456840272878582596796205397918831268e-8L),
3635     TEST_c_c (casin, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3636     TEST_c_c (casin, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3637     TEST_c_c (casin, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, 8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3638     TEST_c_c (casin, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.810492908885321954658152505985270452320e-309L, -8.813735870195429467279863907910371604180e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3639     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3640     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -1.570796311893735425383665303776316016594L, 3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3641     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3642     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -1.570796311893735425383665303776316016594L, -3.616396521699973256461764099945789620604e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3643     TEST_c_c (casin, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L),
3644     TEST_c_c (casin, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L),
3645     TEST_c_c (casin, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L),
3646     TEST_c_c (casin, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L),
3647     TEST_c_c (casin, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L, 0.0L),
3648     TEST_c_c (casin, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L, 0.0L),
3649     TEST_c_c (casin, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L, -0.0L),
3650     TEST_c_c (casin, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L, -0.0L),
3651 #endif
3652     TEST_c_c (casin, 0x1p-52L, 0.5L, 1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3653     TEST_c_c (casin, 0x1p-52L, -0.5L, 1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3654     TEST_c_c (casin, -0x1p-52L, 0.5L, -1.986027322597818397661816253158024383707e-16L, 4.812118250596034474977589134243772428682e-1L),
3655     TEST_c_c (casin, -0x1p-52L, -0.5L, -1.986027322597818397661816253158024383707e-16L, -4.812118250596034474977589134243772428682e-1L),
3656     TEST_c_c (casin, 0.5L, 0x1p-52L, 5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3657     TEST_c_c (casin, -0.5L, 0x1p-52L, -5.235987755982988730771072305465648369889e-1L, 2.563950248511418570403591756798643804971e-16L),
3658     TEST_c_c (casin, 0.5L, -0x1p-52L, 5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3659     TEST_c_c (casin, -0.5L, -0x1p-52L, -5.235987755982988730771072305465648369889e-1L, -2.563950248511418570403591756798643804971e-16L),
3660 #ifndef TEST_FLOAT
3661     TEST_c_c (casin, 0x1.fp-1025L, 0.5L, 4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3662     TEST_c_c (casin, 0x1.fp-1025L, -0.5L, 4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3663     TEST_c_c (casin, -0x1.fp-1025L, 0.5L, -4.819934639999230680322935210539402497827e-309L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3664     TEST_c_c (casin, -0x1.fp-1025L, -0.5L, -4.819934639999230680322935210539402497827e-309L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3665     TEST_c_c (casin, 0.5L, 0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3666     TEST_c_c (casin, -0.5L, 0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, 6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3667     TEST_c_c (casin, 0.5L, -0x1.fp-1025L, 5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3668     TEST_c_c (casin, -0.5L, -0x1.fp-1025L, -5.235987755982988730771072305465838140329e-1L, -6.222508863508420569166420770843207333493e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3669 #endif
3670     TEST_c_c (casin, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3671     TEST_c_c (casin, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3672     TEST_c_c (casin, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181604132852e-16L, 2.220446049250313080847263336181677117148e-16L),
3673     TEST_c_c (casin, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181604132852e-16L, -2.220446049250313080847263336181677117148e-16L),
3674 #ifndef TEST_FLOAT
3675     /* Bug 15319: underflow exception may be missing.  */
3676     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3677     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3678     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289283247603e-309L, 2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3679     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289283247603e-309L, -2.220446049250313080847263336181622378926e-16L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3680     TEST_c_c (casin, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3681     TEST_c_c (casin, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, 5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3682     TEST_c_c (casin, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3683     TEST_c_c (casin, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181658871074e-16L, -5.388850751072128349671657362289548938458e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3684 #endif
3685     TEST_c_c (casin, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L),
3686     TEST_c_c (casin, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L),
3687     TEST_c_c (casin, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L),
3688     TEST_c_c (casin, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L),
3689     TEST_c_c (casin, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L, 0.0L),
3690     TEST_c_c (casin, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L, 0.0L),
3691     TEST_c_c (casin, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L, -0.0L),
3692     TEST_c_c (casin, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L, -0.0L),
3693 #ifndef TEST_FLOAT
3694     TEST_c_c (casin, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3695     TEST_c_c (casin, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3696     TEST_c_c (casin, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3697     TEST_c_c (casin, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3698 #endif
3699 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
3700     TEST_c_c (casin, 0x1p-63L, 0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3701     TEST_c_c (casin, 0x1p-63L, -0x0.ffffffffffffffffp0L, 7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3702     TEST_c_c (casin, -0x1p-63L, 0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, 8.813735870195430251942769895627079569937e-1L),
3703     TEST_c_c (casin, -0x1p-63L, -0x0.ffffffffffffffffp0L, -7.666467083416870407402049869781566856442e-20L, -8.813735870195430251942769895627079569937e-1L),
3704     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1p-63L, 1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3705     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1p-63L, -1.570796326376055842114524927965556247908L, 2.588578361325995866221775673638805081337e-10L),
3706     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1p-63L, 1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3707     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1p-63L, -1.570796326376055842114524927965556247908L, -2.588578361325995866221775673638805081337e-10L),
3708 # if LDBL_MIN_EXP <= -16381
3709     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3710     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3711     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, 8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3712     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -5.757683115456107044287327268904964422212e-4933L, -8.813735870195430251942769895627079569917e-1L, UNDERFLOW_EXCEPTION),
3713     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3714     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -1.570796326465624365239962068302568888898L, 2.472906068161537187835415298076415423459e-4923L),
3715     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3716     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -1.570796326465624365239962068302568888898L, -2.472906068161537187835415298076415423459e-4923L),
3717 # endif
3718     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L),
3719     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L),
3720     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L),
3721     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L),
3722     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L, 0.0L),
3723     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L, 0.0L),
3724     TEST_c_c (casin, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L, -0.0L),
3725     TEST_c_c (casin, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L, -0.0L),
3726 #endif
3727     TEST_c_c (casin, 0x1p-63L, 0.5L, 9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3728     TEST_c_c (casin, 0x1p-63L, -0.5L, 9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3729     TEST_c_c (casin, -0x1p-63L, 0.5L, -9.697399036122160144833087173623140436413e-20L, 4.812118250596034474977589134243684231373e-1L),
3730     TEST_c_c (casin, -0x1p-63L, -0.5L, -9.697399036122160144833087173623140436413e-20L, -4.812118250596034474977589134243684231373e-1L),
3731     TEST_c_c (casin, 0.5L, 0x1p-63L, 5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3732     TEST_c_c (casin, -0.5L, 0x1p-63L, -5.235987755982988730771072305465838140283e-1L, 1.251928832280966098829878787499365228659e-19L),
3733     TEST_c_c (casin, 0.5L, -0x1p-63L, 5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3734     TEST_c_c (casin, -0.5L, -0x1p-63L, -5.235987755982988730771072305465838140283e-1L, -1.251928832280966098829878787499365228659e-19L),
3735 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3736     TEST_c_c (casin, 0x1.fp-16385L, 0.5L, 7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3737     TEST_c_c (casin, 0x1.fp-16385L, -0.5L, 7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3738     TEST_c_c (casin, -0x1.fp-16385L, 0.5L, -7.282957076134209141226696333885150260319e-4933L, 4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3739     TEST_c_c (casin, -0x1.fp-16385L, -0.5L, -7.282957076134209141226696333885150260319e-4933L, -4.812118250596034474977589134243684231352e-1L, UNDERFLOW_EXCEPTION),
3740     TEST_c_c (casin, 0.5L, 0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3741     TEST_c_c (casin, -0.5L, 0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, 9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3742     TEST_c_c (casin, 0.5L, -0x1.fp-16385L, 5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3743     TEST_c_c (casin, -0.5L, -0x1.fp-16385L, -5.235987755982988730771072305465838140329e-1L, -9.402257155670418112159334875199821342890e-4933L, UNDERFLOW_EXCEPTION),
3744 #endif
3745     TEST_c_c (casin, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3746     TEST_c_c (casin, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3747     TEST_c_c (casin, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711422e-19L, 1.084202172485504434007452800869941711430e-19L),
3748     TEST_c_c (casin, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711422e-19L, -1.084202172485504434007452800869941711430e-19L),
3749 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3750     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3751     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3752     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, 1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3753     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584369e-4933L, -1.084202172485504434007452800869941711424e-19L, UNDERFLOW_EXCEPTION),
3754     TEST_c_c (casin, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3755     TEST_c_c (casin, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, 8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3756     TEST_c_c (casin, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3757     TEST_c_c (casin, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711428e-19L, -8.142593549724601460479922838826119584465e-4933L, UNDERFLOW_EXCEPTION),
3758 #endif
3759     TEST_c_c (casin, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L),
3760     TEST_c_c (casin, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L),
3761     TEST_c_c (casin, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L),
3762     TEST_c_c (casin, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L),
3763     TEST_c_c (casin, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L, 0.0L),
3764     TEST_c_c (casin, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L, 0.0L),
3765     TEST_c_c (casin, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L, -0.0L),
3766     TEST_c_c (casin, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L, -0.0L),
3767 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3768     TEST_c_c (casin, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3769     TEST_c_c (casin, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3770     TEST_c_c (casin, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3771     TEST_c_c (casin, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3772 #endif
3773 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
3774     TEST_c_c (casin, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3775     TEST_c_c (casin, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3776     TEST_c_c (casin, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, 8.813735870195430252326093249797835932642e-1L),
3777     TEST_c_c (casin, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.743152798421049375791483240187377443526e-32L, -8.813735870195430252326093249797835932642e-1L),
3778     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3779     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -1.570796326794896419512475791677915736035L, 1.234330349600789959989661887846005659983e-16L),
3780     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3781     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -1.570796326794896419512475791677915736035L, -1.234330349600789959989661887846005659983e-16L),
3782     TEST_c_c (casin, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3783     TEST_c_c (casin, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3784     TEST_c_c (casin, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, 8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3785     TEST_c_c (casin, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.810492908885321743133304375216641110205e-309L, -8.813735870195430252326093249797835932642e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
3786     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3787     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -1.570796326794896462222075823262245502760L, 3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3788     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3789     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -1.570796326794896462222075823262245502760L, -3.432186888910770473784103112009399360940e-293L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
3790     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L),
3791     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L),
3792     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L),
3793     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L),
3794     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L, 0.0L),
3795     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L, 0.0L),
3796     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L, -0.0L),
3797     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L, -0.0L),
3798 #endif
3799     TEST_c_c (casin, 0x1p-105L, 0.5L, 2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3800     TEST_c_c (casin, 0x1p-105L, -0.5L, 2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3801     TEST_c_c (casin, -0x1p-105L, 0.5L, -2.204933261082751447436996198490110245167e-32L, 4.812118250596034474977589134243684231352e-1L),
3802     TEST_c_c (casin, -0x1p-105L, -0.5L, -2.204933261082751447436996198490110245167e-32L, -4.812118250596034474977589134243684231352e-1L),
3803     TEST_c_c (casin, 0.5L, 0x1p-105L, 5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3804     TEST_c_c (casin, -0.5L, 0x1p-105L, -5.235987755982988730771072305465838140329e-1L, 2.846556599890768890940941645338546615370e-32L),
3805     TEST_c_c (casin, 0.5L, -0x1p-105L, 5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3806     TEST_c_c (casin, -0.5L, -0x1p-105L, -5.235987755982988730771072305465838140329e-1L, -2.846556599890768890940941645338546615370e-32L),
3807     TEST_c_c (casin, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3808     TEST_c_c (casin, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3809     TEST_c_c (casin, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
3810     TEST_c_c (casin, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
3811 #ifndef TEST_FLOAT
3812     /* Bug 15319: underflow exception may be missing.  */
3813     TEST_c_c (casin, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3814     TEST_c_c (casin, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3815     TEST_c_c (casin, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3816     TEST_c_c (casin, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
3817     TEST_c_c (casin, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3818     TEST_c_c (casin, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3819     TEST_c_c (casin, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3820     TEST_c_c (casin, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
3821 #endif
3822     TEST_c_c (casin, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
3823     TEST_c_c (casin, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
3824     TEST_c_c (casin, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
3825     TEST_c_c (casin, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
3826     TEST_c_c (casin, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
3827     TEST_c_c (casin, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
3828     TEST_c_c (casin, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
3829     TEST_c_c (casin, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
3830 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
3831     TEST_c_c (casin, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3832     TEST_c_c (casin, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3833     TEST_c_c (casin, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, 8.813735870195430252326093249797922409363e-1L),
3834     TEST_c_c (casin, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.361838123766444824837096281396380300349e-34L, -8.813735870195430252326093249797922409363e-1L),
3835     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3836     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -1.570796326794896601578502908312986698624L, 1.091004200533850618345330909857103457781e-17L),
3837     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3838     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -1.570796326794896601578502908312986698624L, -1.091004200533850618345330909857103457781e-17L),
3839     TEST_c_c (casin, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3840     TEST_c_c (casin, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3841     TEST_c_c (casin, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, 8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3842     TEST_c_c (casin, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.757683115456107044131264955348449231681e-4933L, -8.813735870195430252326093249797922409363e-1L, UNDERFLOW_EXCEPTION),
3843     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3844     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -1.570796326794896605353533883825294686803L, 5.867357004219059108790368268900490184505e-4916L),
3845     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3846     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -1.570796326794896605353533883825294686803L, -5.867357004219059108790368268900490184505e-4916L),
3847     TEST_c_c (casin, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L),
3848     TEST_c_c (casin, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L),
3849     TEST_c_c (casin, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L),
3850     TEST_c_c (casin, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L),
3851     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L, 0.0L),
3852     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L, 0.0L),
3853     TEST_c_c (casin, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L, -0.0L),
3854     TEST_c_c (casin, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L, -0.0L),
3855 #endif
3856     TEST_c_c (casin, 0x1p-112L, 0.5L, 1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3857     TEST_c_c (casin, 0x1p-112L, -0.5L, 1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3858     TEST_c_c (casin, -0x1p-112L, 0.5L, -1.722604110220899568310153280070398629037e-34L, 4.812118250596034474977589134243684231352e-1L),
3859     TEST_c_c (casin, -0x1p-112L, -0.5L, -1.722604110220899568310153280070398629037e-34L, -4.812118250596034474977589134243684231352e-1L),
3860     TEST_c_c (casin, 0.5L, 0x1p-112L, 5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3861     TEST_c_c (casin, -0.5L, 0x1p-112L, -5.235987755982988730771072305465838140329e-1L, 2.223872343664663196047610660420739543258e-34L),
3862     TEST_c_c (casin, 0.5L, -0x1p-112L, 5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3863     TEST_c_c (casin, -0.5L, -0x1p-112L, -5.235987755982988730771072305465838140329e-1L, -2.223872343664663196047610660420739543258e-34L),
3864     TEST_c_c (casin, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3865     TEST_c_c (casin, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3866     TEST_c_c (casin, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
3867     TEST_c_c (casin, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
3868 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
3869     TEST_c_c (casin, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3870     TEST_c_c (casin, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3871     TEST_c_c (casin, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3872     TEST_c_c (casin, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
3873     TEST_c_c (casin, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3874     TEST_c_c (casin, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3875     TEST_c_c (casin, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3876     TEST_c_c (casin, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
3877 #endif
3878     TEST_c_c (casin, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
3879     TEST_c_c (casin, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
3880     TEST_c_c (casin, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
3881     TEST_c_c (casin, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
3882     TEST_c_c (casin, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
3883     TEST_c_c (casin, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
3884     TEST_c_c (casin, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
3885     TEST_c_c (casin, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
3886
3887     TEST_c_c (casin, 0.75L, 1.25L, 0.453276177638793913448921196101971749L, 1.13239363160530819522266333696834467L),
3888     TEST_c_c (casin, -2, -3, -0.57065278432109940071028387968566963L, -1.9833870299165354323470769028940395L),
3889     END_DATA (casin)
3890   };
3891
3892 static void
3893 casin_test (void)
3894 {
3895   errno = 0;
3896   FUNC(casin) (BUILD_COMPLEX (0.7L, 1.2L));
3897   if (errno == ENOSYS)
3898     /* Function not implemented.  */
3899     return;
3900
3901   START (casin);
3902   RUN_TEST_LOOP_c_c (casin, casin_test_data, );
3903   END (casin, complex);
3904 }
3905
3906
3907 static const struct test_c_c_data casinh_test_data[] =
3908   {
3909     START_DATA (casinh),
3910     TEST_c_c (casinh, 0, 0, 0.0, 0.0),
3911     TEST_c_c (casinh, minus_zero, 0, minus_zero, 0),
3912     TEST_c_c (casinh, 0, minus_zero, 0.0, minus_zero),
3913     TEST_c_c (casinh, minus_zero, minus_zero, minus_zero, minus_zero),
3914
3915     TEST_c_c (casinh, plus_infty, plus_infty, plus_infty, M_PI_4l),
3916     TEST_c_c (casinh, plus_infty, minus_infty, plus_infty, -M_PI_4l),
3917     TEST_c_c (casinh, minus_infty, plus_infty, minus_infty, M_PI_4l),
3918     TEST_c_c (casinh, minus_infty, minus_infty, minus_infty, -M_PI_4l),
3919
3920     TEST_c_c (casinh, -10.0, plus_infty, minus_infty, M_PI_2l),
3921     TEST_c_c (casinh, -10.0, minus_infty, minus_infty, -M_PI_2l),
3922     TEST_c_c (casinh, 0, plus_infty, plus_infty, M_PI_2l),
3923     TEST_c_c (casinh, 0, minus_infty, plus_infty, -M_PI_2l),
3924     TEST_c_c (casinh, minus_zero, plus_infty, minus_infty, M_PI_2l),
3925     TEST_c_c (casinh, minus_zero, minus_infty, minus_infty, -M_PI_2l),
3926     TEST_c_c (casinh, 0.1L, plus_infty, plus_infty, M_PI_2l),
3927     TEST_c_c (casinh, 0.1L, minus_infty, plus_infty, -M_PI_2l),
3928
3929     TEST_c_c (casinh, minus_infty, 0, minus_infty, 0.0),
3930     TEST_c_c (casinh, minus_infty, minus_zero, minus_infty, minus_zero),
3931     TEST_c_c (casinh, minus_infty, 100, minus_infty, 0.0),
3932     TEST_c_c (casinh, minus_infty, -100, minus_infty, minus_zero),
3933
3934     TEST_c_c (casinh, plus_infty, 0, plus_infty, 0.0),
3935     TEST_c_c (casinh, plus_infty, minus_zero, plus_infty, minus_zero),
3936     TEST_c_c (casinh, plus_infty, 0.5, plus_infty, 0.0),
3937     TEST_c_c (casinh, plus_infty, -0.5, plus_infty, minus_zero),
3938
3939     TEST_c_c (casinh, plus_infty, qnan_value, plus_infty, qnan_value),
3940     TEST_c_c (casinh, minus_infty, qnan_value, minus_infty, qnan_value),
3941
3942     TEST_c_c (casinh, qnan_value, 0, qnan_value, 0.0),
3943     TEST_c_c (casinh, qnan_value, minus_zero, qnan_value, minus_zero),
3944
3945     TEST_c_c (casinh, qnan_value, plus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
3946     TEST_c_c (casinh, qnan_value, minus_infty, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
3947
3948     TEST_c_c (casinh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3949     TEST_c_c (casinh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3950
3951     TEST_c_c (casinh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3952     TEST_c_c (casinh, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
3953
3954     TEST_c_c (casinh, qnan_value, qnan_value, qnan_value, qnan_value),
3955
3956     TEST_c_c (casinh, plus_zero, -1.5L, 0.9624236501192068949955178268487368462704L, -M_PI_2l),
3957     TEST_c_c (casinh, minus_zero, -1.5L, -0.9624236501192068949955178268487368462704L, -M_PI_2l),
3958     TEST_c_c (casinh, plus_zero, -1.0L, plus_zero, -M_PI_2l),
3959     TEST_c_c (casinh, minus_zero, -1.0L, minus_zero, -M_PI_2l),
3960     TEST_c_c (casinh, plus_zero, -0.5L, plus_zero, -0.5235987755982988730771072305465838140329L),
3961     TEST_c_c (casinh, minus_zero, -0.5L, minus_zero, -0.5235987755982988730771072305465838140329L),
3962     TEST_c_c (casinh, plus_zero, 0.5L, plus_zero, 0.5235987755982988730771072305465838140329L),
3963     TEST_c_c (casinh, minus_zero, 0.5L, minus_zero, 0.5235987755982988730771072305465838140329L),
3964     TEST_c_c (casinh, plus_zero, 1.0L, plus_zero, M_PI_2l),
3965     TEST_c_c (casinh, minus_zero, 1.0L, minus_zero, M_PI_2l),
3966     TEST_c_c (casinh, plus_zero, 1.5L, 0.9624236501192068949955178268487368462704L, M_PI_2l),
3967     TEST_c_c (casinh, minus_zero, 1.5L, -0.9624236501192068949955178268487368462704L, M_PI_2l),
3968
3969     TEST_c_c (casinh, -1.5L, plus_zero, -1.194763217287109304111930828519090523536L, plus_zero),
3970     TEST_c_c (casinh, -1.5L, minus_zero, -1.194763217287109304111930828519090523536L, minus_zero),
3971     TEST_c_c (casinh, -1.0L, plus_zero, -0.8813735870195430252326093249797923090282L, plus_zero),
3972     TEST_c_c (casinh, -1.0L, minus_zero, -0.8813735870195430252326093249797923090282L, minus_zero),
3973     TEST_c_c (casinh, -0.5L, plus_zero, -0.4812118250596034474977589134243684231352L, plus_zero),
3974     TEST_c_c (casinh, -0.5L, minus_zero, -0.4812118250596034474977589134243684231352L, minus_zero),
3975     TEST_c_c (casinh, 0.5L, plus_zero, 0.4812118250596034474977589134243684231352L, plus_zero),
3976     TEST_c_c (casinh, 0.5L, minus_zero, 0.4812118250596034474977589134243684231352L, minus_zero),
3977     TEST_c_c (casinh, 1.0L, plus_zero, 0.8813735870195430252326093249797923090282L, plus_zero),
3978     TEST_c_c (casinh, 1.0L, minus_zero, 0.8813735870195430252326093249797923090282L, minus_zero),
3979     TEST_c_c (casinh, 1.5L, plus_zero, 1.194763217287109304111930828519090523536L, plus_zero),
3980     TEST_c_c (casinh, 1.5L, minus_zero, 1.194763217287109304111930828519090523536L, minus_zero),
3981
3982     TEST_c_c (casinh, 0x1p50L, 1.0L, 3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
3983     TEST_c_c (casinh, 0x1p50L, -1.0L, 3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
3984     TEST_c_c (casinh, -0x1p50L, 1.0L, -3.535050620855721078027883819436759661753e1L, 8.881784197001252323389053344720723756399e-16L),
3985     TEST_c_c (casinh, -0x1p50L, -1.0L, -3.535050620855721078027883819436759661753e1L, -8.881784197001252323389053344720723756399e-16L),
3986     TEST_c_c (casinh, 1.0L, 0x1p50L, 3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
3987     TEST_c_c (casinh, -1.0L, 0x1p50L, -3.535050620855721078027883819436720218708e1L, 1.570796326794895731052901991514519103193L),
3988     TEST_c_c (casinh, 1.0L, -0x1p50L, 3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
3989     TEST_c_c (casinh, -1.0L, -0x1p50L, -3.535050620855721078027883819436720218708e1L, -1.570796326794895731052901991514519103193L),
3990 #ifndef TEST_FLOAT
3991     TEST_c_c (casinh, 0x1p500L, 1.0L, 3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
3992     TEST_c_c (casinh, 0x1p500L, -1.0L, 3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
3993     TEST_c_c (casinh, -0x1p500L, 1.0L, -3.472667374605326000180332928505464606058e2L, 3.054936363499604682051979393213617699789e-151L),
3994     TEST_c_c (casinh, -0x1p500L, -1.0L, -3.472667374605326000180332928505464606058e2L, -3.054936363499604682051979393213617699789e-151L),
3995     TEST_c_c (casinh, 1.0L, 0x1p500L, 3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
3996     TEST_c_c (casinh, -1.0L, 0x1p500L, -3.472667374605326000180332928505464606058e2L, 1.570796326794896619231321691639751442099L),
3997     TEST_c_c (casinh, 1.0L, -0x1p500L, 3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
3998     TEST_c_c (casinh, -1.0L, -0x1p500L, -3.472667374605326000180332928505464606058e2L, -1.570796326794896619231321691639751442099L),
3999 #endif
4000 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4001     TEST_c_c (casinh, 0x1p5000L, 1.0L, 3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
4002     TEST_c_c (casinh, 0x1p5000L, -1.0L, 3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
4003     TEST_c_c (casinh, -0x1p5000L, 1.0L, -3.466429049980286492395577839412341016946e3L, 7.079811261048172892385615158694057552948e-1506L),
4004     TEST_c_c (casinh, -0x1p5000L, -1.0L, -3.466429049980286492395577839412341016946e3L, -7.079811261048172892385615158694057552948e-1506L),
4005     TEST_c_c (casinh, 1.0L, 0x1p5000L, 3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
4006     TEST_c_c (casinh, -1.0L, 0x1p5000L, -3.466429049980286492395577839412341016946e3L, 1.570796326794896619231321691639751442099L),
4007     TEST_c_c (casinh, 1.0L, -0x1p5000L, 3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
4008     TEST_c_c (casinh, -1.0L, -0x1p5000L, -3.466429049980286492395577839412341016946e3L, -1.570796326794896619231321691639751442099L),
4009 #endif
4010
4011     TEST_c_c (casinh, 0x1.fp127L, 0x1.fp127L, 8.973081118419833726837456344608533993585e1L, 7.853981633974483096156608458198757210493e-1L),
4012 #ifndef TEST_FLOAT
4013     TEST_c_c (casinh, 0x1.fp1023L, 0x1.fp1023L, 7.107906849659093345062145442726115449315e2L, 7.853981633974483096156608458198757210493e-1L),
4014 #endif
4015 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4016     TEST_c_c (casinh, 0x1.fp16383L, 0x1.fp16383L, 1.135753137836666928715489992987020363057e4L, 7.853981633974483096156608458198757210493e-1L),
4017 #endif
4018
4019     TEST_c_c (casinh, 0x1.fp-129L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4020     TEST_c_c (casinh, 0x1.fp-129L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4021     TEST_c_c (casinh, -0x1.fp-129L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442096L),
4022     TEST_c_c (casinh, -0x1.fp-129L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442096L),
4023     TEST_c_c (casinh, 1.5L, 0x1.fp-129L, 1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4024     TEST_c_c (casinh, -1.5L, 0x1.fp-129L, -1.194763217287109304111930828519090523536L, 1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4025     TEST_c_c (casinh, 1.5L, -0x1.fp-129L, 1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4026     TEST_c_c (casinh, -1.5L, -0x1.fp-129L, -1.194763217287109304111930828519090523536L, -1.579176199917649005841160751101628985741e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4027 #ifndef TEST_FLOAT
4028     TEST_c_c (casinh, 0x1.fp-1025L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4029     TEST_c_c (casinh, 0x1.fp-1025L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4030     TEST_c_c (casinh, -0x1.fp-1025L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4031     TEST_c_c (casinh, -0x1.fp-1025L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4032     TEST_c_c (casinh, 1.5L, 0x1.fp-1025L, 1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4033     TEST_c_c (casinh, -1.5L, 0x1.fp-1025L, -1.194763217287109304111930828519090523536L, 2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4034     TEST_c_c (casinh, 1.5L, -0x1.fp-1025L, 1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4035     TEST_c_c (casinh, -1.5L, -0x1.fp-1025L, -1.194763217287109304111930828519090523536L, -2.989196569048182929051881765490354365918e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4036 #endif
4037 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4038     TEST_c_c (casinh, 0x1.fp-16385L, 1.5L, 9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4039     TEST_c_c (casinh, 0x1.fp-16385L, -1.5L, 9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4040     TEST_c_c (casinh, -0x1.fp-16385L, 1.5L, -9.624236501192068949955178268487368462704e-1L, 1.570796326794896619231321691639751442099L),
4041     TEST_c_c (casinh, -0x1.fp-16385L, -1.5L, -9.624236501192068949955178268487368462704e-1L, -1.570796326794896619231321691639751442099L),
4042     TEST_c_c (casinh, 1.5L, 0x1.fp-16385L, 1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4043     TEST_c_c (casinh, -1.5L, 0x1.fp-16385L, -1.194763217287109304111930828519090523536L, 4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4044     TEST_c_c (casinh, 1.5L, -0x1.fp-16385L, 1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4045     TEST_c_c (casinh, -1.5L, -0x1.fp-16385L, -1.194763217287109304111930828519090523536L, -4.516698239814521372306784062043266700598e-4933L, UNDERFLOW_EXCEPTION),
4046 #endif
4047
4048     TEST_c_c (casinh, 0.5L, 1.0L, 7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4049     TEST_c_c (casinh, 0.5L, -1.0L, 7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4050     TEST_c_c (casinh, -0.5L, 1.0L, -7.328576759736452608886724437653071523305e-1L, 8.959074812088902390666567243275770102229e-1L),
4051     TEST_c_c (casinh, -0.5L, -1.0L, -7.328576759736452608886724437653071523305e-1L, -8.959074812088902390666567243275770102229e-1L),
4052     TEST_c_c (casinh, 1.0L, 0.5L, 9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4053     TEST_c_c (casinh, -1.0L, 0.5L, -9.261330313501824245501244453057873152694e-1L, 3.494390628572132936274118260753699527325e-1L),
4054     TEST_c_c (casinh, 1.0L, -0.5L, 9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4055     TEST_c_c (casinh, -1.0L, -0.5L, -9.261330313501824245501244453057873152694e-1L, -3.494390628572132936274118260753699527325e-1L),
4056     TEST_c_c (casinh, 0.25L, 1.0L, 5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4057     TEST_c_c (casinh, 0.25L, -1.0L, 5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4058     TEST_c_c (casinh, -0.25L, 1.0L, -5.097911466811016354623559941115413499164e-1L, 1.081751996523816326311037318425097434186L),
4059     TEST_c_c (casinh, -0.25L, -1.0L, -5.097911466811016354623559941115413499164e-1L, -1.081751996523816326311037318425097434186L),
4060     TEST_c_c (casinh, 1.0L, 0.25L, 8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4061     TEST_c_c (casinh, -1.0L, 0.25L, -8.924633639033482359562124741744951972772e-1L, 1.763024327769669304186785666360901026468e-1L),
4062     TEST_c_c (casinh, 1.0L, -0.25L, 8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4063     TEST_c_c (casinh, -1.0L, -0.25L, -8.924633639033482359562124741744951972772e-1L, -1.763024327769669304186785666360901026468e-1L),
4064     TEST_c_c (casinh, 0x1.fp-10L, 1.0L, 4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4065     TEST_c_c (casinh, 0x1.fp-10L, -1.0L, 4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4066     TEST_c_c (casinh, -0x1.fp-10L, 1.0L, -4.350501469856803800217957402220976497152e-2L, 1.527305029163877791518741192097931722508L),
4067     TEST_c_c (casinh, -0x1.fp-10L, -1.0L, -4.350501469856803800217957402220976497152e-2L, -1.527305029163877791518741192097931722508L),
4068     TEST_c_c (casinh, 1.0L, 0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4069     TEST_c_c (casinh, -1.0L, 0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, 1.337909359557740912558349531052239112857e-3L),
4070     TEST_c_c (casinh, 1.0L, -0x1.fp-10L, 8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4071     TEST_c_c (casinh, -1.0L, -0x1.fp-10L, -8.813742198809567991336704287826445879025e-1L, -1.337909359557740912558349531052239112857e-3L),
4072     TEST_c_c (casinh, 0x1.fp-30L, 1.0L, 4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4073     TEST_c_c (casinh, 0x1.fp-30L, -1.0L, 4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4074     TEST_c_c (casinh, -0x1.fp-30L, 1.0L, -4.247867098745151888768727039216644758847e-5L, 1.570753848123921942730162693731872690232L),
4075     TEST_c_c (casinh, -0x1.fp-30L, -1.0L, -4.247867098745151888768727039216644758847e-5L, -1.570753848123921942730162693731872690232L),
4076     TEST_c_c (casinh, 1.0L, 0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4077     TEST_c_c (casinh, -1.0L, 0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, 1.275929984216518540252717485007112529021e-9L),
4078     TEST_c_c (casinh, 1.0L, -0x1.fp-30L, 8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4079     TEST_c_c (casinh, -1.0L, -0x1.fp-30L, -8.813735870195430258081932989769495326854e-1L, -1.275929984216518540252717485007112529021e-9L),
4080     TEST_c_c (casinh, 0x1.fp-100L, 1.0L, 1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4081     TEST_c_c (casinh, 0x1.fp-100L, -1.0L, 1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4082     TEST_c_c (casinh, -0x1.fp-100L, 1.0L, -1.236292038260260888664514866457202186027e-15L, 1.570796326794895382939283431378862777584L),
4083     TEST_c_c (casinh, -0x1.fp-100L, -1.0L, -1.236292038260260888664514866457202186027e-15L, -1.570796326794895382939283431378862777584L),
4084     TEST_c_c (casinh, 1.0L, 0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4085     TEST_c_c (casinh, -1.0L, 0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, 1.080754735021050612990719608916167354321e-30L),
4086     TEST_c_c (casinh, 1.0L, -0x1.fp-100L, 8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4087     TEST_c_c (casinh, -1.0L, -0x1.fp-100L, -8.813735870195430252326093249797923090282e-1L, -1.080754735021050612990719608916167354321e-30L),
4088     TEST_c_c (casinh, 0x1.fp-129L, 1.0L, 5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4089     TEST_c_c (casinh, 0x1.fp-129L, -1.0L, 5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4090     TEST_c_c (casinh, -0x1.fp-129L, 1.0L, -5.335635276982233498398987585285818977933e-20L, 1.570796326794896619177965338869929107115L),
4091     TEST_c_c (casinh, -0x1.fp-129L, -1.0L, -5.335635276982233498398987585285818977933e-20L, -1.570796326794896619177965338869929107115L),
4092     TEST_c_c (casinh, 1.0L, 0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4093     TEST_c_c (casinh, -1.0L, 0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, 2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4094     TEST_c_c (casinh, 1.0L, -0x1.fp-129L, 8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4095     TEST_c_c (casinh, -1.0L, -0x1.fp-129L, -8.813735870195430252326093249797923090282e-1L, -2.013062564695348242280482517399205554874e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4096 #ifndef TEST_FLOAT
4097     TEST_c_c (casinh, 0x1.fp-1000L, 1.0L, 4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4098     TEST_c_c (casinh, 0x1.fp-1000L, -1.0L, 4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4099     TEST_c_c (casinh, -0x1.fp-1000L, 1.0L, -4.252291453851660175550490409247739011867e-151L, 1.570796326794896619231321691639751442099L),
4100     TEST_c_c (casinh, -0x1.fp-1000L, -1.0L, -4.252291453851660175550490409247739011867e-151L, -1.570796326794896619231321691639751442099L),
4101     TEST_c_c (casinh, 1.0L, 0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4102     TEST_c_c (casinh, -1.0L, 0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, 1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4103     TEST_c_c (casinh, 1.0L, -0x1.fp-1000L, 8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4104     TEST_c_c (casinh, -1.0L, -0x1.fp-1000L, -8.813735870195430252326093249797923090282e-1L, -1.278589251976747242280879285935084814093e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4105     TEST_c_c (casinh, 0x1.fp-1025L, 1.0L, 7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4106     TEST_c_c (casinh, 0x1.fp-1025L, -1.0L, 7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4107     TEST_c_c (casinh, -0x1.fp-1025L, 1.0L, -7.340879205566679497036857179189356754017e-155L, 1.570796326794896619231321691639751442099L),
4108     TEST_c_c (casinh, -0x1.fp-1025L, -1.0L, -7.340879205566679497036857179189356754017e-155L, -1.570796326794896619231321691639751442099L),
4109     TEST_c_c (casinh, 1.0L, 0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4110     TEST_c_c (casinh, -1.0L, 0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, 3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4111     TEST_c_c (casinh, 1.0L, -0x1.fp-1025L, 8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4112     TEST_c_c (casinh, -1.0L, -0x1.fp-1025L, -8.813735870195430252326093249797923090282e-1L, -3.810492908885321743133304375216617626230e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4113 #endif
4114 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4115     TEST_c_c (casinh, 0x1.fp-10000L, 1.0L, 9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4116     TEST_c_c (casinh, 0x1.fp-10000L, -1.0L, 9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4117     TEST_c_c (casinh, -0x1.fp-10000L, 1.0L, -9.854680208706673586644342922051388714633e-1506L, 1.570796326794896619231321691639751442099L),
4118     TEST_c_c (casinh, -0x1.fp-10000L, -1.0L, -9.854680208706673586644342922051388714633e-1506L, -1.570796326794896619231321691639751442099L),
4119     TEST_c_c (casinh, 1.0L, 0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4120     TEST_c_c (casinh, -1.0L, 0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, 6.867047849047171855399183659351043150871e-3011L),
4121     TEST_c_c (casinh, 1.0L, -0x1.fp-10000L, 8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4122     TEST_c_c (casinh, -1.0L, -0x1.fp-10000L, -8.813735870195430252326093249797923090282e-1L, -6.867047849047171855399183659351043150871e-3011L),
4123     TEST_c_c (casinh, 0x1.fp-16385L, 1.0L, 9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4124     TEST_c_c (casinh, 0x1.fp-16385L, -1.0L, 9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4125     TEST_c_c (casinh, -0x1.fp-16385L, 1.0L, -9.023632056840860275214893047597614177639e-2467L, 1.570796326794896619231321691639751442099L),
4126     TEST_c_c (casinh, -0x1.fp-16385L, -1.0L, -9.023632056840860275214893047597614177639e-2467L, -1.570796326794896619231321691639751442099L),
4127     TEST_c_c (casinh, 1.0L, 0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4128     TEST_c_c (casinh, -1.0L, 0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, 5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4129     TEST_c_c (casinh, 1.0L, -0x1.fp-16385L, 8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4130     TEST_c_c (casinh, -1.0L, -0x1.fp-16385L, -8.813735870195430252326093249797923090282e-1L, -5.757683115456107044131264955348448954458e-4933L, UNDERFLOW_EXCEPTION),
4131 #endif
4132
4133     TEST_c_c (casinh, 0x1p-23L, 0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4134     TEST_c_c (casinh, 0x1p-23L, -0x1.000002p0L, 5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4135     TEST_c_c (casinh, -0x1p-23L, 0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, 1.570574114956455764594481054234834678422L),
4136     TEST_c_c (casinh, -0x1p-23L, -0x1.000002p0L, -5.364668491573609633134147164031476452679e-4L, -1.570574114956455764594481054234834678422L),
4137     TEST_c_c (casinh, 0x1.000002p0L, 0x1p-23L, 8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4138     TEST_c_c (casinh, -0x1.000002p0L, 0x1p-23L, -8.813736713132400470205730751186547909968e-1L, 8.429369199749229560964789467980644296420e-8L),
4139     TEST_c_c (casinh, 0x1.000002p0L, -0x1p-23L, 8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4140     TEST_c_c (casinh, -0x1.000002p0L, -0x1p-23L, -8.813736713132400470205730751186547909968e-1L, -8.429369199749229560964789467980644296420e-8L),
4141     TEST_c_c (casinh, 0x1.fp-129L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4142     TEST_c_c (casinh, 0x1.fp-129L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4143     TEST_c_c (casinh, -0x1.fp-129L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751436268L),
4144     TEST_c_c (casinh, -0x1.fp-129L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751436268L),
4145     TEST_c_c (casinh, 0x1.000002p0L, 0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4146     TEST_c_c (casinh, -0x1.000002p0L, 0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, 2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4147     TEST_c_c (casinh, 0x1.000002p0L, -0x1.fp-129L, 8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4148     TEST_c_c (casinh, -0x1.000002p0L, -0x1.fp-129L, -8.813736713132375348727889167749389235161e-1L, -2.013062444707472738895109955455676357057e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4149     TEST_c_c (casinh, 0.0L, 0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4150     TEST_c_c (casinh, 0.0L, -0x1.000002p0L, 4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4151     TEST_c_c (casinh, -0.0L, 0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, 1.570796326794896619231321691639751442099L),
4152     TEST_c_c (casinh, -0.0L, -0x1.000002p0L, -4.882812451493617206486388134172712975070e-4L, -1.570796326794896619231321691639751442099L),
4153     TEST_c_c (casinh, 0x1.000002p0L, 0.0L, 8.813736713132375348727889167749389235161e-1L, 0.0L),
4154     TEST_c_c (casinh, -0x1.000002p0L, 0.0L, -8.813736713132375348727889167749389235161e-1L, 0.0L),
4155     TEST_c_c (casinh, 0x1.000002p0L, -0.0L, 8.813736713132375348727889167749389235161e-1L, -0.0L),
4156     TEST_c_c (casinh, -0x1.000002p0L, -0.0L, -8.813736713132375348727889167749389235161e-1L, -0.0L),
4157 #ifndef TEST_FLOAT
4158     TEST_c_c (casinh, 0x1p-52L, 0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4159     TEST_c_c (casinh, 0x1p-52L, -0x1.0000000000001p0L, 2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4160     TEST_c_c (casinh, -0x1p-52L, 0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, 1.570796317204594913251280305810847349436L),
4161     TEST_c_c (casinh, -0x1p-52L, -0x1.0000000000001p0L, -2.315303644582684770975188768022139415020e-8L, -1.570796317204594913251280305810847349436L),
4162     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1p-52L, 8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4163     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1p-52L, -8.813735870195431822418551933572982483664e-1L, 1.570092458683774885078102529858632363236e-16L),
4164     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1p-52L, 8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4165     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1p-52L, -8.813735870195431822418551933572982483664e-1L, -1.570092458683774885078102529858632363236e-16L),
4166     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4167     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4168     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4169     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4170     TEST_c_c (casinh, 0x1.0000000000001p0L, 0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4171     TEST_c_c (casinh, -0x1.0000000000001p0L, 0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, 3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4172     TEST_c_c (casinh, 0x1.0000000000001p0L, -0x1.fp-1025L, 8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4173     TEST_c_c (casinh, -0x1.0000000000001p0L, -0x1.fp-1025L, -8.813735870195431822418551933572895326024e-1L, -3.810492908885321320083608113679347200012e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4174     TEST_c_c (casinh, 0.0L, 0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4175     TEST_c_c (casinh, 0.0L, -0x1.0000000000001p0L, 2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4176     TEST_c_c (casinh, -0.0L, 0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, 1.570796326794896619231321691639751442099L),
4177     TEST_c_c (casinh, -0.0L, -0x1.0000000000001p0L, -2.107342425544701550354780375182800088393e-8L, -1.570796326794896619231321691639751442099L),
4178     TEST_c_c (casinh, 0x1.0000000000001p0L, 0.0L, 8.813735870195431822418551933572895326024e-1L, 0.0L),
4179     TEST_c_c (casinh, -0x1.0000000000001p0L, 0.0L, -8.813735870195431822418551933572895326024e-1L, 0.0L),
4180     TEST_c_c (casinh, 0x1.0000000000001p0L, -0.0L, 8.813735870195431822418551933572895326024e-1L, -0.0L),
4181     TEST_c_c (casinh, -0x1.0000000000001p0L, -0.0L, -8.813735870195431822418551933572895326024e-1L, -0.0L),
4182 #endif
4183 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4184     TEST_c_c (casinh, 0x1p-63L, 0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4185     TEST_c_c (casinh, 0x1p-63L, -0x1.0000000000000002p0L, 5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4186     TEST_c_c (casinh, -0x1p-63L, 0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, 1.570796326582978888921215348380499122131L),
4187     TEST_c_c (casinh, -0x1p-63L, -0x1.0000000000000002p0L, -5.116146586219826555037807251857670783420e-10L, -1.570796326582978888921215348380499122131L),
4188     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1p-63L, 8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4189     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1p-63L, -8.813735870195430253092739958139610131001e-1L, 7.666467083416870406778649849746878368519e-20L),
4190     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1p-63L, 8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4191     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1p-63L, -8.813735870195430253092739958139610131001e-1L, -7.666467083416870406778649849746878368519e-20L),
4192 # if LDBL_MIN_EXP <= -16381
4193     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4194     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4195     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4196     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4197     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4198     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, 5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4199     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0x1.fp-16385L, 8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4200     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0x1.fp-16385L, -8.813735870195430253092739958139610130980e-1L, -5.757683115456107043819140328235418018963e-4933L, UNDERFLOW_EXCEPTION),
4201 # endif
4202     TEST_c_c (casinh, 0.0L, 0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4203     TEST_c_c (casinh, 0.0L, -0x1.0000000000000002p0L, 4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4204     TEST_c_c (casinh, -0.0L, 0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, 1.570796326794896619231321691639751442099L),
4205     TEST_c_c (casinh, -0.0L, -0x1.0000000000000002p0L, -4.656612873077392578082927418388212703712e-10L, -1.570796326794896619231321691639751442099L),
4206     TEST_c_c (casinh, 0x1.0000000000000002p0L, 0.0L, 8.813735870195430253092739958139610130980e-1L, 0.0L),
4207     TEST_c_c (casinh, -0x1.0000000000000002p0L, 0.0L, -8.813735870195430253092739958139610130980e-1L, 0.0L),
4208     TEST_c_c (casinh, 0x1.0000000000000002p0L, -0.0L, 8.813735870195430253092739958139610130980e-1L, -0.0L),
4209     TEST_c_c (casinh, -0x1.0000000000000002p0L, -0.0L, -8.813735870195430253092739958139610130980e-1L, -0.0L),
4210 #endif
4211 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4212     TEST_c_c (casinh, 0x1p-106L, 0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4213     TEST_c_c (casinh, 0x1p-106L, -0x1.000000000000000000000000008p0L, 2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4214     TEST_c_c (casinh, -0x1p-106L, 0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, 1.570796326794896565289107467733682961928L),
4215     TEST_c_c (casinh, -0x1p-106L, -0x1.000000000000000000000000008p0L, -2.285028863093221674154232933662774454211e-16L, -1.570796326794896565289107467733682961928L),
4216     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1p-106L, 8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4217     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1p-106L, -8.813735870195430252326093249798097405561e-1L, 8.715763992105246878957416200936726072500e-33L),
4218     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1p-106L, 8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4219     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1p-106L, -8.813735870195430252326093249798097405561e-1L, -8.715763992105246878957416200936726072500e-33L),
4220     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4221     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4222     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4223     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4224     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4225     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, 3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4226     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0x1.fp-1025L, 8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4227     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0x1.fp-1025L, -8.813735870195430252326093249798097405561e-1L, -3.810492908885321743133304375216570658278e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4228     TEST_c_c (casinh, 0.0L, 0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4229     TEST_c_c (casinh, 0.0L, -0x1.000000000000000000000000008p0L, 2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4230     TEST_c_c (casinh, -0.0L, 0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, 1.570796326794896619231321691639751442099L),
4231     TEST_c_c (casinh, -0.0L, -0x1.000000000000000000000000008p0L, -2.220446049250313080847263336181636063482e-16L, -1.570796326794896619231321691639751442099L),
4232     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, 0.0L, 8.813735870195430252326093249798097405561e-1L, 0.0L),
4233     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, 0.0L, -8.813735870195430252326093249798097405561e-1L, 0.0L),
4234     TEST_c_c (casinh, 0x1.000000000000000000000000008p0L, -0.0L, 8.813735870195430252326093249798097405561e-1L, -0.0L),
4235     TEST_c_c (casinh, -0x1.000000000000000000000000008p0L, -0.0L, -8.813735870195430252326093249798097405561e-1L, -0.0L),
4236 #endif
4237 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4238     TEST_c_c (casinh, 0x1p-113L, 0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4239     TEST_c_c (casinh, 0x1p-113L, -0x1.0000000000000000000000000001p0L, 2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4240     TEST_c_c (casinh, -0x1p-113L, 0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, 1.570796326794896614463458507897073960405L),
4241     TEST_c_c (casinh, -0x1p-113L, -0x1.0000000000000000000000000001p0L, -2.019699255375255198156433710951064632386e-17L, -1.570796326794896614463458507897073960405L),
4242     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1p-113L, 8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4243     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1p-113L, -8.813735870195430252326093249797924452120e-1L, 6.809190618832224124185481406981900518193e-35L),
4244     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1p-113L, 8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4245     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1p-113L, -8.813735870195430252326093249797924452120e-1L, -6.809190618832224124185481406981900518193e-35L),
4246     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4247     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4248     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4249     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4250     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4251     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, 5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4252     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, 8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4253     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0x1.fp-16385L, -8.813735870195430252326093249797924452120e-1L, -5.757683115456107044131264955348448400014e-4933L, UNDERFLOW_EXCEPTION),
4254     TEST_c_c (casinh, 0.0L, 0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4255     TEST_c_c (casinh, 0.0L, -0x1.0000000000000000000000000001p0L, 1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4256     TEST_c_c (casinh, -0.0L, 0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, 1.570796326794896619231321691639751442099L),
4257     TEST_c_c (casinh, -0.0L, -0x1.0000000000000000000000000001p0L, -1.962615573354718824241727964954454332780e-17L, -1.570796326794896619231321691639751442099L),
4258     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, 0.0L, 8.813735870195430252326093249797924452120e-1L, 0.0L),
4259     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, 0.0L, -8.813735870195430252326093249797924452120e-1L, 0.0L),
4260     TEST_c_c (casinh, 0x1.0000000000000000000000000001p0L, -0.0L, 8.813735870195430252326093249797924452120e-1L, -0.0L),
4261     TEST_c_c (casinh, -0x1.0000000000000000000000000001p0L, -0.0L, -8.813735870195430252326093249797924452120e-1L, -0.0L),
4262 #endif
4263
4264     TEST_c_c (casinh, 0x1p-23L, 0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4265     TEST_c_c (casinh, 0x1p-23L, -0x0.ffffffp0L, 2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4266     TEST_c_c (casinh, -0x1p-23L, 0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, 1.570357140408705570520377172865353621698L),
4267     TEST_c_c (casinh, -0x1p-23L, -0x0.ffffffp0L, -2.714321200917194650737217746780928423385e-4L, -1.570357140408705570520377172865353621698L),
4268     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1p-23L, 8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4269     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1p-23L, -8.813735448726963984495965873956465777250e-1L, 8.429369953393598499000760938112968755257e-8L),
4270     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1p-23L, 8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4271     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1p-23L, -8.813735448726963984495965873956465777250e-1L, -8.429369953393598499000760938112968755257e-8L),
4272     TEST_c_c (casinh, 0x1.fp-129L, 0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4273     TEST_c_c (casinh, 0x1.fp-129L, -0x0.ffffffp0L, 8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4274     TEST_c_c (casinh, -0x1.fp-129L, 0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, 1.570451059810180415643718442157112705601L),
4275     TEST_c_c (casinh, -0x1.fp-129L, -0x0.ffffffp0L, -8.245504387859737323891843603996428534945e-36L, -1.570451059810180415643718442157112705601L),
4276     TEST_c_c (casinh, 0x0.ffffffp0L, 0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4277     TEST_c_c (casinh, -0x0.ffffffp0L, 0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, 2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4278     TEST_c_c (casinh, 0x0.ffffffp0L, -0x1.fp-129L, 8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4279     TEST_c_c (casinh, -0x0.ffffffp0L, -0x1.fp-129L, -8.813735448726938863015878255140556727969e-1L, -2.013062624689288675911339929224634593425e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4280     TEST_c_c (casinh, 0.0L, 0x0.ffffffp0L, 0.0L, 1.570451059810180415643718442157112705601L),
4281     TEST_c_c (casinh, 0.0L, -0x0.ffffffp0L, 0.0L, -1.570451059810180415643718442157112705601L),
4282     TEST_c_c (casinh, -0.0L, 0x0.ffffffp0L, -0.0L, 1.570451059810180415643718442157112705601L),
4283     TEST_c_c (casinh, -0.0L, -0x0.ffffffp0L, -0.0L, -1.570451059810180415643718442157112705601L),
4284     TEST_c_c (casinh, 0x0.ffffffp0L, 0.0L, 8.813735448726938863015878255140556727969e-1L, 0.0L),
4285     TEST_c_c (casinh, -0x0.ffffffp0L, 0.0L, -8.813735448726938863015878255140556727969e-1L, 0.0L),
4286     TEST_c_c (casinh, 0x0.ffffffp0L, -0.0L, 8.813735448726938863015878255140556727969e-1L, -0.0L),
4287     TEST_c_c (casinh, -0x0.ffffffp0L, -0.0L, -8.813735448726938863015878255140556727969e-1L, -0.0L),
4288     TEST_c_c (casinh, 0x1p-23L, 0.5L, 1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4289     TEST_c_c (casinh, 0x1p-23L, -0.5L, 1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4290     TEST_c_c (casinh, -0x1p-23L, 0.5L, -1.376510308240943236356088341381173571841e-7L, 5.235987755982934033165770729745469098254e-1L),
4291     TEST_c_c (casinh, -0x1p-23L, -0.5L, -1.376510308240943236356088341381173571841e-7L, -5.235987755982934033165770729745469098254e-1L),
4292     TEST_c_c (casinh, 0.5L, 0x1p-23L, 4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4293     TEST_c_c (casinh, -0.5L, 0x1p-23L, -4.812118250596059896127318386463676808798e-1L, 1.066240299940009780479664302917201696886e-7L),
4294     TEST_c_c (casinh, 0.5L, -0x1p-23L, 4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4295     TEST_c_c (casinh, -0.5L, -0x1p-23L, -4.812118250596059896127318386463676808798e-1L, -1.066240299940009780479664302917201696886e-7L),
4296     TEST_c_c (casinh, 0x1.fp-129L, 0.5L, 3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4297     TEST_c_c (casinh, 0x1.fp-129L, -0.5L, 3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4298     TEST_c_c (casinh, -0x1.fp-129L, 0.5L, -3.287317402534702257036015056278368274737e-39L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4299     TEST_c_c (casinh, -0x1.fp-129L, -0.5L, -3.287317402534702257036015056278368274737e-39L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_FLOAT),
4300     TEST_c_c (casinh, 0.5L, 0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4301     TEST_c_c (casinh, -0.5L, 0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, 2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4302     TEST_c_c (casinh, 0.5L, -0x1.fp-129L, 4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4303     TEST_c_c (casinh, -0.5L, -0x1.fp-129L, -4.812118250596034474977589134243684231352e-1L, -2.546345110742945032959687790021055102355e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4304     TEST_c_c (casinh, 0x1p-23L, 0x1p-23L, 1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4305     TEST_c_c (casinh, 0x1p-23L, -0x1p-23L, 1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4306     TEST_c_c (casinh, -0x1p-23L, 0x1p-23L, -1.192092895507818146886315028596704749235e-7L, 1.192092895507806853113684971258850504935e-7L),
4307     TEST_c_c (casinh, -0x1p-23L, -0x1p-23L, -1.192092895507818146886315028596704749235e-7L, -1.192092895507806853113684971258850504935e-7L),
4308     TEST_c_c (casinh, 0x1.fp-129L, 0x1p-23L, 2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4309     TEST_c_c (casinh, 0x1.fp-129L, -0x1p-23L, 2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4310     TEST_c_c (casinh, -0x1.fp-129L, 0x1p-23L, -2.846900380897747786805634596726756660388e-39L, 1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4311     TEST_c_c (casinh, -0x1.fp-129L, -0x1p-23L, -2.846900380897747786805634596726756660388e-39L, -1.192092895507815323443157514352519154304e-7L, UNDERFLOW_EXCEPTION_FLOAT),
4312     /* Bug 15319: underflow exception may be missing.  */
4313     TEST_c_c (casinh, 0x1p-23L, 0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4314     TEST_c_c (casinh, -0x1p-23L, 0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, 2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4315     TEST_c_c (casinh, 0x1p-23L, -0x1.fp-129L, 1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4316     TEST_c_c (casinh, -0x1p-23L, -0x1.fp-129L, -1.192092895507809676556842485683592032154e-7L, -2.846900380897707329917933005874691056564e-39L, UNDERFLOW_EXCEPTION_OK_FLOAT),
4317     TEST_c_c (casinh, 0.0L, 0x1p-23L, 0.0L, 1.192092895507815323443157514352519154304e-7L),
4318     TEST_c_c (casinh, 0.0L, -0x1p-23L, 0.0L, -1.192092895507815323443157514352519154304e-7L),
4319     TEST_c_c (casinh, -0.0L, 0x1p-23L, -0.0L, 1.192092895507815323443157514352519154304e-7L),
4320     TEST_c_c (casinh, -0.0L, -0x1p-23L, -0.0L, -1.192092895507815323443157514352519154304e-7L),
4321     TEST_c_c (casinh, 0x1p-23L, 0.0L, 1.192092895507809676556842485683592032154e-7L, 0.0L),
4322     TEST_c_c (casinh, -0x1p-23L, 0.0L, -1.192092895507809676556842485683592032154e-7L, 0.0L),
4323     TEST_c_c (casinh, 0x1p-23L, -0.0L, 1.192092895507809676556842485683592032154e-7L, -0.0L),
4324     TEST_c_c (casinh, -0x1p-23L, -0.0L, -1.192092895507809676556842485683592032154e-7L, -0.0L),
4325     TEST_c_c (casinh, 0x1.fp-129L, 0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4326     TEST_c_c (casinh, 0x1.fp-129L, -0x1.fp-129L, 2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4327     TEST_c_c (casinh, -0x1.fp-129L, 0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, 2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4328     TEST_c_c (casinh, -0x1.fp-129L, -0x1.fp-129L, -2.846900380897727558361783801085126250967e-39L, -2.846900380897727558361783801085126250967e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4329 #ifndef TEST_FLOAT
4330     TEST_c_c (casinh, 0x1p-52L, 0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4331     TEST_c_c (casinh, 0x1p-52L, -0x0.fffffffffffff8p0L, 1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4332     TEST_c_c (casinh, -0x1p-52L, 0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, 1.570796307840326780080580569360500172043L),
4333     TEST_c_c (casinh, -0x1p-52L, -0x0.fffffffffffff8p0L, -1.171456840272878582596796205397918831268e-8L, -1.570796307840326780080580569360500172043L),
4334     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1p-52L, 8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4335     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1p-52L, -8.813735870195429467279863907910458761820e-1L, 1.570092458683775146551022293016031474627e-16L),
4336     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1p-52L, 8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4337     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1p-52L, -8.813735870195429467279863907910458761820e-1L, -1.570092458683775146551022293016031474627e-16L),
4338     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4339     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.fffffffffffff8p0L, 3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4340     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, 1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4341     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.fffffffffffff8p0L, -3.616396521699973256461764099945789620604e-301L, -1.570796311893735425383665303776316016594L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4342     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4343     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, 3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4344     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0x1.fp-1025L, 8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4345     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0x1.fp-1025L, -8.813735870195429467279863907910371604180e-1L, -3.810492908885321954658152505985270452320e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4346     TEST_c_c (casinh, 0.0L, 0x0.fffffffffffff8p0L, 0.0L, 1.570796311893735425383665303776316016594L),
4347     TEST_c_c (casinh, 0.0L, -0x0.fffffffffffff8p0L, 0.0L, -1.570796311893735425383665303776316016594L),
4348     TEST_c_c (casinh, -0.0L, 0x0.fffffffffffff8p0L, -0.0L, 1.570796311893735425383665303776316016594L),
4349     TEST_c_c (casinh, -0.0L, -0x0.fffffffffffff8p0L, -0.0L, -1.570796311893735425383665303776316016594L),
4350     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, 0.0L, 8.813735870195429467279863907910371604180e-1L, 0.0L),
4351     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, 0.0L, -8.813735870195429467279863907910371604180e-1L, 0.0L),
4352     TEST_c_c (casinh, 0x0.fffffffffffff8p0L, -0.0L, 8.813735870195429467279863907910371604180e-1L, -0.0L),
4353     TEST_c_c (casinh, -0x0.fffffffffffff8p0L, -0.0L, -8.813735870195429467279863907910371604180e-1L, -0.0L),
4354 #endif
4355     TEST_c_c (casinh, 0x1p-52L, 0.5L, 2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4356     TEST_c_c (casinh, 0x1p-52L, -0.5L, 2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4357     TEST_c_c (casinh, -0x1p-52L, 0.5L, -2.563950248511418570403591756798643804971e-16L, 5.235987755982988730771072305465648369889e-1L),
4358     TEST_c_c (casinh, -0x1p-52L, -0.5L, -2.563950248511418570403591756798643804971e-16L, -5.235987755982988730771072305465648369889e-1L),
4359     TEST_c_c (casinh, 0.5L, 0x1p-52L, 4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4360     TEST_c_c (casinh, -0.5L, 0x1p-52L, -4.812118250596034474977589134243772428682e-1L, 1.986027322597818397661816253158024383707e-16L),
4361     TEST_c_c (casinh, 0.5L, -0x1p-52L, 4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4362     TEST_c_c (casinh, -0.5L, -0x1p-52L, -4.812118250596034474977589134243772428682e-1L, -1.986027322597818397661816253158024383707e-16L),
4363 #ifndef TEST_FLOAT
4364     TEST_c_c (casinh, 0x1.fp-1025L, 0.5L, 6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4365     TEST_c_c (casinh, 0x1.fp-1025L, -0.5L, 6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4366     TEST_c_c (casinh, -0x1.fp-1025L, 0.5L, -6.222508863508420569166420770843207333493e-309L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4367     TEST_c_c (casinh, -0x1.fp-1025L, -0.5L, -6.222508863508420569166420770843207333493e-309L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
4368     TEST_c_c (casinh, 0.5L, 0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4369     TEST_c_c (casinh, -0.5L, 0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, 4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4370     TEST_c_c (casinh, 0.5L, -0x1.fp-1025L, 4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4371     TEST_c_c (casinh, -0.5L, -0x1.fp-1025L, -4.812118250596034474977589134243684231352e-1L, -4.819934639999230680322935210539402497827e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4372 #endif
4373     TEST_c_c (casinh, 0x1p-52L, 0x1p-52L, 2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4374     TEST_c_c (casinh, 0x1p-52L, -0x1p-52L, 2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4375     TEST_c_c (casinh, -0x1p-52L, 0x1p-52L, -2.220446049250313080847263336181677117148e-16L, 2.220446049250313080847263336181604132852e-16L),
4376     TEST_c_c (casinh, -0x1p-52L, -0x1p-52L, -2.220446049250313080847263336181677117148e-16L, -2.220446049250313080847263336181604132852e-16L),
4377 #ifndef TEST_FLOAT
4378     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-52L, 5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4379     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-52L, 5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4380     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-52L, -5.388850751072128349671657362289548938458e-309L, 2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4381     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-52L, -5.388850751072128349671657362289548938458e-309L, -2.220446049250313080847263336181658871074e-16L, UNDERFLOW_EXCEPTION_DOUBLE),
4382     /* Bug 15319: underflow exception may be missing.  */
4383     TEST_c_c (casinh, 0x1p-52L, 0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4384     TEST_c_c (casinh, -0x1p-52L, 0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, 5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4385     TEST_c_c (casinh, 0x1p-52L, -0x1.fp-1025L, 2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4386     TEST_c_c (casinh, -0x1p-52L, -0x1.fp-1025L, -2.220446049250313080847263336181622378926e-16L, -5.388850751072128349671657362289283247603e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4387 #endif
4388     TEST_c_c (casinh, 0.0L, 0x1p-52L, 0.0L, 2.220446049250313080847263336181658871074e-16L),
4389     TEST_c_c (casinh, 0.0L, -0x1p-52L, 0.0L, -2.220446049250313080847263336181658871074e-16L),
4390     TEST_c_c (casinh, -0.0L, 0x1p-52L, -0.0L, 2.220446049250313080847263336181658871074e-16L),
4391     TEST_c_c (casinh, -0.0L, -0x1p-52L, -0.0L, -2.220446049250313080847263336181658871074e-16L),
4392     TEST_c_c (casinh, 0x1p-52L, 0.0L, 2.220446049250313080847263336181622378926e-16L, 0.0L),
4393     TEST_c_c (casinh, -0x1p-52L, 0.0L, -2.220446049250313080847263336181622378926e-16L, 0.0L),
4394     TEST_c_c (casinh, 0x1p-52L, -0.0L, 2.220446049250313080847263336181622378926e-16L, -0.0L),
4395     TEST_c_c (casinh, -0x1p-52L, -0.0L, -2.220446049250313080847263336181622378926e-16L, -0.0L),
4396 #ifndef TEST_FLOAT
4397     TEST_c_c (casinh, 0x1.fp-1025L, 0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4398     TEST_c_c (casinh, 0x1.fp-1025L, -0x1.fp-1025L, 5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4399     TEST_c_c (casinh, -0x1.fp-1025L, 0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4400     TEST_c_c (casinh, -0x1.fp-1025L, -0x1.fp-1025L, -5.388850751072128349671657362289416093031e-309L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4401 #endif
4402 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4403     TEST_c_c (casinh, 0x1p-63L, 0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4404     TEST_c_c (casinh, 0x1p-63L, -0x0.ffffffffffffffffp0L, 2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4405     TEST_c_c (casinh, -0x1p-63L, 0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, 1.570796326376055842114524927965556247908L),
4406     TEST_c_c (casinh, -0x1p-63L, -0x0.ffffffffffffffffp0L, -2.588578361325995866221775673638805081337e-10L, -1.570796326376055842114524927965556247908L),
4407     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1p-63L, 8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4408     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1p-63L, -8.813735870195430251942769895627079569937e-1L, 7.666467083416870407402049869781566856442e-20L),
4409     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1p-63L, 8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4410     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1p-63L, -8.813735870195430251942769895627079569937e-1L, -7.666467083416870407402049869781566856442e-20L),
4411 # if LDBL_MIN_EXP <= -16381
4412     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4413     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffp0L, 2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4414     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, 1.570796326465624365239962068302568888898L),
4415     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffp0L, -2.472906068161537187835415298076415423459e-4923L, -1.570796326465624365239962068302568888898L),
4416     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4417     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, 5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4418     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0x1.fp-16385L, 8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4419     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0x1.fp-16385L, -8.813735870195430251942769895627079569917e-1L, -5.757683115456107044287327268904964422212e-4933L, UNDERFLOW_EXCEPTION),
4420 # endif
4421     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffp0L, 0.0L, 1.570796326465624365239962068302568888898L),
4422     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffp0L, 0.0L, -1.570796326465624365239962068302568888898L),
4423     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffp0L, -0.0L, 1.570796326465624365239962068302568888898L),
4424     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffp0L, -0.0L, -1.570796326465624365239962068302568888898L),
4425     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, 0.0L, 8.813735870195430251942769895627079569917e-1L, 0.0L),
4426     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, 0.0L, -8.813735870195430251942769895627079569917e-1L, 0.0L),
4427     TEST_c_c (casinh, 0x0.ffffffffffffffffp0L, -0.0L, 8.813735870195430251942769895627079569917e-1L, -0.0L),
4428     TEST_c_c (casinh, -0x0.ffffffffffffffffp0L, -0.0L, -8.813735870195430251942769895627079569917e-1L, -0.0L),
4429 #endif
4430     TEST_c_c (casinh, 0x1p-63L, 0.5L, 1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4431     TEST_c_c (casinh, 0x1p-63L, -0.5L, 1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4432     TEST_c_c (casinh, -0x1p-63L, 0.5L, -1.251928832280966098829878787499365228659e-19L, 5.235987755982988730771072305465838140283e-1L),
4433     TEST_c_c (casinh, -0x1p-63L, -0.5L, -1.251928832280966098829878787499365228659e-19L, -5.235987755982988730771072305465838140283e-1L),
4434     TEST_c_c (casinh, 0.5L, 0x1p-63L, 4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4435     TEST_c_c (casinh, -0.5L, 0x1p-63L, -4.812118250596034474977589134243684231373e-1L, 9.697399036122160144833087173623140436413e-20L),
4436     TEST_c_c (casinh, 0.5L, -0x1p-63L, 4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4437     TEST_c_c (casinh, -0.5L, -0x1p-63L, -4.812118250596034474977589134243684231373e-1L, -9.697399036122160144833087173623140436413e-20L),
4438 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4439     TEST_c_c (casinh, 0x1.fp-16385L, 0.5L, 9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4440     TEST_c_c (casinh, 0x1.fp-16385L, -0.5L, 9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4441     TEST_c_c (casinh, -0x1.fp-16385L, 0.5L, -9.402257155670418112159334875199821342890e-4933L, 5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4442     TEST_c_c (casinh, -0x1.fp-16385L, -0.5L, -9.402257155670418112159334875199821342890e-4933L, -5.235987755982988730771072305465838140329e-1L, UNDERFLOW_EXCEPTION),
4443     TEST_c_c (casinh, 0.5L, 0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4444     TEST_c_c (casinh, -0.5L, 0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, 7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4445     TEST_c_c (casinh, 0.5L, -0x1.fp-16385L, 4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4446     TEST_c_c (casinh, -0.5L, -0x1.fp-16385L, -4.812118250596034474977589134243684231352e-1L, -7.282957076134209141226696333885150260319e-4933L, UNDERFLOW_EXCEPTION),
4447 #endif
4448     TEST_c_c (casinh, 0x1p-63L, 0x1p-63L, 1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4449     TEST_c_c (casinh, 0x1p-63L, -0x1p-63L, 1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4450     TEST_c_c (casinh, -0x1p-63L, 0x1p-63L, -1.084202172485504434007452800869941711430e-19L, 1.084202172485504434007452800869941711422e-19L),
4451     TEST_c_c (casinh, -0x1p-63L, -0x1p-63L, -1.084202172485504434007452800869941711430e-19L, -1.084202172485504434007452800869941711422e-19L),
4452 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4453     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4454     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-63L, 8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4455     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, 1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4456     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-63L, -8.142593549724601460479922838826119584465e-4933L, -1.084202172485504434007452800869941711428e-19L, UNDERFLOW_EXCEPTION),
4457     TEST_c_c (casinh, 0x1p-63L, 0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4458     TEST_c_c (casinh, -0x1p-63L, 0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, 8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4459     TEST_c_c (casinh, 0x1p-63L, -0x1.fp-16385L, 1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4460     TEST_c_c (casinh, -0x1p-63L, -0x1.fp-16385L, -1.084202172485504434007452800869941711424e-19L, -8.142593549724601460479922838826119584369e-4933L, UNDERFLOW_EXCEPTION),
4461 #endif
4462     TEST_c_c (casinh, 0.0L, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711428e-19L),
4463     TEST_c_c (casinh, 0.0L, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711428e-19L),
4464     TEST_c_c (casinh, -0.0L, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711428e-19L),
4465     TEST_c_c (casinh, -0.0L, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711428e-19L),
4466     TEST_c_c (casinh, 0x1p-63L, 0.0L, 1.084202172485504434007452800869941711424e-19L, 0.0L),
4467     TEST_c_c (casinh, -0x1p-63L, 0.0L, -1.084202172485504434007452800869941711424e-19L, 0.0L),
4468     TEST_c_c (casinh, 0x1p-63L, -0.0L, 1.084202172485504434007452800869941711424e-19L, -0.0L),
4469     TEST_c_c (casinh, -0x1p-63L, -0.0L, -1.084202172485504434007452800869941711424e-19L, -0.0L),
4470 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4471     TEST_c_c (casinh, 0x1.fp-16385L, 0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4472     TEST_c_c (casinh, 0x1.fp-16385L, -0x1.fp-16385L, 8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4473     TEST_c_c (casinh, -0x1.fp-16385L, 0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4474     TEST_c_c (casinh, -0x1.fp-16385L, -0x1.fp-16385L, -8.142593549724601460479922838826119584417e-4933L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4475 #endif
4476 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4477     TEST_c_c (casinh, 0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4478     TEST_c_c (casinh, 0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, 1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4479     TEST_c_c (casinh, -0x1p-105L, 0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, 1.570796326794896419512475791677915736035L),
4480     TEST_c_c (casinh, -0x1p-105L, -0x0.ffffffffffffffffffffffffffcp0L, -1.234330349600789959989661887846005659983e-16L, -1.570796326794896419512475791677915736035L),
4481     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, 8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4482     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-105L, -8.813735870195430252326093249797835932642e-1L, 1.743152798421049375791483240187377443526e-32L),
4483     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, 8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4484     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-105L, -8.813735870195430252326093249797835932642e-1L, -1.743152798421049375791483240187377443526e-32L),
4485     TEST_c_c (casinh, 0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4486     TEST_c_c (casinh, 0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, 3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4487     TEST_c_c (casinh, -0x1.fp-1025L, 0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, 1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4488     TEST_c_c (casinh, -0x1.fp-1025L, -0x0.ffffffffffffffffffffffffffcp0L, -3.432186888910770473784103112009399360940e-293L, -1.570796326794896462222075823262245502760L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4489     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4490     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, 3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4491     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, 8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4492     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1.fp-1025L, -8.813735870195430252326093249797835932642e-1L, -3.810492908885321743133304375216641110205e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4493     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 1.570796326794896462222075823262245502760L),
4494     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -1.570796326794896462222075823262245502760L),
4495     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 1.570796326794896462222075823262245502760L),
4496     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -1.570796326794896462222075823262245502760L),
4497     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, 0.0L, 8.813735870195430252326093249797835932642e-1L, 0.0L),
4498     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, 0.0L, -8.813735870195430252326093249797835932642e-1L, 0.0L),
4499     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffcp0L, -0.0L, 8.813735870195430252326093249797835932642e-1L, -0.0L),
4500     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffcp0L, -0.0L, -8.813735870195430252326093249797835932642e-1L, -0.0L),
4501 #endif
4502     TEST_c_c (casinh, 0x1p-105L, 0.5L, 2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4503     TEST_c_c (casinh, 0x1p-105L, -0.5L, 2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4504     TEST_c_c (casinh, -0x1p-105L, 0.5L, -2.846556599890768890940941645338546615370e-32L, 5.235987755982988730771072305465838140329e-1L),
4505     TEST_c_c (casinh, -0x1p-105L, -0.5L, -2.846556599890768890940941645338546615370e-32L, -5.235987755982988730771072305465838140329e-1L),
4506     TEST_c_c (casinh, 0.5L, 0x1p-105L, 4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4507     TEST_c_c (casinh, -0.5L, 0x1p-105L, -4.812118250596034474977589134243684231352e-1L, 2.204933261082751447436996198490110245167e-32L),
4508     TEST_c_c (casinh, 0.5L, -0x1p-105L, 4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4509     TEST_c_c (casinh, -0.5L, -0x1p-105L, -4.812118250596034474977589134243684231352e-1L, -2.204933261082751447436996198490110245167e-32L),
4510     TEST_c_c (casinh, 0x1p-105L, 0x1p-105L, 2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4511     TEST_c_c (casinh, 0x1p-105L, -0x1p-105L, 2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4512     TEST_c_c (casinh, -0x1p-105L, 0x1p-105L, -2.465190328815661891911651766508706967729e-32L, 2.465190328815661891911651766508706967729e-32L),
4513     TEST_c_c (casinh, -0x1p-105L, -0x1p-105L, -2.465190328815661891911651766508706967729e-32L, -2.465190328815661891911651766508706967729e-32L),
4514 #ifndef TEST_FLOAT
4515     TEST_c_c (casinh, 0x1.fp-1025L, 0x1p-105L, 5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4516     TEST_c_c (casinh, 0x1.fp-1025L, -0x1p-105L, 5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4517     TEST_c_c (casinh, -0x1.fp-1025L, 0x1p-105L, -5.388850751072128349671657362289416093031e-309L, 2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4518     TEST_c_c (casinh, -0x1.fp-1025L, -0x1p-105L, -5.388850751072128349671657362289416093031e-309L, -2.465190328815661891911651766508706967729e-32L, UNDERFLOW_EXCEPTION_DOUBLE),
4519     /* Bug 15319: underflow exception may be missing.  */
4520     TEST_c_c (casinh, 0x1p-105L, 0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4521     TEST_c_c (casinh, -0x1p-105L, 0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, 5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4522     TEST_c_c (casinh, 0x1p-105L, -0x1.fp-1025L, 2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4523     TEST_c_c (casinh, -0x1p-105L, -0x1.fp-1025L, -2.465190328815661891911651766508706967729e-32L, -5.388850751072128349671657362289416093031e-309L, UNDERFLOW_EXCEPTION_OK_DOUBLE),
4524 #endif
4525     TEST_c_c (casinh, 0.0L, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L),
4526     TEST_c_c (casinh, 0.0L, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L),
4527     TEST_c_c (casinh, -0.0L, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L),
4528     TEST_c_c (casinh, -0.0L, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L),
4529     TEST_c_c (casinh, 0x1p-105L, 0.0L, 2.465190328815661891911651766508706967729e-32L, 0.0L),
4530     TEST_c_c (casinh, -0x1p-105L, 0.0L, -2.465190328815661891911651766508706967729e-32L, 0.0L),
4531     TEST_c_c (casinh, 0x1p-105L, -0.0L, 2.465190328815661891911651766508706967729e-32L, -0.0L),
4532     TEST_c_c (casinh, -0x1p-105L, -0.0L, -2.465190328815661891911651766508706967729e-32L, -0.0L),
4533 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4534     TEST_c_c (casinh, 0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4535     TEST_c_c (casinh, 0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4536     TEST_c_c (casinh, -0x1p-112L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, 1.570796326794896601578502908312986698624L),
4537     TEST_c_c (casinh, -0x1p-112L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.091004200533850618345330909857103457781e-17L, -1.570796326794896601578502908312986698624L),
4538     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, 8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4539     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-112L, -8.813735870195430252326093249797922409363e-1L, 1.361838123766444824837096281396380300349e-34L),
4540     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, 8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4541     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-112L, -8.813735870195430252326093249797922409363e-1L, -1.361838123766444824837096281396380300349e-34L),
4542     TEST_c_c (casinh, 0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4543     TEST_c_c (casinh, 0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, 5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4544     TEST_c_c (casinh, -0x1.fp-16385L, 0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, 1.570796326794896605353533883825294686803L),
4545     TEST_c_c (casinh, -0x1.fp-16385L, -0x0.ffffffffffffffffffffffffffff8p0L, -5.867357004219059108790368268900490184505e-4916L, -1.570796326794896605353533883825294686803L),
4546     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4547     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, 5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4548     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, 8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4549     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1.fp-16385L, -8.813735870195430252326093249797922409363e-1L, -5.757683115456107044131264955348449231681e-4933L, UNDERFLOW_EXCEPTION),
4550     TEST_c_c (casinh, 0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 1.570796326794896605353533883825294686803L),
4551     TEST_c_c (casinh, 0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -1.570796326794896605353533883825294686803L),
4552     TEST_c_c (casinh, -0.0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 1.570796326794896605353533883825294686803L),
4553     TEST_c_c (casinh, -0.0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -1.570796326794896605353533883825294686803L),
4554     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, 8.813735870195430252326093249797922409363e-1L, 0.0L),
4555     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, 0.0L, -8.813735870195430252326093249797922409363e-1L, 0.0L),
4556     TEST_c_c (casinh, 0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, 8.813735870195430252326093249797922409363e-1L, -0.0L),
4557     TEST_c_c (casinh, -0x0.ffffffffffffffffffffffffffff8p0L, -0.0L, -8.813735870195430252326093249797922409363e-1L, -0.0L),
4558 #endif
4559     TEST_c_c (casinh, 0x1p-112L, 0.5L, 2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4560     TEST_c_c (casinh, 0x1p-112L, -0.5L, 2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4561     TEST_c_c (casinh, -0x1p-112L, 0.5L, -2.223872343664663196047610660420739543258e-34L, 5.235987755982988730771072305465838140329e-1L),
4562     TEST_c_c (casinh, -0x1p-112L, -0.5L, -2.223872343664663196047610660420739543258e-34L, -5.235987755982988730771072305465838140329e-1L),
4563     TEST_c_c (casinh, 0.5L, 0x1p-112L, 4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4564     TEST_c_c (casinh, -0.5L, 0x1p-112L, -4.812118250596034474977589134243684231352e-1L, 1.722604110220899568310153280070398629037e-34L),
4565     TEST_c_c (casinh, 0.5L, -0x1p-112L, 4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4566     TEST_c_c (casinh, -0.5L, -0x1p-112L, -4.812118250596034474977589134243684231352e-1L, -1.722604110220899568310153280070398629037e-34L),
4567     TEST_c_c (casinh, 0x1p-112L, 0x1p-112L, 1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4568     TEST_c_c (casinh, 0x1p-112L, -0x1p-112L, 1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4569     TEST_c_c (casinh, -0x1p-112L, 0x1p-112L, -1.925929944387235853055977942584927318538e-34L, 1.925929944387235853055977942584927318538e-34L),
4570     TEST_c_c (casinh, -0x1p-112L, -0x1p-112L, -1.925929944387235853055977942584927318538e-34L, -1.925929944387235853055977942584927318538e-34L),
4571 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
4572     TEST_c_c (casinh, 0x1.fp-16385L, 0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4573     TEST_c_c (casinh, 0x1.fp-16385L, -0x1p-112L, 8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4574     TEST_c_c (casinh, -0x1.fp-16385L, 0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, 1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4575     TEST_c_c (casinh, -0x1.fp-16385L, -0x1p-112L, -8.142593549724601460479922838826119584417e-4933L, -1.925929944387235853055977942584927318538e-34L, UNDERFLOW_EXCEPTION),
4576     TEST_c_c (casinh, 0x1p-112L, 0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4577     TEST_c_c (casinh, -0x1p-112L, 0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, 8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4578     TEST_c_c (casinh, 0x1p-112L, -0x1.fp-16385L, 1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4579     TEST_c_c (casinh, -0x1p-112L, -0x1.fp-16385L, -1.925929944387235853055977942584927318538e-34L, -8.142593549724601460479922838826119584417e-4933L, UNDERFLOW_EXCEPTION),
4580 #endif
4581     TEST_c_c (casinh, 0.0L, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L),
4582     TEST_c_c (casinh, 0.0L, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L),
4583     TEST_c_c (casinh, -0.0L, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L),
4584     TEST_c_c (casinh, -0.0L, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L),
4585     TEST_c_c (casinh, 0x1p-112L, 0.0L, 1.925929944387235853055977942584927318538e-34L, 0.0L),
4586     TEST_c_c (casinh, -0x1p-112L, 0.0L, -1.925929944387235853055977942584927318538e-34L, 0.0L),
4587     TEST_c_c (casinh, 0x1p-112L, -0.0L, 1.925929944387235853055977942584927318538e-34L, -0.0L),
4588     TEST_c_c (casinh, -0x1p-112L, -0.0L, -1.925929944387235853055977942584927318538e-34L, -0.0L),
4589
4590     TEST_c_c (casinh, 0.75L, 1.25L, 1.03171853444778027336364058631006594L, 0.911738290968487636358489564316731207L),
4591     TEST_c_c (casinh, -2, -3, -1.9686379257930962917886650952454982L, -0.96465850440760279204541105949953237L),
4592     END_DATA (casinh)
4593   };
4594
4595 static void
4596 casinh_test (void)
4597 {
4598   errno = 0;
4599   FUNC(casinh) (BUILD_COMPLEX (0.7L, 1.2L));
4600   if (errno == ENOSYS)
4601     /* Function not implemented.  */
4602     return;
4603
4604   START (casinh);
4605   RUN_TEST_LOOP_c_c (casinh, casinh_test_data, );
4606   END (casinh, complex);
4607 }
4608
4609
4610 static const struct test_c_c_data catan_test_data[] =
4611   {
4612     START_DATA (catan),
4613     TEST_c_c (catan, 0, 0, 0, 0),
4614     TEST_c_c (catan, minus_zero, 0, minus_zero, 0),
4615     TEST_c_c (catan, 0, minus_zero, 0, minus_zero),
4616     TEST_c_c (catan, minus_zero, minus_zero, minus_zero, minus_zero),
4617
4618     TEST_c_c (catan, 1.0L, plus_zero, M_PI_4l, plus_zero),
4619     TEST_c_c (catan, 1.0L, minus_zero, M_PI_4l, minus_zero),
4620     TEST_c_c (catan, -1.0L, plus_zero, -M_PI_4l, plus_zero),
4621     TEST_c_c (catan, -1.0L, minus_zero, -M_PI_4l, minus_zero),
4622     TEST_c_c (catan, plus_zero, 1.0L, plus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4623     TEST_c_c (catan, minus_zero, 1.0L, minus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4624     TEST_c_c (catan, plus_zero, -1.0L, plus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4625     TEST_c_c (catan, minus_zero, -1.0L, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
4626
4627     TEST_c_c (catan, plus_infty, plus_infty, M_PI_2l, 0),
4628     TEST_c_c (catan, plus_infty, minus_infty, M_PI_2l, minus_zero),
4629     TEST_c_c (catan, minus_infty, plus_infty, -M_PI_2l, 0),
4630     TEST_c_c (catan, minus_infty, minus_infty, -M_PI_2l, minus_zero),
4631
4632
4633     TEST_c_c (catan, plus_infty, -10.0, M_PI_2l, minus_zero),
4634     TEST_c_c (catan, minus_infty, -10.0, -M_PI_2l, minus_zero),
4635     TEST_c_c (catan, plus_infty, minus_zero, M_PI_2l, minus_zero),
4636     TEST_c_c (catan, minus_infty, minus_zero, -M_PI_2l, minus_zero),
4637     TEST_c_c (catan, plus_infty, 0.0, M_PI_2l, 0),
4638     TEST_c_c (catan, minus_infty, 0.0, -M_PI_2l, 0),
4639     TEST_c_c (catan, plus_infty, 0.1L, M_PI_2l, 0),
4640     TEST_c_c (catan, minus_infty, 0.1L, -M_PI_2l, 0),
4641
4642     TEST_c_c (catan, 0.0, minus_infty, M_PI_2l, minus_zero),
4643     TEST_c_c (catan, minus_zero, minus_infty, -M_PI_2l, minus_zero),
4644     TEST_c_c (catan, 100.0, minus_infty, M_PI_2l, minus_zero),
4645     TEST_c_c (catan, -100.0, minus_infty, -M_PI_2l, minus_zero),
4646
4647     TEST_c_c (catan, 0.0, plus_infty, M_PI_2l, 0),
4648     TEST_c_c (catan, minus_zero, plus_infty, -M_PI_2l, 0),
4649     TEST_c_c (catan, 0.5, plus_infty, M_PI_2l, 0),
4650     TEST_c_c (catan, -0.5, plus_infty, -M_PI_2l, 0),
4651
4652     TEST_c_c (catan, qnan_value, 0.0, qnan_value, 0),
4653     TEST_c_c (catan, qnan_value, minus_zero, qnan_value, minus_zero),
4654
4655     TEST_c_c (catan, qnan_value, plus_infty, qnan_value, 0),
4656     TEST_c_c (catan, qnan_value, minus_infty, qnan_value, minus_zero),
4657
4658     TEST_c_c (catan, 0.0, qnan_value, qnan_value, qnan_value),
4659     TEST_c_c (catan, minus_zero, qnan_value, qnan_value, qnan_value),
4660
4661     TEST_c_c (catan, plus_infty, qnan_value, M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4662     TEST_c_c (catan, minus_infty, qnan_value, -M_PI_2l, 0, IGNORE_ZERO_INF_SIGN),
4663
4664     TEST_c_c (catan, qnan_value, 10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4665     TEST_c_c (catan, qnan_value, -10.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4666
4667     TEST_c_c (catan, 0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4668     TEST_c_c (catan, -0.75, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
4669
4670     TEST_c_c (catan, qnan_value, qnan_value, qnan_value, qnan_value),
4671
4672     TEST_c_c (catan, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L, 0.0L),
4673     TEST_c_c (catan, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L, -0.0L),
4674     TEST_c_c (catan, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L, 0.0L),
4675     TEST_c_c (catan, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L, -0.0L),
4676     TEST_c_c (catan, 0.0L, 0x1p50L, 1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4677     TEST_c_c (catan, -0.0L, 0x1p50L, -1.570796326794896619231321691639751442099L, 8.881784197001252323389053344728897997441e-16L),
4678     TEST_c_c (catan, 0.0L, -0x1p50L, 1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4679     TEST_c_c (catan, -0.0L, -0x1p50L, -1.570796326794896619231321691639751442099L, -8.881784197001252323389053344728897997441e-16L),
4680 #ifndef TEST_FLOAT
4681     TEST_c_c (catan, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4682     TEST_c_c (catan, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4683     TEST_c_c (catan, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4684     TEST_c_c (catan, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4685     TEST_c_c (catan, 0.0L, 0x1p500L, 1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4686     TEST_c_c (catan, -0.0L, 0x1p500L, -1.570796326794896619231321691639751442099L, 3.054936363499604682051979393213617699789e-151L),
4687     TEST_c_c (catan, 0.0L, -0x1p500L, 1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4688     TEST_c_c (catan, -0.0L, -0x1p500L, -1.570796326794896619231321691639751442099L, -3.054936363499604682051979393213617699789e-151L),
4689 #endif
4690 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4691     TEST_c_c (catan, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4692     TEST_c_c (catan, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4693     TEST_c_c (catan, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4694     TEST_c_c (catan, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4695     TEST_c_c (catan, 0.0L, 0x1p5000L, 1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4696     TEST_c_c (catan, -0.0L, 0x1p5000L, -1.570796326794896619231321691639751442099L, 7.079811261048172892385615158694057552948e-1506L),
4697     TEST_c_c (catan, 0.0L, -0x1p5000L, 1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4698     TEST_c_c (catan, -0.0L, -0x1p5000L, -1.570796326794896619231321691639751442099L, -7.079811261048172892385615158694057552948e-1506L),
4699 #endif
4700     TEST_c_c (catan, 0x1p63L, 0.5L, 1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4701     TEST_c_c (catan, 0x1p63L, -0.5L, 1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4702     TEST_c_c (catan, -0x1p63L, 0.5L, -1.570796326794896619122901474391200998698L, 5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4703     TEST_c_c (catan, -0x1p63L, -0.5L, -1.570796326794896619122901474391200998698L, -5.877471754111437539843682686111228389007e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4704     TEST_c_c (catan, 0.5L, 0x1p63L, 1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4705     TEST_c_c (catan, -0.5L, 0x1p63L, -1.570796326794896619231321691639751442093L, 1.084202172485504434007452800869941711427e-19L),
4706     TEST_c_c (catan, 0.5L, -0x1p63L, 1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4707     TEST_c_c (catan, -0.5L, -0x1p63L, -1.570796326794896619231321691639751442093L, -1.084202172485504434007452800869941711427e-19L),
4708 #ifndef TEST_FLOAT
4709     TEST_c_c (catan, 0x1p511L, 0.5L, 1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4710     TEST_c_c (catan, 0x1p511L, -0.5L, 1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4711     TEST_c_c (catan, -0x1p511L, 0.5L, -1.570796326794896619231321691639751442099L, 1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4712     TEST_c_c (catan, -0x1p511L, -0.5L, -1.570796326794896619231321691639751442099L, -1.112536929253600691545116358666202032110e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4713     TEST_c_c (catan, 0.5L, 0x1p511L, 1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4714     TEST_c_c (catan, -0.5L, 0x1p511L, -1.570796326794896619231321691639751442099L, 1.491668146240041348658193063092586767475e-154L),
4715     TEST_c_c (catan, 0.5L, -0x1p511L, 1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4716     TEST_c_c (catan, -0.5L, -0x1p511L, -1.570796326794896619231321691639751442099L, -1.491668146240041348658193063092586767475e-154L),
4717 #endif
4718 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4719     TEST_c_c (catan, 0x1p8191L, 0.5L, 1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4720     TEST_c_c (catan, 0x1p8191L, -0.5L, 1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4721     TEST_c_c (catan, -0x1p8191L, 0.5L, -1.570796326794896619231321691639751442099L, 1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4722     TEST_c_c (catan, -0x1p8191L, -0.5L, -1.570796326794896619231321691639751442099L, -1.681051571556046753131338908660876301299e-4932L, UNDERFLOW_EXCEPTION),
4723     TEST_c_c (catan, 0.5L, 0x1p8191L, 1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4724     TEST_c_c (catan, -0.5L, 0x1p8191L, -1.570796326794896619231321691639751442099L, 1.833603867554847165621412392048483165956e-2466L),
4725     TEST_c_c (catan, 0.5L, -0x1p8191L, 1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4726     TEST_c_c (catan, -0.5L, -0x1p8191L, -1.570796326794896619231321691639751442099L, -1.833603867554847165621412392048483165956e-2466L),
4727 #endif
4728     TEST_c_c (catan, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L, 0.0L),
4729     TEST_c_c (catan, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L, -0.0L),
4730     TEST_c_c (catan, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L, 0.0L),
4731     TEST_c_c (catan, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L, -0.0L),
4732     TEST_c_c (catan, 0.0L, 0x1p100L, 1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4733     TEST_c_c (catan, -0.0L, 0x1p100L, -1.570796326794896619231321691639751442099L, 7.888609052210118054117285652827862296732e-31L),
4734     TEST_c_c (catan, 0.0L, -0x1p100L, 1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4735     TEST_c_c (catan, -0.0L, -0x1p100L, -1.570796326794896619231321691639751442099L, -7.888609052210118054117285652827862296732e-31L),
4736     TEST_c_c (catan, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L, 0.0L),
4737     TEST_c_c (catan, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L, -0.0L),
4738     TEST_c_c (catan, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L, 0.0L),
4739     TEST_c_c (catan, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L, -0.0L),
4740     TEST_c_c (catan, 0.0L, 0x1.fp127L, 1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4741     TEST_c_c (catan, -0.0L, 0x1.fp127L, -1.570796326794896619231321691639751442099L, 3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4742     TEST_c_c (catan, 0.0L, -0x1.fp127L, 1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4743     TEST_c_c (catan, -0.0L, -0x1.fp127L, -1.570796326794896619231321691639751442099L, -3.033533808573645181854803967025150136306e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4744     TEST_c_c (catan, 0x1.fp127L, 0x1.fp127L, 1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4745     TEST_c_c (catan, 0x1.fp127L, -0x1.fp127L, 1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4746     TEST_c_c (catan, -0x1.fp127L, 0x1.fp127L, -1.570796326794896619231321691639751442097L, 1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4747     TEST_c_c (catan, -0x1.fp127L, -0x1.fp127L, -1.570796326794896619231321691639751442097L, -1.516766904286822590927401983512575068153e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4748 #ifndef TEST_FLOAT
4749     TEST_c_c (catan, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4750     TEST_c_c (catan, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4751     TEST_c_c (catan, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4752     TEST_c_c (catan, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4753     TEST_c_c (catan, 0.0L, 0x1p900L, 1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4754     TEST_c_c (catan, -0.0L, 0x1p900L, -1.570796326794896619231321691639751442099L, 1.183052186166774710972751597518026531652e-271L),
4755     TEST_c_c (catan, 0.0L, -0x1p900L, 1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4756     TEST_c_c (catan, -0.0L, -0x1p900L, -1.570796326794896619231321691639751442099L, -1.183052186166774710972751597518026531652e-271L),
4757     TEST_c_c (catan, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4758     TEST_c_c (catan, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4759     TEST_c_c (catan, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4760     TEST_c_c (catan, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4761     TEST_c_c (catan, 0.0L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4762     TEST_c_c (catan, -0.0L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4763     TEST_c_c (catan, 0.0L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4764     TEST_c_c (catan, -0.0L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -5.742126086470197117652213464083623391533e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4765     TEST_c_c (catan, 0x1.fp1023L, 0x1.fp1023L, 1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4766     TEST_c_c (catan, 0x1.fp1023L, -0x1.fp1023L, 1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4767     TEST_c_c (catan, -0x1.fp1023L, 0x1.fp1023L, -1.570796326794896619231321691639751442099L, 2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4768     TEST_c_c (catan, -0x1.fp1023L, -0x1.fp1023L, -1.570796326794896619231321691639751442099L, -2.871063043235098558826106732041811695767e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
4769 #endif
4770 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
4771     TEST_c_c (catan, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4772     TEST_c_c (catan, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4773     TEST_c_c (catan, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4774     TEST_c_c (catan, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4775     TEST_c_c (catan, 0.0L, 0x1p10000L, 1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4776     TEST_c_c (catan, -0.0L, 0x1p10000L, -1.570796326794896619231321691639751442099L, 5.012372749206452009297555933742977749322e-3011L),
4777     TEST_c_c (catan, 0.0L, -0x1p10000L, 1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4778     TEST_c_c (catan, -0.0L, -0x1p10000L, -1.570796326794896619231321691639751442099L, -5.012372749206452009297555933742977749322e-3011L),
4779     TEST_c_c (catan, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L, 0.0L),
4780     TEST_c_c (catan, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L, -0.0L),
4781     TEST_c_c (catan, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L, 0.0L),
4782     TEST_c_c (catan, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L, -0.0L),
4783     TEST_c_c (catan, 0.0L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4784     TEST_c_c (catan, -0.0L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4785     TEST_c_c (catan, 0.0L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4786     TEST_c_c (catan, -0.0L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -8.676395208031209048419813722120651877672e-4933L, UNDERFLOW_EXCEPTION),
4787     TEST_c_c (catan, 0x1.fp16383L, 0x1.fp16383L, 1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4788     TEST_c_c (catan, 0x1.fp16383L, -0x1.fp16383L, 1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4789     TEST_c_c (catan, -0x1.fp16383L, 0x1.fp16383L, -1.570796326794896619231321691639751442099L, 4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4790     TEST_c_c (catan, -0x1.fp16383L, -0x1.fp16383L, -1.570796326794896619231321691639751442099L, -4.338197604015604524209906861060325938836e-4933L, UNDERFLOW_EXCEPTION),
4791 #endif
4792     TEST_c_c (catan, 0x1p-13L, 1.0L, 7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4793     TEST_c_c (catan, 0x1p-13L, -1.0L, 7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4794     TEST_c_c (catan, -0x1p-13L, 1.0L, -7.854286809755354140031716771044626356262e-1L, 4.852030264850939738801379894163661227127L),
4795     TEST_c_c (catan, -0x1p-13L, -1.0L, -7.854286809755354140031716771044626356262e-1L, -4.852030264850939738801379894163661227127L),
4796     TEST_c_c (catan, 1.0L, 0x1p-13L, 7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4797     TEST_c_c (catan, -1.0L, 0x1p-13L, -7.853981671227386080775748393881580082970e-1L, 6.103515609841754902688560615027452023669e-5L),
4798     TEST_c_c (catan, 1.0L, -0x1p-13L, 7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4799     TEST_c_c (catan, -1.0L, -0x1p-13L, -7.853981671227386080775748393881580082970e-1L, -6.103515609841754902688560615027452023669e-5L),
4800     TEST_c_c (catan, 0x1p-27L, 1.0L, 7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4801     TEST_c_c (catan, 0x1p-27L, -1.0L, 7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4802     TEST_c_c (catan, -0x1p-27L, 1.0L, -7.853981652600934588466178684534110069553e-1L, 9.704060527839234335310696652368086117807L),
4803     TEST_c_c (catan, -0x1p-27L, -1.0L, -7.853981652600934588466178684534110069553e-1L, -9.704060527839234335310696652368086117807L),
4804     TEST_c_c (catan, 1.0L, 0x1p-27L, 7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4805     TEST_c_c (catan, -1.0L, 0x1p-27L, -7.853981633974483234934486536343324763447e-1L, 3.725290298461914028034141143623846306386e-9L),
4806     TEST_c_c (catan, 1.0L, -0x1p-27L, 7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4807     TEST_c_c (catan, -1.0L, -0x1p-27L, -7.853981633974483234934486536343324763447e-1L, -3.725290298461914028034141143623846306386e-9L),
4808     TEST_c_c (catan, 0x1p-33L, 1.0L, 7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4809     TEST_c_c (catan, 0x1p-33L, -1.0L, 7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4810     TEST_c_c (catan, -0x1p-33L, 1.0L, -7.853981634265521400723945494331241018449e-1L, 1.178350206951907026009379309773625595762e1L),
4811     TEST_c_c (catan, -0x1p-33L, -1.0L, -7.853981634265521400723945494331241018449e-1L, -1.178350206951907026009379309773625595762e1L),
4812     TEST_c_c (catan, 1.0L, 0x1p-33L, 7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4813     TEST_c_c (catan, -1.0L, 0x1p-33L, -7.853981633974483096190489776088929224056e-1L, 5.820766091346740722643102318246316469910e-11L),
4814     TEST_c_c (catan, 1.0L, -0x1p-33L, 7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4815     TEST_c_c (catan, -1.0L, -0x1p-33L, -7.853981633974483096190489776088929224056e-1L, -5.820766091346740722643102318246316469910e-11L),
4816     TEST_c_c (catan, 0x1p-54L, 1.0L, 7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4817     TEST_c_c (catan, 0x1p-54L, -1.0L, 7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4818     TEST_c_c (catan, -0x1p-54L, 1.0L, -7.853981633974483234934486536343324763447e-1L, 1.906154746539849600897388334009985581467e1L),
4819     TEST_c_c (catan, -0x1p-54L, -1.0L, -7.853981633974483234934486536343324763447e-1L, -1.906154746539849600897388334009985581467e1L),
4820     TEST_c_c (catan, 1.0L, 0x1p-54L, 7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4821     TEST_c_c (catan, -1.0L, 0x1p-54L, -7.853981633974483096156608458198764914213e-1L, 2.775557561562891351059079170227049355775e-17L),
4822     TEST_c_c (catan, 1.0L, -0x1p-54L, 7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4823     TEST_c_c (catan, -1.0L, -0x1p-54L, -7.853981633974483096156608458198764914213e-1L, -2.775557561562891351059079170227049355775e-17L),
4824     TEST_c_c (catan, 0x1p-57L, 1.0L, 7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4825     TEST_c_c (catan, 0x1p-57L, -1.0L, 7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4826     TEST_c_c (catan, -0x1p-57L, 1.0L, -7.853981633974483113503843217966828154612e-1L, 2.010126823623841397309973152228712047720e1L),
4827     TEST_c_c (catan, -0x1p-57L, -1.0L, -7.853981633974483113503843217966828154612e-1L, -2.010126823623841397309973152228712047720e1L),
4828     TEST_c_c (catan, 1.0L, 0x1p-57L, 7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4829     TEST_c_c (catan, -1.0L, 0x1p-57L, -7.853981633974483096156608458198757330864e-1L, 3.469446951953614188823848962783813448721e-18L),
4830     TEST_c_c (catan, 1.0L, -0x1p-57L, 7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4831     TEST_c_c (catan, -1.0L, -0x1p-57L, -7.853981633974483096156608458198757330864e-1L, -3.469446951953614188823848962783813448721e-18L),
4832     TEST_c_c (catan, 0x1p-13L, 0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4833     TEST_c_c (catan, 0x1p-13L, -0x1.000002p0L, 7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4834     TEST_c_c (catan, -0x1p-13L, 0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, 4.852030056234795712498957387213592193975L),
4835     TEST_c_c (catan, -0x1p-13L, -0x1.000002p0L, -7.859169620684960844300240092596908675974e-1L, -4.852030056234795712498957387213592193975L),
4836     TEST_c_c (catan, 0x1.000002p0L, 0x1p-13L, 7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4837     TEST_c_c (catan, -0x1.000002p0L, 0x1p-13L, -7.853982267273793866654490522673596014524e-1L, 6.103514882246036852433556327261700380577e-5L),
4838     TEST_c_c (catan, 0x1.000002p0L, -0x1p-13L, 7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4839     TEST_c_c (catan, -0x1.000002p0L, -0x1p-13L, -7.853982267273793866654490522673596014524e-1L, -6.103514882246036852433556327261700380577e-5L),
4840     TEST_c_c (catan, 0x1p-13L, 0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4841     TEST_c_c (catan, 0x1p-13L, -0x0.ffffffp0L, 7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4842     TEST_c_c (catan, -0x1p-13L, 0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, 4.852030190345140708455871037447717761868L),
4843     TEST_c_c (catan, -0x1p-13L, -0x0.ffffffp0L, -7.851845403708474595909269086711426246675e-1L, -4.852030190345140708455871037447717761868L),
4844     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-13L, 7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4845     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-13L, -7.853981373204155542484315721351697277336e-1L, 6.103515973639646453881721999956617260502e-5L),
4846     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-13L, 7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4847     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-13L, -7.853981373204155542484315721351697277336e-1L, -6.103515973639646453881721999956617260502e-5L),
4848 #ifndef TEST_FLOAT
4849     TEST_c_c (catan, 0x1p-27L, 0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4850     TEST_c_c (catan, 0x1p-27L, -0x1.0000000000001p0L, 7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4851     TEST_c_c (catan, -0x1p-27L, 0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, 9.704060527839234168777242958594699810015L),
4852     TEST_c_c (catan, -0x1p-27L, -0x1.0000000000001p0L, -7.853981801612546526942695000283242525531e-1L, -9.704060527839234168777242958594699810015L),
4853     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-27L, 7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4854     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-27L, -7.853981633974484345157511161499711112683e-1L, 3.725290298461913200853528590596263270474e-9L),
4855     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-27L, 7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4856     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-27L, -7.853981633974484345157511161499711112683e-1L, -3.725290298461913200853528590596263270474e-9L),
4857     TEST_c_c (catan, 0x1p-27L, 0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4858     TEST_c_c (catan, 0x1p-27L, -0x0.fffffffffffff8p0L, 7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4859     TEST_c_c (catan, -0x1p-27L, 0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, 9.704060527839234252043969805481351363824L),
4860     TEST_c_c (catan, -0x1p-27L, -0x0.fffffffffffff8p0L, -7.853981578095128619227903983047292781021e-1L, -9.704060527839234252043969805481351363824L),
4861     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-27L, 7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4862     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-27L, -7.853981633974482679822974223765039144191e-1L, 3.725290298461914441624447420137706700965e-9L),
4863     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-27L, 7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4864     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-27L, -7.853981633974482679822974223765039144191e-1L, -3.725290298461914441624447420137706700965e-9L),
4865 #endif
4866 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
4867     TEST_c_c (catan, 0x1p-33L, 0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
4868     TEST_c_c (catan, 0x1p-33L, -0x1.0000000000000002p0L, 7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
4869     TEST_c_c (catan, -0x1p-33L, 0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, 1.178350206951907025990405771755129268176e1L),
4870     TEST_c_c (catan, -0x1p-33L, -0x1.0000000000000002p0L, -7.853981638922134273801338071094141188767e-1L, -1.178350206951907025990405771755129268176e1L),
4871     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-33L, 7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
4872     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-33L, -7.853981633974483096732590862331681441026e-1L, 5.820766091346740722012013594069507025615e-11L),
4873     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-33L, 7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
4874     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-33L, -7.853981633974483096732590862331681441026e-1L, -5.820766091346740722012013594069507025615e-11L),
4875     TEST_c_c (catan, 0x1p-33L, 0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
4876     TEST_c_c (catan, 0x1p-33L, -0x0.ffffffffffffffffp0L, 7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
4877     TEST_c_c (catan, -0x1p-33L, 0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, 1.178350206951907026002603046195591193050e1L),
4878     TEST_c_c (catan, -0x1p-33L, -0x0.ffffffffffffffffp0L, -7.853981631937214964185249205444919953948e-1L, -1.178350206951907026002603046195591193050e1L),
4879     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-33L, 7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
4880     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-33L, -7.853981633974483095919439232967553115548e-1L, 5.820766091346740722958646680334721192083e-11L),
4881     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-33L, 7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
4882     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-33L, -7.853981633974483095919439232967553115548e-1L, -5.820766091346740722958646680334721192083e-11L),
4883 #endif
4884 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
4885     TEST_c_c (catan, 0x1p-54L, 0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
4886     TEST_c_c (catan, 0x1p-54L, -0x1.000000000000000000000000008p0L, 7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
4887     TEST_c_c (catan, -0x1p-54L, 0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, 1.906154746539849600897388334009981267384e1L),
4888     TEST_c_c (catan, -0x1p-54L, -0x1.000000000000000000000000008p0L, -7.853981633974485455380535786656405610710e-1L, -1.906154746539849600897388334009981267384e1L),
4889     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-54L, 7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
4890     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-54L, -7.853981633974483096156608458198888173729e-1L, 2.775557561562891351059079170226980932999e-17L),
4891     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-54L, 7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
4892     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-54L, -7.853981633974483096156608458198888173729e-1L, -2.775557561562891351059079170226980932999e-17L),
4893     TEST_c_c (catan, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
4894     TEST_c_c (catan, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
4895     TEST_c_c (catan, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, 1.906154746539849600897388334009984040723e1L),
4896     TEST_c_c (catan, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -7.853981633974482124711461911186784339815e-1L, -1.906154746539849600897388334009984040723e1L),
4897     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
4898     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -7.853981633974483096156608458198703284454e-1L, 2.775557561562891351059079170227083567164e-17L),
4899     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
4900     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -7.853981633974483096156608458198703284454e-1L, -2.775557561562891351059079170227083567164e-17L),
4901 #endif
4902 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
4903     TEST_c_c (catan, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
4904     TEST_c_c (catan, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
4905     TEST_c_c (catan, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, 2.010126823623841397309973152228712033275e1L),
4906     TEST_c_c (catan, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -7.853981633974483252281721296111395707566e-1L, -2.010126823623841397309973152228712033275e1L),
4907     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
4908     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -7.853981633974483096156608458198758293829e-1L, 3.469446951953614188823848962783812780530e-18L),
4909     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
4910     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -7.853981633974483096156608458198758293829e-1L, -3.469446951953614188823848962783812780530e-18L),
4911     TEST_c_c (catan, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
4912     TEST_c_c (catan, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
4913     TEST_c_c (catan, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, 2.010126823623841397309973152228712040498e1L),
4914     TEST_c_c (catan, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -7.853981633974483044114904178894544378135e-1L, -2.010126823623841397309973152228712040498e1L),
4915     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
4916     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -7.853981633974483096156608458198756849381e-1L, 3.469446951953614188823848962783813782817e-18L),
4917     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
4918     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -7.853981633974483096156608458198756849381e-1L, -3.469446951953614188823848962783813782817e-18L),
4919 #endif
4920     TEST_c_c (catan, 1.0L, 0x1p-64L, 7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
4921     TEST_c_c (catan, 1.0L, -0x1p-64L, 7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
4922     TEST_c_c (catan, -1.0L, 0x1p-64L, -7.853981633974483096156608458198757210500e-1L, 2.710505431213761085018632002174854278563e-20L),
4923     TEST_c_c (catan, -1.0L, -0x1p-64L, -7.853981633974483096156608458198757210500e-1L, -2.710505431213761085018632002174854278563e-20L),
4924     TEST_c_c (catan, 0x1p-64L, 1.0L, 7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
4925     TEST_c_c (catan, -0x1p-64L, 1.0L, -7.853981633974483096292133729759445264744e-1L, 2.252728336819822255606004394739073846245e1L),
4926     TEST_c_c (catan, 0x1p-64L, -1.0L, 7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
4927     TEST_c_c (catan, -0x1p-64L, -1.0L, -7.853981633974483096292133729759445264744e-1L, -2.252728336819822255606004394739073846245e1L),
4928     TEST_c_c (catan, 1.0L, 0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
4929     TEST_c_c (catan, 1.0L, -0x1.3p-73L, 7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
4930     TEST_c_c (catan, -1.0L, 0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, 6.286572655403010329022706059731717687100e-23L),
4931     TEST_c_c (catan, -1.0L, -0x1.3p-73L, -7.853981633974483096156608458198757210493e-1L, -6.286572655403010329022706059731717687100e-23L),
4932     TEST_c_c (catan, 0x1.3p-73L, 1.0L, 7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
4933     TEST_c_c (catan, -0x1.3p-73L, 1.0L, -7.853981633974483096156922786831527361009e-1L, 2.556052055225464683726753902092495938633e1L),
4934     TEST_c_c (catan, 0x1.3p-73L, -1.0L, 7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
4935     TEST_c_c (catan, -0x1.3p-73L, -1.0L, -7.853981633974483096156922786831527361009e-1L, -2.556052055225464683726753902092495938633e1L),
4936     TEST_c_c (catan, 1.0L, 0x1p-124L, 7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
4937     TEST_c_c (catan, 1.0L, -0x1p-124L, 7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
4938     TEST_c_c (catan, -1.0L, 0x1p-124L, -7.853981633974483096156608458198757210493e-1L, 2.350988701644575015937473074444491355637e-38L),
4939     TEST_c_c (catan, -1.0L, -0x1p-124L, -7.853981633974483096156608458198757210493e-1L, -2.350988701644575015937473074444491355637e-38L),
4940     TEST_c_c (catan, 0x1p-124L, 1.0L, 7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
4941     TEST_c_c (catan, -0x1p-124L, 1.0L, -7.853981633974483096156608458198757210610e-1L, 4.332169878499658183857700759113603550472e1L),
4942     TEST_c_c (catan, 0x1p-124L, -1.0L, 7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
4943     TEST_c_c (catan, -0x1p-124L, -1.0L, -7.853981633974483096156608458198757210610e-1L, -4.332169878499658183857700759113603550472e1L),
4944     TEST_c_c (catan, 0x1.000002p0L, 0x1p-126L, 7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4945     TEST_c_c (catan, 0x1.000002p0L, -0x1p-126L, 7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4946     TEST_c_c (catan, -0x1.000002p0L, 0x1p-126L, -7.853982230020895322927482174768220815493e-1L, 5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4947     TEST_c_c (catan, -0x1.000002p0L, -0x1p-126L, -7.853982230020895322927482174768220815493e-1L, -5.877471053462247139383742414506671233336e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4948     TEST_c_c (catan, 0x1p-126L, 0x1.000002p0L, 1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
4949     TEST_c_c (catan, -0x1p-126L, 0x1.000002p0L, -1.570796326794896619231321691639702138295L, 8.317766196521665212523713550410777685446L),
4950     TEST_c_c (catan, 0x1p-126L, -0x1.000002p0L, 1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
4951     TEST_c_c (catan, -0x1p-126L, -0x1.000002p0L, -1.570796326794896619231321691639702138295L, -8.317766196521665212523713550410777685446L),
4952     TEST_c_c (catan, 0x0.ffffffp0L, 0x1p-126L, 7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4953     TEST_c_c (catan, 0x0.ffffffp0L, -0x1p-126L, 7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4954     TEST_c_c (catan, -0x0.ffffffp0L, 0x1p-126L, -7.853981335951250337419109991749089175724e-1L, 5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4955     TEST_c_c (catan, -0x0.ffffffp0L, -0x1p-126L, -7.853981335951250337419109991749089175724e-1L, -5.877472104436064061535099214664320916184e-39L, UNDERFLOW_EXCEPTION_FLOAT),
4956     TEST_c_c (catan, 0x1p-126L, 0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
4957     TEST_c_c (catan, -0x1p-126L, 0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, 8.664339742098154951823135931565866792454L),
4958     TEST_c_c (catan, 0x1p-126L, -0x0.ffffffp0L, 9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
4959     TEST_c_c (catan, -0x1p-126L, -0x0.ffffffp0L, -9.860761609136244031334147100512154160097e-32L, -8.664339742098154951823135931565866792454L),
4960 #ifndef TEST_FLOAT
4961     TEST_c_c (catan, 1.0L, 0x1p-512L, 7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
4962     TEST_c_c (catan, 1.0L, -0x1p-512L, 7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
4963     TEST_c_c (catan, -1.0L, 0x1p-512L, -7.853981633974483096156608458198757210493e-1L, 3.729170365600103371645482657731466918688e-155L),
4964     TEST_c_c (catan, -1.0L, -0x1p-512L, -7.853981633974483096156608458198757210493e-1L, -3.729170365600103371645482657731466918688e-155L),
4965     TEST_c_c (catan, 0x1p-512L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
4966     TEST_c_c (catan, -0x1p-512L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.777922518136259718655200391540222897114e2L),
4967     TEST_c_c (catan, 0x1p-512L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
4968     TEST_c_c (catan, -0x1p-512L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.777922518136259718655200391540222897114e2L),
4969     TEST_c_c (catan, 1.0L, 0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
4970     TEST_c_c (catan, 1.0L, -0x1.3p-536L, 7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
4971     TEST_c_c (catan, -1.0L, 0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, 2.639526015013529511588222179446290115084e-162L),
4972     TEST_c_c (catan, -1.0L, -0x1.3p-536L, -7.853981633974483096156608458198757210493e-1L, -2.639526015013529511588222179446290115084e-162L),
4973     TEST_c_c (catan, 0x1.3p-536L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
4974     TEST_c_c (catan, -0x1.3p-536L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 1.860240928518819859673567751384928348958e2L),
4975     TEST_c_c (catan, 0x1.3p-536L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
4976     TEST_c_c (catan, -0x1.3p-536L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -1.860240928518819859673567751384928348958e2L),
4977     TEST_c_c (catan, 1.0L, 0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4978     TEST_c_c (catan, 1.0L, -0x1p-1020L, 7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4979     TEST_c_c (catan, -1.0L, 0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, 4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4980     TEST_c_c (catan, -1.0L, -0x1p-1020L, -7.853981633974483096156608458198757210493e-1L, -4.450147717014402766180465434664808128438e-308L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4981     TEST_c_c (catan, 0x1p-1020L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
4982     TEST_c_c (catan, -0x1p-1020L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 3.538516356758520804574969980043991380025e2L),
4983     TEST_c_c (catan, 0x1p-1020L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
4984     TEST_c_c (catan, -0x1p-1020L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -3.538516356758520804574969980043991380025e2L),
4985     TEST_c_c (catan, 0x1.0000000000001p0L, 0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4986     TEST_c_c (catan, 0x1.0000000000001p0L, -0x1p-1022L, 7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4987     TEST_c_c (catan, -0x1.0000000000001p0L, 0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, 1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4988     TEST_c_c (catan, -0x1.0000000000001p0L, -0x1p-1022L, -7.853981633974484206379633083355174374608e-1L, -1.112536929253600444512293438042957369978e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4989     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
4990     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, 1.836840028483855075506780244989950299369e1L),
4991     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000001p0L, 1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
4992     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000001p0L, -1.570796326794896619231321691639751442099L, -1.836840028483855075506780244989950299369e1L),
4993     TEST_c_c (catan, 0x0.fffffffffffff8p0L, 0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4994     TEST_c_c (catan, 0x0.fffffffffffff8p0L, -0x1p-1022L, 7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4995     TEST_c_c (catan, -0x0.fffffffffffff8p0L, 0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, 1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4996     TEST_c_c (catan, -0x0.fffffffffffff8p0L, -0x1p-1022L, -7.853981633974482541045096145620456183798e-1L, -1.112536929253600815061527818977844932790e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
4997     TEST_c_c (catan, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4998     TEST_c_c (catan, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, 1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
4999     TEST_c_c (catan, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5000     TEST_c_c (catan, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.002084180004486444624900488355118689113e-292L, -1.871497387511852332650969166374185305708e1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5001 #endif
5002 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5003     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5004     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-1022L, 7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5005     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, 1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5006     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-1022L, -7.853981633974483096698709544441509427467e-1L, -1.112536929253600691424494863099491450042e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5007     TEST_c_c (catan, 0x1p-1022L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5008     TEST_c_c (catan, -0x1p-1022L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5009     TEST_c_c (catan, 0x1p-1022L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5010     TEST_c_c (catan, -0x1p-1022L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5011     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5012     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5013     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, 1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5014     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -7.853981633974483095885557915077381101984e-1L, -1.112536929253600691605427106449557323148e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5015     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5016     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, 2.252728336819822255604649142023466965703e1L),
5017     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5018     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -2.052268400649188124723641491045245971623e-289L, -2.252728336819822255604649142023466965703e1L),
5019 #endif
5020 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5021     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5022     TEST_c_c (catan, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5023     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, 1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5024     TEST_c_c (catan, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -7.853981633974483096156608458198880470009e-1L, -1.112536929253600691545116358666174605957e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5025     TEST_c_c (catan, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5026     TEST_c_c (catan, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, 3.673680056967710139911330243728336427098e1L),
5027     TEST_c_c (catan, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5028     TEST_c_c (catan, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.570796326794896619231321691639751442099L, -3.673680056967710139911330243728336427098e1L),
5029     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5030     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5031     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, 1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5032     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -7.853981633974483096156608458198695580735e-1L, -1.112536929253600691545116358666215745186e-308L, UNDERFLOW_EXCEPTION_DOUBLE),
5033     TEST_c_c (catan, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5034     TEST_c_c (catan, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, 3.708337415995707405382191849801244331055e1L),
5035     TEST_c_c (catan, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5036     TEST_c_c (catan, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -9.025971879324147880346310405868788320726e-277L, -3.708337415995707405382191849801244331055e1L),
5037 #endif
5038 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5039     TEST_c_c (catan, 1.0L, 0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5040     TEST_c_c (catan, 1.0L, -0x1p-8192L, 7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5041     TEST_c_c (catan, -1.0L, 0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, 4.584009668887117914053530980121207914891e-2467L),
5042     TEST_c_c (catan, -1.0L, -0x1p-8192L, -7.853981633974483096156608458198757210493e-1L, -4.584009668887117914053530980121207914891e-2467L),
5043     TEST_c_c (catan, 0x1p-8192L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5044     TEST_c_c (catan, -0x1p-8192L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.839477425163815960027691385553420311121e3L),
5045     TEST_c_c (catan, 0x1p-8192L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5046     TEST_c_c (catan, -0x1p-8192L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.839477425163815960027691385553420311121e3L),
5047     TEST_c_c (catan, 1.0L, 0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5048     TEST_c_c (catan, 1.0L, -0x1.3p-8221L, 7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5049     TEST_c_c (catan, -1.0L, 0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, 1.013933025636421986471594877335044443409e-2475L),
5050     TEST_c_c (catan, -1.0L, -0x1.3p-8221L, -7.853981633974483096156608458198757210493e-1L, -1.013933025636421986471594877335044443409e-2475L),
5051     TEST_c_c (catan, 0x1.3p-8221L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5052     TEST_c_c (catan, -0x1.3p-8221L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.849442134153471837403071201841536297726e3L),
5053     TEST_c_c (catan, 0x1.3p-8221L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5054     TEST_c_c (catan, -0x1.3p-8221L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.849442134153471837403071201841536297726e3L),
5055     TEST_c_c (catan, 1.0L, 0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5056     TEST_c_c (catan, 1.0L, -0x1.3p-8246L, 7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5057     TEST_c_c (catan, -1.0L, 0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, 3.021755890954798419688924781486524472858e-2483L),
5058     TEST_c_c (catan, -1.0L, -0x1.3p-8246L, -7.853981633974483096156608458198757210493e-1L, -3.021755890954798419688924781486524472858e-2483L),
5059     TEST_c_c (catan, 0x1.3p-8246L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5060     TEST_c_c (catan, -0x1.3p-8246L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 2.858106473910471153770786603359763504827e3L),
5061     TEST_c_c (catan, 0x1.3p-8246L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5062     TEST_c_c (catan, -0x1.3p-8246L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -2.858106473910471153770786603359763504827e3L),
5063     TEST_c_c (catan, 1.0L, 0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5064     TEST_c_c (catan, 1.0L, -0x1p-16380L, 7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5065     TEST_c_c (catan, -1.0L, 0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, 6.724206286224187012525355634643505205196e-4932L),
5066     TEST_c_c (catan, -1.0L, -0x1p-16380L, -7.853981633974483096156608458198757210493e-1L, -6.724206286224187012525355634643505205196e-4932L),
5067     TEST_c_c (catan, 0x1p-16380L, 1.0L, 7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5068     TEST_c_c (catan, -0x1p-16380L, 1.0L, -7.853981633974483096156608458198757210493e-1L, 5.677221982376232056781839690803195180822e3L),
5069     TEST_c_c (catan, 0x1p-16380L, -1.0L, 7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5070     TEST_c_c (catan, -0x1p-16380L, -1.0L, -7.853981633974483096156608458198757210493e-1L, -5.677221982376232056781839690803195180822e3L),
5071     TEST_c_c (catan, 0x1.0000000000000002p0L, 0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5072     TEST_c_c (catan, 0x1.0000000000000002p0L, -0x1p-16382L, 7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5073     TEST_c_c (catan, -0x1.0000000000000002p0L, 0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, 1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5074     TEST_c_c (catan, -0x1.0000000000000002p0L, -0x1p-16382L, -7.853981633974483096698709544441509427467e-1L, -1.681051571556046752949078932066752571182e-4932L, UNDERFLOW_EXCEPTION),
5075     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5076     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, 2.218070977791824990137853294097378778927e1L),
5077     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000002p0L, 1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5078     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000002p0L, -1.570796326794896619231321691639751442099L, -2.218070977791824990137853294097378778927e1L),
5079     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5080     TEST_c_c (catan, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5081     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, 1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5082     TEST_c_c (catan, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -7.853981633974483095885557915077381101984e-1L, -1.681051571556046753222468896957938166365e-4932L, UNDERFLOW_EXCEPTION),
5083     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5084     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, 2.252728336819822255604649142023466965703e1L),
5085     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5086     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -3.100992811520163369065387859792822623745e-4913L, -2.252728336819822255604649142023466965703e1L),
5087 # if LDBL_MANT_DIG >= 113
5088     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5089     TEST_c_c (catan, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5090     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, 1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5091     TEST_c_c (catan, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -7.853981633974483096156608458198758173458e-1L, -1.681051571556046753131338908660875977540e-4932L, UNDERFLOW_EXCEPTION),
5092     TEST_c_c (catan, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5093     TEST_c_c (catan, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, 3.916281570163690998207361486238697614441e1L),
5094     TEST_c_c (catan, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5095     TEST_c_c (catan, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.570796326794896619231321691639751442099L, -3.916281570163690998207361486238697614441e1L),
5096     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5097     TEST_c_c (catan, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5098     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, 1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5099     TEST_c_c (catan, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -7.853981633974483096156608458198756729010e-1L, -1.681051571556046753131338908660876463178e-4932L, UNDERFLOW_EXCEPTION),
5100     TEST_c_c (catan, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5101     TEST_c_c (catan, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, 3.950938929191688263678223092311606435623e1L),
5102     TEST_c_c (catan, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5103     TEST_c_c (catan, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.745703758805099310527547423749501866998e-4898L, -3.950938929191688263678223092311606435623e1L),
5104 # endif
5105 #endif
5106
5107     TEST_c_c (catan, 0.75L, 1.25L, 1.10714871779409050301706546017853704L, 0.549306144334054845697622618461262852L),
5108     TEST_c_c (catan, -2, -3, -1.4099210495965755225306193844604208L, -0.22907268296853876629588180294200276L),
5109     END_DATA (catan)
5110   };
5111
5112 static void
5113 catan_test (void)
5114 {
5115   errno = 0;
5116   FUNC(catan) (BUILD_COMPLEX (0.7L, 1.2L));
5117   if (errno == ENOSYS)
5118     /* Function not implemented.  */
5119     return;
5120
5121   START (catan);
5122   RUN_TEST_LOOP_c_c (catan, catan_test_data, );
5123   END (catan, complex);
5124 }
5125
5126 static const struct test_c_c_data catanh_test_data[] =
5127   {
5128     START_DATA (catanh),
5129     TEST_c_c (catanh, 0, 0, 0.0, 0.0),
5130     TEST_c_c (catanh, minus_zero, 0, minus_zero, 0.0),
5131     TEST_c_c (catanh, 0, minus_zero, 0.0, minus_zero),
5132     TEST_c_c (catanh, minus_zero, minus_zero, minus_zero, minus_zero),
5133
5134     TEST_c_c (catanh, 1.0L, plus_zero, plus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5135     TEST_c_c (catanh, 1.0L, minus_zero, plus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5136     TEST_c_c (catanh, -1.0L, plus_zero, minus_infty, plus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5137     TEST_c_c (catanh, -1.0L, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
5138     TEST_c_c (catanh, plus_zero, 1.0L, plus_zero, M_PI_4l),
5139     TEST_c_c (catanh, minus_zero, 1.0L, minus_zero, M_PI_4l),
5140     TEST_c_c (catanh, plus_zero, -1.0L, plus_zero, -M_PI_4l),
5141     TEST_c_c (catanh, minus_zero, -1.0L, minus_zero, -M_PI_4l),
5142
5143     TEST_c_c (catanh, plus_infty, plus_infty, 0.0, M_PI_2l),
5144     TEST_c_c (catanh, plus_infty, minus_infty, 0.0, -M_PI_2l),
5145     TEST_c_c (catanh, minus_infty, plus_infty, minus_zero, M_PI_2l),
5146     TEST_c_c (catanh, minus_infty, minus_infty, minus_zero, -M_PI_2l),
5147
5148     TEST_c_c (catanh, -10.0, plus_infty, minus_zero, M_PI_2l),
5149     TEST_c_c (catanh, -10.0, minus_infty, minus_zero, -M_PI_2l),
5150     TEST_c_c (catanh, minus_zero, plus_infty, minus_zero, M_PI_2l),
5151     TEST_c_c (catanh, minus_zero, minus_infty, minus_zero, -M_PI_2l),
5152     TEST_c_c (catanh, 0, plus_infty, 0.0, M_PI_2l),
5153     TEST_c_c (catanh, 0, minus_infty, 0.0, -M_PI_2l),
5154     TEST_c_c (catanh, 0.1L, plus_infty, 0.0, M_PI_2l),
5155     TEST_c_c (catanh, 0.1L, minus_infty, 0.0, -M_PI_2l),
5156
5157     TEST_c_c (catanh, minus_infty, 0, minus_zero, M_PI_2l),
5158     TEST_c_c (catanh, minus_infty, minus_zero, minus_zero, -M_PI_2l),
5159     TEST_c_c (catanh, minus_infty, 100, minus_zero, M_PI_2l),
5160     TEST_c_c (catanh, minus_infty, -100, minus_zero, -M_PI_2l),
5161
5162     TEST_c_c (catanh, plus_infty, 0, 0.0, M_PI_2l),
5163     TEST_c_c (catanh, plus_infty, minus_zero, 0.0, -M_PI_2l),
5164     TEST_c_c (catanh, plus_infty, 0.5, 0.0, M_PI_2l),
5165     TEST_c_c (catanh, plus_infty, -0.5, 0.0, -M_PI_2l),
5166
5167     TEST_c_c (catanh, 0, qnan_value, 0.0, qnan_value),
5168     TEST_c_c (catanh, minus_zero, qnan_value, minus_zero, qnan_value),
5169
5170     TEST_c_c (catanh, plus_infty, qnan_value, 0.0, qnan_value),
5171     TEST_c_c (catanh, minus_infty, qnan_value, minus_zero, qnan_value),
5172
5173     TEST_c_c (catanh, qnan_value, 0, qnan_value, qnan_value),
5174     TEST_c_c (catanh, qnan_value, minus_zero, qnan_value, qnan_value),
5175
5176     TEST_c_c (catanh, qnan_value, plus_infty, 0.0, M_PI_2l, IGNORE_ZERO_INF_SIGN),
5177     TEST_c_c (catanh, qnan_value, minus_infty, 0.0, -M_PI_2l, IGNORE_ZERO_INF_SIGN),
5178
5179     TEST_c_c (catanh, 10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5180     TEST_c_c (catanh, -10.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5181
5182     TEST_c_c (catanh, qnan_value, 0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5183     TEST_c_c (catanh, qnan_value, -0.75, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5184
5185     TEST_c_c (catanh, qnan_value, qnan_value, qnan_value, qnan_value),
5186
5187     TEST_c_c (catanh, 0x1p50L, 0.0L, 8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5188     TEST_c_c (catanh, 0x1p50L, -0.0L, 8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5189     TEST_c_c (catanh, -0x1p50L, 0.0L, -8.881784197001252323389053344728897997441e-16L, 1.570796326794896619231321691639751442099L),
5190     TEST_c_c (catanh, -0x1p50L, -0.0L, -8.881784197001252323389053344728897997441e-16L, -1.570796326794896619231321691639751442099L),
5191     TEST_c_c (catanh, 0.0L, 0x1p50L, 0.0L, 1.570796326794895731052901991514519103193L),
5192     TEST_c_c (catanh, -0.0L, 0x1p50L, -0.0L, 1.570796326794895731052901991514519103193L),
5193     TEST_c_c (catanh, 0.0L, -0x1p50L, 0.0L, -1.570796326794895731052901991514519103193L),
5194     TEST_c_c (catanh, -0.0L, -0x1p50L, -0.0L, -1.570796326794895731052901991514519103193L),
5195 #ifndef TEST_FLOAT
5196     TEST_c_c (catanh, 0x1p500L, 0.0L, 3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5197     TEST_c_c (catanh, 0x1p500L, -0.0L, 3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5198     TEST_c_c (catanh, -0x1p500L, 0.0L, -3.054936363499604682051979393213617699789e-151L, 1.570796326794896619231321691639751442099L),
5199     TEST_c_c (catanh, -0x1p500L, -0.0L, -3.054936363499604682051979393213617699789e-151L, -1.570796326794896619231321691639751442099L),
5200     TEST_c_c (catanh, 0.0L, 0x1p500L, 0.0L, 1.570796326794896619231321691639751442099L),
5201     TEST_c_c (catanh, -0.0L, 0x1p500L, -0.0L, 1.570796326794896619231321691639751442099L),
5202     TEST_c_c (catanh, 0.0L, -0x1p500L, 0.0L, -1.570796326794896619231321691639751442099L),
5203     TEST_c_c (catanh, -0.0L, -0x1p500L, -0.0L, -1.570796326794896619231321691639751442099L),
5204 #endif
5205 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5206     TEST_c_c (catanh, 0x1p5000L, 0.0L, 7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5207     TEST_c_c (catanh, 0x1p5000L, -0.0L, 7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5208     TEST_c_c (catanh, -0x1p5000L, 0.0L, -7.079811261048172892385615158694057552948e-1506L, 1.570796326794896619231321691639751442099L),
5209     TEST_c_c (catanh, -0x1p5000L, -0.0L, -7.079811261048172892385615158694057552948e-1506L, -1.570796326794896619231321691639751442099L),
5210     TEST_c_c (catanh, 0.0L, 0x1p5000L, 0.0L, 1.570796326794896619231321691639751442099L),
5211     TEST_c_c (catanh, -0.0L, 0x1p5000L, -0.0L, 1.570796326794896619231321691639751442099L),
5212     TEST_c_c (catanh, 0.0L, -0x1p5000L, 0.0L, -1.570796326794896619231321691639751442099L),
5213     TEST_c_c (catanh, -0.0L, -0x1p5000L, -0.0L, -1.570796326794896619231321691639751442099L),
5214 #endif
5215     TEST_c_c (catanh, 0x1p63L, 0.5L, 1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5216     TEST_c_c (catanh, 0x1p63L, -0.5L, 1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5217     TEST_c_c (catanh, -0x1p63L, 0.5L, -1.084202172485504434007452800869941711427e-19L, 1.570796326794896619231321691639751442093L),
5218     TEST_c_c (catanh, -0x1p63L, -0.5L, -1.084202172485504434007452800869941711427e-19L, -1.570796326794896619231321691639751442093L),
5219     TEST_c_c (catanh, 0.5L, 0x1p63L, 5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5220     TEST_c_c (catanh, -0.5L, 0x1p63L, -5.877471754111437539843682686111228389007e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5221     TEST_c_c (catanh, 0.5L, -0x1p63L, 5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5222     TEST_c_c (catanh, -0.5L, -0x1p63L, -5.877471754111437539843682686111228389007e-39L, -1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
5223 #ifndef TEST_FLOAT
5224     TEST_c_c (catanh, 0x1p511L, 0.5L, 1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5225     TEST_c_c (catanh, 0x1p511L, -0.5L, 1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5226     TEST_c_c (catanh, -0x1p511L, 0.5L, -1.491668146240041348658193063092586767475e-154L, 1.570796326794896619231321691639751442099L),
5227     TEST_c_c (catanh, -0x1p511L, -0.5L, -1.491668146240041348658193063092586767475e-154L, -1.570796326794896619231321691639751442099L),
5228     TEST_c_c (catanh, 0.5L, 0x1p511L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5229     TEST_c_c (catanh, -0.5L, 0x1p511L, -1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5230     TEST_c_c (catanh, 0.5L, -0x1p511L, 1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5231     TEST_c_c (catanh, -0.5L, -0x1p511L, -1.112536929253600691545116358666202032110e-308L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5232 #endif
5233 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5234     TEST_c_c (catanh, 0x1p8191L, 0.5L, 1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5235     TEST_c_c (catanh, 0x1p8191L, -0.5L, 1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5236     TEST_c_c (catanh, -0x1p8191L, 0.5L, -1.833603867554847165621412392048483165956e-2466L, 1.570796326794896619231321691639751442099L),
5237     TEST_c_c (catanh, -0x1p8191L, -0.5L, -1.833603867554847165621412392048483165956e-2466L, -1.570796326794896619231321691639751442099L),
5238     TEST_c_c (catanh, 0.5L, 0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5239     TEST_c_c (catanh, -0.5L, 0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5240     TEST_c_c (catanh, 0.5L, -0x1p8191L, 1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5241     TEST_c_c (catanh, -0.5L, -0x1p8191L, -1.681051571556046753131338908660876301299e-4932L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5242 #endif
5243     TEST_c_c (catanh, 0x1p100L, 0.0L, 7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5244     TEST_c_c (catanh, 0x1p100L, -0.0L, 7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5245     TEST_c_c (catanh, -0x1p100L, 0.0L, -7.888609052210118054117285652827862296732e-31L, 1.570796326794896619231321691639751442099L),
5246     TEST_c_c (catanh, -0x1p100L, -0.0L, -7.888609052210118054117285652827862296732e-31L, -1.570796326794896619231321691639751442099L),
5247     TEST_c_c (catanh, 0.0L, 0x1p100L, 0.0L, 1.570796326794896619231321691638962581193L),
5248     TEST_c_c (catanh, -0.0L, 0x1p100L, -0.0L, 1.570796326794896619231321691638962581193L),
5249     TEST_c_c (catanh, 0.0L, -0x1p100L, 0.0L, -1.570796326794896619231321691638962581193L),
5250     TEST_c_c (catanh, -0.0L, -0x1p100L, -0.0L, -1.570796326794896619231321691638962581193L),
5251     TEST_c_c (catanh, 0x1.fp127L, 0.0L, 3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5252     TEST_c_c (catanh, 0x1.fp127L, -0.0L, 3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5253     TEST_c_c (catanh, -0x1.fp127L, 0.0L, -3.033533808573645181854803967025150136306e-39L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5254     TEST_c_c (catanh, -0x1.fp127L, -0.0L, -3.033533808573645181854803967025150136306e-39L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_FLOAT),
5255     TEST_c_c (catanh, 0.0L, 0x1.fp127L, 0.0L, 1.570796326794896619231321691639751442096L),
5256     TEST_c_c (catanh, -0.0L, 0x1.fp127L, -0.0L, 1.570796326794896619231321691639751442096L),
5257     TEST_c_c (catanh, 0.0L, -0x1.fp127L, 0.0L, -1.570796326794896619231321691639751442096L),
5258     TEST_c_c (catanh, -0.0L, -0x1.fp127L, -0.0L, -1.570796326794896619231321691639751442096L),
5259     TEST_c_c (catanh, 0x1.fp127L, 0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5260     TEST_c_c (catanh, 0x1.fp127L, -0x1.fp127L, 1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5261     TEST_c_c (catanh, -0x1.fp127L, 0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, 1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5262     TEST_c_c (catanh, -0x1.fp127L, -0x1.fp127L, -1.516766904286822590927401983512575068153e-39L, -1.570796326794896619231321691639751442097L, UNDERFLOW_EXCEPTION_FLOAT),
5263 #ifndef TEST_FLOAT
5264     TEST_c_c (catanh, 0x1p900L, 0.0L, 1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5265     TEST_c_c (catanh, 0x1p900L, -0.0L, 1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5266     TEST_c_c (catanh, -0x1p900L, 0.0L, -1.183052186166774710972751597518026531652e-271L, 1.570796326794896619231321691639751442099L),
5267     TEST_c_c (catanh, -0x1p900L, -0.0L, -1.183052186166774710972751597518026531652e-271L, -1.570796326794896619231321691639751442099L),
5268     TEST_c_c (catanh, 0.0L, 0x1p900L, 0.0L, 1.570796326794896619231321691639751442099L),
5269     TEST_c_c (catanh, -0.0L, 0x1p900L, -0.0L, 1.570796326794896619231321691639751442099L),
5270     TEST_c_c (catanh, 0.0L, -0x1p900L, 0.0L, -1.570796326794896619231321691639751442099L),
5271     TEST_c_c (catanh, -0.0L, -0x1p900L, -0.0L, -1.570796326794896619231321691639751442099L),
5272     TEST_c_c (catanh, 0x1.fp1023L, 0.0L, 5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5273     TEST_c_c (catanh, 0x1.fp1023L, -0.0L, 5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5274     TEST_c_c (catanh, -0x1.fp1023L, 0.0L, -5.742126086470197117652213464083623391533e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5275     TEST_c_c (catanh, -0x1.fp1023L, -0.0L, -5.742126086470197117652213464083623391533e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5276     TEST_c_c (catanh, 0.0L, 0x1.fp1023L, 0.0L, 1.570796326794896619231321691639751442099L),
5277     TEST_c_c (catanh, -0.0L, 0x1.fp1023L, -0.0L, 1.570796326794896619231321691639751442099L),
5278     TEST_c_c (catanh, 0.0L, -0x1.fp1023L, 0.0L, -1.570796326794896619231321691639751442099L),
5279     TEST_c_c (catanh, -0.0L, -0x1.fp1023L, -0.0L, -1.570796326794896619231321691639751442099L),
5280     TEST_c_c (catanh, 0x1.fp1023L, 0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5281     TEST_c_c (catanh, 0x1.fp1023L, -0x1.fp1023L, 2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5282     TEST_c_c (catanh, -0x1.fp1023L, 0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5283     TEST_c_c (catanh, -0x1.fp1023L, -0x1.fp1023L, -2.871063043235098558826106732041811695767e-309L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
5284 #endif
5285 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5286     TEST_c_c (catanh, 0x1p10000L, 0.0L, 5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5287     TEST_c_c (catanh, 0x1p10000L, -0.0L, 5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5288     TEST_c_c (catanh, -0x1p10000L, 0.0L, -5.012372749206452009297555933742977749322e-3011L, 1.570796326794896619231321691639751442099L),
5289     TEST_c_c (catanh, -0x1p10000L, -0.0L, -5.012372749206452009297555933742977749322e-3011L, -1.570796326794896619231321691639751442099L),
5290     TEST_c_c (catanh, 0.0L, 0x1p10000L, 0.0L, 1.570796326794896619231321691639751442099L),
5291     TEST_c_c (catanh, -0.0L, 0x1p10000L, -0.0L, 1.570796326794896619231321691639751442099L),
5292     TEST_c_c (catanh, 0.0L, -0x1p10000L, 0.0L, -1.570796326794896619231321691639751442099L),
5293     TEST_c_c (catanh, -0.0L, -0x1p10000L, -0.0L, -1.570796326794896619231321691639751442099L),
5294     TEST_c_c (catanh, 0x1.fp16383L, 0.0L, 8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5295     TEST_c_c (catanh, 0x1.fp16383L, -0.0L, 8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5296     TEST_c_c (catanh, -0x1.fp16383L, 0.0L, -8.676395208031209048419813722120651877672e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5297     TEST_c_c (catanh, -0x1.fp16383L, -0.0L, -8.676395208031209048419813722120651877672e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5298     TEST_c_c (catanh, 0.0L, 0x1.fp16383L, 0.0L, 1.570796326794896619231321691639751442099L),
5299     TEST_c_c (catanh, -0.0L, 0x1.fp16383L, -0.0L, 1.570796326794896619231321691639751442099L),
5300     TEST_c_c (catanh, 0.0L, -0x1.fp16383L, 0.0L, -1.570796326794896619231321691639751442099L),
5301     TEST_c_c (catanh, -0.0L, -0x1.fp16383L, -0.0L, -1.570796326794896619231321691639751442099L),
5302     TEST_c_c (catanh, 0x1.fp16383L, 0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5303     TEST_c_c (catanh, 0x1.fp16383L, -0x1.fp16383L, 4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5304     TEST_c_c (catanh, -0x1.fp16383L, 0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5305     TEST_c_c (catanh, -0x1.fp16383L, -0x1.fp16383L, -4.338197604015604524209906861060325938836e-4933L, -1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
5306 #endif
5307     TEST_c_c (catanh, 0x1p-13L, 1.0L, 6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5308     TEST_c_c (catanh, 0x1p-13L, -1.0L, 6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5309     TEST_c_c (catanh, -0x1p-13L, 1.0L, -6.103515609841754902688560615027452023669e-5L, 7.853981671227386080775748393881580082970e-1L),
5310     TEST_c_c (catanh, -0x1p-13L, -1.0L, -6.103515609841754902688560615027452023669e-5L, -7.853981671227386080775748393881580082970e-1L),
5311     TEST_c_c (catanh, 1.0L, 0x1p-13L, 4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5312     TEST_c_c (catanh, -1.0L, 0x1p-13L, -4.852030264850939738801379894163661227127L, 7.854286809755354140031716771044626356262e-1L),
5313     TEST_c_c (catanh, 1.0L, -0x1p-13L, 4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5314     TEST_c_c (catanh, -1.0L, -0x1p-13L, -4.852030264850939738801379894163661227127L, -7.854286809755354140031716771044626356262e-1L),
5315     TEST_c_c (catanh, 0x1p-27L, 1.0L, 3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5316     TEST_c_c (catanh, 0x1p-27L, -1.0L, 3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5317     TEST_c_c (catanh, -0x1p-27L, 1.0L, -3.725290298461914028034141143623846306386e-9L, 7.853981633974483234934486536343324763447e-1L),
5318     TEST_c_c (catanh, -0x1p-27L, -1.0L, -3.725290298461914028034141143623846306386e-9L, -7.853981633974483234934486536343324763447e-1L),
5319     TEST_c_c (catanh, 1.0L, 0x1p-27L, 9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5320     TEST_c_c (catanh, -1.0L, 0x1p-27L, -9.704060527839234335310696652368086117807L, 7.853981652600934588466178684534110069553e-1L),
5321     TEST_c_c (catanh, 1.0L, -0x1p-27L, 9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5322     TEST_c_c (catanh, -1.0L, -0x1p-27L, -9.704060527839234335310696652368086117807L, -7.853981652600934588466178684534110069553e-1L),
5323     TEST_c_c (catanh, 0x1p-33L, 1.0L, 5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5324     TEST_c_c (catanh, 0x1p-33L, -1.0L, 5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5325     TEST_c_c (catanh, -0x1p-33L, 1.0L, -5.820766091346740722643102318246316469910e-11L, 7.853981633974483096190489776088929224056e-1L),
5326     TEST_c_c (catanh, -0x1p-33L, -1.0L, -5.820766091346740722643102318246316469910e-11L, -7.853981633974483096190489776088929224056e-1L),
5327     TEST_c_c (catanh, 1.0L, 0x1p-33L, 1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5328     TEST_c_c (catanh, -1.0L, 0x1p-33L, -1.178350206951907026009379309773625595762e1L, 7.853981634265521400723945494331241018449e-1L),
5329     TEST_c_c (catanh, 1.0L, -0x1p-33L, 1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5330     TEST_c_c (catanh, -1.0L, -0x1p-33L, -1.178350206951907026009379309773625595762e1L, -7.853981634265521400723945494331241018449e-1L),
5331     TEST_c_c (catanh, 0x1p-54L, 1.0L, 2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5332     TEST_c_c (catanh, 0x1p-54L, -1.0L, 2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5333     TEST_c_c (catanh, -0x1p-54L, 1.0L, -2.775557561562891351059079170227049355775e-17L, 7.853981633974483096156608458198764914213e-1L),
5334     TEST_c_c (catanh, -0x1p-54L, -1.0L, -2.775557561562891351059079170227049355775e-17L, -7.853981633974483096156608458198764914213e-1L),
5335     TEST_c_c (catanh, 1.0L, 0x1p-54L, 1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5336     TEST_c_c (catanh, -1.0L, 0x1p-54L, -1.906154746539849600897388334009985581467e1L, 7.853981633974483234934486536343324763447e-1L),
5337     TEST_c_c (catanh, 1.0L, -0x1p-54L, 1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5338     TEST_c_c (catanh, -1.0L, -0x1p-54L, -1.906154746539849600897388334009985581467e1L, -7.853981633974483234934486536343324763447e-1L),
5339     TEST_c_c (catanh, 0x1p-57L, 1.0L, 3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5340     TEST_c_c (catanh, 0x1p-57L, -1.0L, 3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5341     TEST_c_c (catanh, -0x1p-57L, 1.0L, -3.469446951953614188823848962783813448721e-18L, 7.853981633974483096156608458198757330864e-1L),
5342     TEST_c_c (catanh, -0x1p-57L, -1.0L, -3.469446951953614188823848962783813448721e-18L, -7.853981633974483096156608458198757330864e-1L),
5343     TEST_c_c (catanh, 1.0L, 0x1p-57L, 2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5344     TEST_c_c (catanh, -1.0L, 0x1p-57L, -2.010126823623841397309973152228712047720e1L, 7.853981633974483113503843217966828154612e-1L),
5345     TEST_c_c (catanh, 1.0L, -0x1p-57L, 2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5346     TEST_c_c (catanh, -1.0L, -0x1p-57L, -2.010126823623841397309973152228712047720e1L, -7.853981633974483113503843217966828154612e-1L),
5347     TEST_c_c (catanh, 0x1p-13L, 0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5348     TEST_c_c (catanh, 0x1p-13L, -0x1.000002p0L, 6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5349     TEST_c_c (catanh, -0x1p-13L, 0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, 7.853982267273793866654490522673596014524e-1L),
5350     TEST_c_c (catanh, -0x1p-13L, -0x1.000002p0L, -6.103514882246036852433556327261700380577e-5L, -7.853982267273793866654490522673596014524e-1L),
5351     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-13L, 4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5352     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-13L, -4.852030056234795712498957387213592193975L, 7.859169620684960844300240092596908675974e-1L),
5353     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-13L, 4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5354     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-13L, -4.852030056234795712498957387213592193975L, -7.859169620684960844300240092596908675974e-1L),
5355     TEST_c_c (catanh, 0x1p-13L, 0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5356     TEST_c_c (catanh, 0x1p-13L, -0x0.ffffffp0L, 6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5357     TEST_c_c (catanh, -0x1p-13L, 0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, 7.853981373204155542484315721351697277336e-1L),
5358     TEST_c_c (catanh, -0x1p-13L, -0x0.ffffffp0L, -6.103515973639646453881721999956617260502e-5L, -7.853981373204155542484315721351697277336e-1L),
5359     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-13L, 4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5360     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-13L, -4.852030190345140708455871037447717761868L, 7.851845403708474595909269086711426246675e-1L),
5361     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-13L, 4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5362     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-13L, -4.852030190345140708455871037447717761868L, -7.851845403708474595909269086711426246675e-1L),
5363 #ifndef TEST_FLOAT
5364     TEST_c_c (catanh, 0x1p-27L, 0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5365     TEST_c_c (catanh, 0x1p-27L, -0x1.0000000000001p0L, 3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5366     TEST_c_c (catanh, -0x1p-27L, 0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, 7.853981633974484345157511161499711112683e-1L),
5367     TEST_c_c (catanh, -0x1p-27L, -0x1.0000000000001p0L, -3.725290298461913200853528590596263270474e-9L, -7.853981633974484345157511161499711112683e-1L),
5368     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-27L, 9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5369     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-27L, -9.704060527839234168777242958594699810015L, 7.853981801612546526942695000283242525531e-1L),
5370     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-27L, 9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5371     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-27L, -9.704060527839234168777242958594699810015L, -7.853981801612546526942695000283242525531e-1L),
5372     TEST_c_c (catanh, 0x1p-27L, 0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5373     TEST_c_c (catanh, 0x1p-27L, -0x0.fffffffffffff8p0L, 3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5374     TEST_c_c (catanh, -0x1p-27L, 0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, 7.853981633974482679822974223765039144191e-1L),
5375     TEST_c_c (catanh, -0x1p-27L, -0x0.fffffffffffff8p0L, -3.725290298461914441624447420137706700965e-9L, -7.853981633974482679822974223765039144191e-1L),
5376     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-27L, 9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5377     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-27L, -9.704060527839234252043969805481351363824L, 7.853981578095128619227903983047292781021e-1L),
5378     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-27L, 9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5379     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-27L, -9.704060527839234252043969805481351363824L, -7.853981578095128619227903983047292781021e-1L),
5380 #endif
5381 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5382     TEST_c_c (catanh, 0x1p-33L, 0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5383     TEST_c_c (catanh, 0x1p-33L, -0x1.0000000000000002p0L, 5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5384     TEST_c_c (catanh, -0x1p-33L, 0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, 7.853981633974483096732590862331681441026e-1L),
5385     TEST_c_c (catanh, -0x1p-33L, -0x1.0000000000000002p0L, -5.820766091346740722012013594069507025615e-11L, -7.853981633974483096732590862331681441026e-1L),
5386     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-33L, 1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5387     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-33L, -1.178350206951907025990405771755129268176e1L, 7.853981638922134273801338071094141188767e-1L),
5388     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-33L, 1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5389     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-33L, -1.178350206951907025990405771755129268176e1L, -7.853981638922134273801338071094141188767e-1L),
5390     TEST_c_c (catanh, 0x1p-33L, 0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5391     TEST_c_c (catanh, 0x1p-33L, -0x0.ffffffffffffffffp0L, 5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5392     TEST_c_c (catanh, -0x1p-33L, 0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, 7.853981633974483095919439232967553115548e-1L),
5393     TEST_c_c (catanh, -0x1p-33L, -0x0.ffffffffffffffffp0L, -5.820766091346740722958646680334721192083e-11L, -7.853981633974483095919439232967553115548e-1L),
5394     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-33L, 1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5395     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-33L, -1.178350206951907026002603046195591193050e1L, 7.853981631937214964185249205444919953948e-1L),
5396     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-33L, 1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5397     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-33L, -1.178350206951907026002603046195591193050e1L, -7.853981631937214964185249205444919953948e-1L),
5398 #endif
5399 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5400     TEST_c_c (catanh, 0x1p-54L, 0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5401     TEST_c_c (catanh, 0x1p-54L, -0x1.000000000000000000000000008p0L, 2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5402     TEST_c_c (catanh, -0x1p-54L, 0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, 7.853981633974483096156608458198888173729e-1L),
5403     TEST_c_c (catanh, -0x1p-54L, -0x1.000000000000000000000000008p0L, -2.775557561562891351059079170226980932999e-17L, -7.853981633974483096156608458198888173729e-1L),
5404     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-54L, 1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5405     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-54L, -1.906154746539849600897388334009981267384e1L, 7.853981633974485455380535786656405610710e-1L),
5406     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-54L, 1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5407     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-54L, -1.906154746539849600897388334009981267384e1L, -7.853981633974485455380535786656405610710e-1L),
5408     TEST_c_c (catanh, 0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5409     TEST_c_c (catanh, 0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, 2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5410     TEST_c_c (catanh, -0x1p-54L, 0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, 7.853981633974483096156608458198703284454e-1L),
5411     TEST_c_c (catanh, -0x1p-54L, -0x0.ffffffffffffffffffffffffffcp0L, -2.775557561562891351059079170227083567164e-17L, -7.853981633974483096156608458198703284454e-1L),
5412     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, 1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5413     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-54L, -1.906154746539849600897388334009984040723e1L, 7.853981633974482124711461911186784339815e-1L),
5414     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, 1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5415     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-54L, -1.906154746539849600897388334009984040723e1L, -7.853981633974482124711461911186784339815e-1L),
5416 #endif
5417 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
5418     TEST_c_c (catanh, 0x1p-57L, 0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5419     TEST_c_c (catanh, 0x1p-57L, -0x1.0000000000000000000000000001p0L, 3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5420     TEST_c_c (catanh, -0x1p-57L, 0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, 7.853981633974483096156608458198758293829e-1L),
5421     TEST_c_c (catanh, -0x1p-57L, -0x1.0000000000000000000000000001p0L, -3.469446951953614188823848962783812780530e-18L, -7.853981633974483096156608458198758293829e-1L),
5422     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-57L, 2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5423     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-57L, -2.010126823623841397309973152228712033275e1L, 7.853981633974483252281721296111395707566e-1L),
5424     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-57L, 2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5425     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-57L, -2.010126823623841397309973152228712033275e1L, -7.853981633974483252281721296111395707566e-1L),
5426     TEST_c_c (catanh, 0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5427     TEST_c_c (catanh, 0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, 3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5428     TEST_c_c (catanh, -0x1p-57L, 0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, 7.853981633974483096156608458198756849381e-1L),
5429     TEST_c_c (catanh, -0x1p-57L, -0x0.ffffffffffffffffffffffffffff8p0L, -3.469446951953614188823848962783813782817e-18L, -7.853981633974483096156608458198756849381e-1L),
5430     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, 2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5431     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-57L, -2.010126823623841397309973152228712040498e1L, 7.853981633974483044114904178894544378135e-1L),
5432     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, 2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5433     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-57L, -2.010126823623841397309973152228712040498e1L, -7.853981633974483044114904178894544378135e-1L),
5434 #endif
5435     TEST_c_c (catanh, 1.0L, 0x1p-64L, 2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5436     TEST_c_c (catanh, 1.0L, -0x1p-64L, 2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5437     TEST_c_c (catanh, -1.0L, 0x1p-64L, -2.252728336819822255606004394739073846245e1L, 7.853981633974483096292133729759445264744e-1L),
5438     TEST_c_c (catanh, -1.0L, -0x1p-64L, -2.252728336819822255606004394739073846245e1L, -7.853981633974483096292133729759445264744e-1L),
5439     TEST_c_c (catanh, 0x1p-64L, 1.0L, 2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5440     TEST_c_c (catanh, -0x1p-64L, 1.0L, -2.710505431213761085018632002174854278563e-20L, 7.853981633974483096156608458198757210500e-1L),
5441     TEST_c_c (catanh, 0x1p-64L, -1.0L, 2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5442     TEST_c_c (catanh, -0x1p-64L, -1.0L, -2.710505431213761085018632002174854278563e-20L, -7.853981633974483096156608458198757210500e-1L),
5443     TEST_c_c (catanh, 1.0L, 0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5444     TEST_c_c (catanh, 1.0L, -0x1.3p-73L, 2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5445     TEST_c_c (catanh, -1.0L, 0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, 7.853981633974483096156922786831527361009e-1L),
5446     TEST_c_c (catanh, -1.0L, -0x1.3p-73L, -2.556052055225464683726753902092495938633e1L, -7.853981633974483096156922786831527361009e-1L),
5447     TEST_c_c (catanh, 0x1.3p-73L, 1.0L, 6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5448     TEST_c_c (catanh, -0x1.3p-73L, 1.0L, -6.286572655403010329022706059731717687100e-23L, 7.853981633974483096156608458198757210493e-1L),
5449     TEST_c_c (catanh, 0x1.3p-73L, -1.0L, 6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5450     TEST_c_c (catanh, -0x1.3p-73L, -1.0L, -6.286572655403010329022706059731717687100e-23L, -7.853981633974483096156608458198757210493e-1L),
5451     TEST_c_c (catanh, 1.0L, 0x1p-124L, 4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5452     TEST_c_c (catanh, 1.0L, -0x1p-124L, 4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5453     TEST_c_c (catanh, -1.0L, 0x1p-124L, -4.332169878499658183857700759113603550472e1L, 7.853981633974483096156608458198757210610e-1L),
5454     TEST_c_c (catanh, -1.0L, -0x1p-124L, -4.332169878499658183857700759113603550472e1L, -7.853981633974483096156608458198757210610e-1L),
5455     TEST_c_c (catanh, 0x1p-124L, 1.0L, 2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5456     TEST_c_c (catanh, -0x1p-124L, 1.0L, -2.350988701644575015937473074444491355637e-38L, 7.853981633974483096156608458198757210493e-1L),
5457     TEST_c_c (catanh, 0x1p-124L, -1.0L, 2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5458     TEST_c_c (catanh, -0x1p-124L, -1.0L, -2.350988701644575015937473074444491355637e-38L, -7.853981633974483096156608458198757210493e-1L),
5459     TEST_c_c (catanh, 0x1.000002p0L, 0x1p-126L, 8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5460     TEST_c_c (catanh, 0x1.000002p0L, -0x1p-126L, 8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5461     TEST_c_c (catanh, -0x1.000002p0L, 0x1p-126L, -8.317766196521665212523713550410777685446L, 1.570796326794896619231321691639702138295L),
5462     TEST_c_c (catanh, -0x1.000002p0L, -0x1p-126L, -8.317766196521665212523713550410777685446L, -1.570796326794896619231321691639702138295L),
5463     TEST_c_c (catanh, 0x1p-126L, 0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5464     TEST_c_c (catanh, -0x1p-126L, 0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, 7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5465     TEST_c_c (catanh, 0x1p-126L, -0x1.000002p0L, 5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5466     TEST_c_c (catanh, -0x1p-126L, -0x1.000002p0L, -5.877471053462247139383742414506671233336e-39L, -7.853982230020895322927482174768220815493e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5467     TEST_c_c (catanh, 0x0.ffffffp0L, 0x1p-126L, 8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5468     TEST_c_c (catanh, 0x0.ffffffp0L, -0x1p-126L, 8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5469     TEST_c_c (catanh, -0x0.ffffffp0L, 0x1p-126L, -8.664339742098154951823135931565866792454L, 9.860761609136244031334147100512154160097e-32L),
5470     TEST_c_c (catanh, -0x0.ffffffp0L, -0x1p-126L, -8.664339742098154951823135931565866792454L, -9.860761609136244031334147100512154160097e-32L),
5471     TEST_c_c (catanh, 0x1p-126L, 0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5472     TEST_c_c (catanh, -0x1p-126L, 0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, 7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5473     TEST_c_c (catanh, 0x1p-126L, -0x0.ffffffp0L, 5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5474     TEST_c_c (catanh, -0x1p-126L, -0x0.ffffffp0L, -5.877472104436064061535099214664320916184e-39L, -7.853981335951250337419109991749089175724e-1L, UNDERFLOW_EXCEPTION_FLOAT),
5475 #ifndef TEST_FLOAT
5476     TEST_c_c (catanh, 1.0L, 0x1p-512L, 1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5477     TEST_c_c (catanh, 1.0L, -0x1p-512L, 1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5478     TEST_c_c (catanh, -1.0L, 0x1p-512L, -1.777922518136259718655200391540222897114e2L, 7.853981633974483096156608458198757210493e-1L),
5479     TEST_c_c (catanh, -1.0L, -0x1p-512L, -1.777922518136259718655200391540222897114e2L, -7.853981633974483096156608458198757210493e-1L),
5480     TEST_c_c (catanh, 0x1p-512L, 1.0L, 3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5481     TEST_c_c (catanh, -0x1p-512L, 1.0L, -3.729170365600103371645482657731466918688e-155L, 7.853981633974483096156608458198757210493e-1L),
5482     TEST_c_c (catanh, 0x1p-512L, -1.0L, 3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5483     TEST_c_c (catanh, -0x1p-512L, -1.0L, -3.729170365600103371645482657731466918688e-155L, -7.853981633974483096156608458198757210493e-1L),
5484     TEST_c_c (catanh, 1.0L, 0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5485     TEST_c_c (catanh, 1.0L, -0x1.3p-536L, 1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5486     TEST_c_c (catanh, -1.0L, 0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, 7.853981633974483096156608458198757210493e-1L),
5487     TEST_c_c (catanh, -1.0L, -0x1.3p-536L, -1.860240928518819859673567751384928348958e2L, -7.853981633974483096156608458198757210493e-1L),
5488     TEST_c_c (catanh, 0x1.3p-536L, 1.0L, 2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5489     TEST_c_c (catanh, -0x1.3p-536L, 1.0L, -2.639526015013529511588222179446290115084e-162L, 7.853981633974483096156608458198757210493e-1L),
5490     TEST_c_c (catanh, 0x1.3p-536L, -1.0L, 2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5491     TEST_c_c (catanh, -0x1.3p-536L, -1.0L, -2.639526015013529511588222179446290115084e-162L, -7.853981633974483096156608458198757210493e-1L),
5492     TEST_c_c (catanh, 1.0L, 0x1p-1020L, 3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5493     TEST_c_c (catanh, 1.0L, -0x1p-1020L, 3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5494     TEST_c_c (catanh, -1.0L, 0x1p-1020L, -3.538516356758520804574969980043991380025e2L, 7.853981633974483096156608458198757210493e-1L),
5495     TEST_c_c (catanh, -1.0L, -0x1p-1020L, -3.538516356758520804574969980043991380025e2L, -7.853981633974483096156608458198757210493e-1L),
5496     TEST_c_c (catanh, 0x1p-1020L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5497     TEST_c_c (catanh, -0x1p-1020L, 1.0L, -4.450147717014402766180465434664808128438e-308L, 7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5498     TEST_c_c (catanh, 0x1p-1020L, -1.0L, 4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5499     TEST_c_c (catanh, -0x1p-1020L, -1.0L, -4.450147717014402766180465434664808128438e-308L, -7.853981633974483096156608458198757210493e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5500     TEST_c_c (catanh, 0x1.0000000000001p0L, 0x1p-1022L, 1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5501     TEST_c_c (catanh, 0x1.0000000000001p0L, -0x1p-1022L, 1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5502     TEST_c_c (catanh, -0x1.0000000000001p0L, 0x1p-1022L, -1.836840028483855075506780244989950299369e1L, 1.570796326794896619231321691639751442099L),
5503     TEST_c_c (catanh, -0x1.0000000000001p0L, -0x1p-1022L, -1.836840028483855075506780244989950299369e1L, -1.570796326794896619231321691639751442099L),
5504     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5505     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, 7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5506     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000001p0L, 1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5507     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000001p0L, -1.112536929253600444512293438042957369978e-308L, -7.853981633974484206379633083355174374608e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5508     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, 0x1p-1022L, 1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5509     TEST_c_c (catanh, 0x0.fffffffffffff8p0L, -0x1p-1022L, 1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5510     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, 0x1p-1022L, -1.871497387511852332650969166374185305708e1L, 1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5511     TEST_c_c (catanh, -0x0.fffffffffffff8p0L, -0x1p-1022L, -1.871497387511852332650969166374185305708e1L, -1.002084180004486444624900488355118689113e-292L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
5512     TEST_c_c (catanh, 0x1p-1022L, 0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5513     TEST_c_c (catanh, -0x1p-1022L, 0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, 7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5514     TEST_c_c (catanh, 0x1p-1022L, -0x0.fffffffffffff8p0L, 1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5515     TEST_c_c (catanh, -0x1p-1022L, -0x0.fffffffffffff8p0L, -1.112536929253600815061527818977844932790e-308L, -7.853981633974482541045096145620456183798e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5516 #endif
5517 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
5518     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-1022L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5519     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-1022L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5520     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-1022L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5521     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-1022L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5522     TEST_c_c (catanh, 0x1p-1022L, 0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5523     TEST_c_c (catanh, -0x1p-1022L, 0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5524     TEST_c_c (catanh, 0x1p-1022L, -0x1.0000000000000002p0L, 1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5525     TEST_c_c (catanh, -0x1p-1022L, -0x1.0000000000000002p0L, -1.112536929253600691424494863099491450042e-308L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5526     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-1022L, 2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5527     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-1022L, 2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5528     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-1022L, -2.252728336819822255604649142023466965703e1L, 2.052268400649188124723641491045245971623e-289L),
5529     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-1022L, -2.252728336819822255604649142023466965703e1L, -2.052268400649188124723641491045245971623e-289L),
5530     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5531     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5532     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffp0L, 1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5533     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffp0L, -1.112536929253600691605427106449557323148e-308L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5534 #endif
5535 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
5536     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, 0x1p-1022L, 3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5537     TEST_c_c (catanh, 0x1.000000000000000000000000008p0L, -0x1p-1022L, 3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5538     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, 0x1p-1022L, -3.673680056967710139911330243728336427098e1L, 1.570796326794896619231321691639751442099L),
5539     TEST_c_c (catanh, -0x1.000000000000000000000000008p0L, -0x1p-1022L, -3.673680056967710139911330243728336427098e1L, -1.570796326794896619231321691639751442099L),
5540     TEST_c_c (catanh, 0x1p-1022L, 0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5541     TEST_c_c (catanh, -0x1p-1022L, 0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, 7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5542     TEST_c_c (catanh, 0x1p-1022L, -0x1.000000000000000000000000008p0L, 1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5543     TEST_c_c (catanh, -0x1p-1022L, -0x1.000000000000000000000000008p0L, -1.112536929253600691545116358666174605957e-308L, -7.853981633974483096156608458198880470009e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5544     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, 3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5545     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, 3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5546     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, 0x1p-1022L, -3.708337415995707405382191849801244331055e1L, 9.025971879324147880346310405868788320726e-277L),
5547     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffcp0L, -0x1p-1022L, -3.708337415995707405382191849801244331055e1L, -9.025971879324147880346310405868788320726e-277L),
5548     TEST_c_c (catanh, 0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5549     TEST_c_c (catanh, -0x1p-1022L, 0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, 7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5550     TEST_c_c (catanh, 0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, 1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5551     TEST_c_c (catanh, -0x1p-1022L, -0x0.ffffffffffffffffffffffffffcp0L, -1.112536929253600691545116358666215745186e-308L, -7.853981633974483096156608458198695580735e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
5552 #endif
5553 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5554     TEST_c_c (catanh, 1.0L, 0x1p-8192L, 2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5555     TEST_c_c (catanh, 1.0L, -0x1p-8192L, 2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5556     TEST_c_c (catanh, -1.0L, 0x1p-8192L, -2.839477425163815960027691385553420311121e3L, 7.853981633974483096156608458198757210493e-1L),
5557     TEST_c_c (catanh, -1.0L, -0x1p-8192L, -2.839477425163815960027691385553420311121e3L, -7.853981633974483096156608458198757210493e-1L),
5558     TEST_c_c (catanh, 0x1p-8192L, 1.0L, 4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5559     TEST_c_c (catanh, -0x1p-8192L, 1.0L, -4.584009668887117914053530980121207914891e-2467L, 7.853981633974483096156608458198757210493e-1L),
5560     TEST_c_c (catanh, 0x1p-8192L, -1.0L, 4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5561     TEST_c_c (catanh, -0x1p-8192L, -1.0L, -4.584009668887117914053530980121207914891e-2467L, -7.853981633974483096156608458198757210493e-1L),
5562     TEST_c_c (catanh, 1.0L, 0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5563     TEST_c_c (catanh, 1.0L, -0x1.3p-8221L, 2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5564     TEST_c_c (catanh, -1.0L, 0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, 7.853981633974483096156608458198757210493e-1L),
5565     TEST_c_c (catanh, -1.0L, -0x1.3p-8221L, -2.849442134153471837403071201841536297726e3L, -7.853981633974483096156608458198757210493e-1L),
5566     TEST_c_c (catanh, 0x1.3p-8221L, 1.0L, 1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5567     TEST_c_c (catanh, -0x1.3p-8221L, 1.0L, -1.013933025636421986471594877335044443409e-2475L, 7.853981633974483096156608458198757210493e-1L),
5568     TEST_c_c (catanh, 0x1.3p-8221L, -1.0L, 1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5569     TEST_c_c (catanh, -0x1.3p-8221L, -1.0L, -1.013933025636421986471594877335044443409e-2475L, -7.853981633974483096156608458198757210493e-1L),
5570     TEST_c_c (catanh, 1.0L, 0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5571     TEST_c_c (catanh, 1.0L, -0x1.3p-8246L, 2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5572     TEST_c_c (catanh, -1.0L, 0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, 7.853981633974483096156608458198757210493e-1L),
5573     TEST_c_c (catanh, -1.0L, -0x1.3p-8246L, -2.858106473910471153770786603359763504827e3L, -7.853981633974483096156608458198757210493e-1L),
5574     TEST_c_c (catanh, 0x1.3p-8246L, 1.0L, 3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5575     TEST_c_c (catanh, -0x1.3p-8246L, 1.0L, -3.021755890954798419688924781486524472858e-2483L, 7.853981633974483096156608458198757210493e-1L),
5576     TEST_c_c (catanh, 0x1.3p-8246L, -1.0L, 3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5577     TEST_c_c (catanh, -0x1.3p-8246L, -1.0L, -3.021755890954798419688924781486524472858e-2483L, -7.853981633974483096156608458198757210493e-1L),
5578     TEST_c_c (catanh, 1.0L, 0x1p-16380L, 5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5579     TEST_c_c (catanh, 1.0L, -0x1p-16380L, 5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5580     TEST_c_c (catanh, -1.0L, 0x1p-16380L, -5.677221982376232056781839690803195180822e3L, 7.853981633974483096156608458198757210493e-1L),
5581     TEST_c_c (catanh, -1.0L, -0x1p-16380L, -5.677221982376232056781839690803195180822e3L, -7.853981633974483096156608458198757210493e-1L),
5582     TEST_c_c (catanh, 0x1p-16380L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5583     TEST_c_c (catanh, -0x1p-16380L, 1.0L, -6.724206286224187012525355634643505205196e-4932L, 7.853981633974483096156608458198757210493e-1L),
5584     TEST_c_c (catanh, 0x1p-16380L, -1.0L, 6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5585     TEST_c_c (catanh, -0x1p-16380L, -1.0L, -6.724206286224187012525355634643505205196e-4932L, -7.853981633974483096156608458198757210493e-1L),
5586     TEST_c_c (catanh, 0x1.0000000000000002p0L, 0x1p-16382L, 2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5587     TEST_c_c (catanh, 0x1.0000000000000002p0L, -0x1p-16382L, 2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5588     TEST_c_c (catanh, -0x1.0000000000000002p0L, 0x1p-16382L, -2.218070977791824990137853294097378778927e1L, 1.570796326794896619231321691639751442099L),
5589     TEST_c_c (catanh, -0x1.0000000000000002p0L, -0x1p-16382L, -2.218070977791824990137853294097378778927e1L, -1.570796326794896619231321691639751442099L),
5590     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5591     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, 7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5592     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000002p0L, 1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5593     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000002p0L, -1.681051571556046752949078932066752571182e-4932L, -7.853981633974483096698709544441509427467e-1L, UNDERFLOW_EXCEPTION),
5594     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, 0x1p-16382L, 2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5595     TEST_c_c (catanh, 0x0.ffffffffffffffffp0L, -0x1p-16382L, 2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5596     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, 0x1p-16382L, -2.252728336819822255604649142023466965703e1L, 3.100992811520163369065387859792822623745e-4913L),
5597     TEST_c_c (catanh, -0x0.ffffffffffffffffp0L, -0x1p-16382L, -2.252728336819822255604649142023466965703e1L, -3.100992811520163369065387859792822623745e-4913L),
5598     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5599     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, 7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5600     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffp0L, 1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5601     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffp0L, -1.681051571556046753222468896957938166365e-4932L, -7.853981633974483095885557915077381101984e-1L, UNDERFLOW_EXCEPTION),
5602 # if LDBL_MANT_DIG >= 113
5603     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, 0x1p-16382L, 3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5604     TEST_c_c (catanh, 0x1.0000000000000000000000000001p0L, -0x1p-16382L, 3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5605     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, 0x1p-16382L, -3.916281570163690998207361486238697614441e1L, 1.570796326794896619231321691639751442099L),
5606     TEST_c_c (catanh, -0x1.0000000000000000000000000001p0L, -0x1p-16382L, -3.916281570163690998207361486238697614441e1L, -1.570796326794896619231321691639751442099L),
5607     TEST_c_c (catanh, 0x1p-16382L, 0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5608     TEST_c_c (catanh, -0x1p-16382L, 0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, 7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5609     TEST_c_c (catanh, 0x1p-16382L, -0x1.0000000000000000000000000001p0L, 1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5610     TEST_c_c (catanh, -0x1p-16382L, -0x1.0000000000000000000000000001p0L, -1.681051571556046753131338908660875977540e-4932L, -7.853981633974483096156608458198758173458e-1L, UNDERFLOW_EXCEPTION),
5611     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, 3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5612     TEST_c_c (catanh, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, 3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5613     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, 0x1p-16382L, -3.950938929191688263678223092311606435623e1L, 1.745703758805099310527547423749501866998e-4898L),
5614     TEST_c_c (catanh, -0x0.ffffffffffffffffffffffffffff8p0L, -0x1p-16382L, -3.950938929191688263678223092311606435623e1L, -1.745703758805099310527547423749501866998e-4898L),
5615     TEST_c_c (catanh, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5616     TEST_c_c (catanh, -0x1p-16382L, 0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, 7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5617     TEST_c_c (catanh, 0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, 1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5618     TEST_c_c (catanh, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffff8p0L, -1.681051571556046753131338908660876463178e-4932L, -7.853981633974483096156608458198756729010e-1L, UNDERFLOW_EXCEPTION),
5619 # endif
5620 #endif
5621
5622     TEST_c_c (catanh, 0.75L, 1.25L, 0.261492138795671927078652057366532140L, 0.996825126463918666098902241310446708L),
5623     TEST_c_c (catanh, -2, -3, -0.14694666622552975204743278515471595L, -1.3389725222944935611241935759091443L),
5624     END_DATA (catanh)
5625   };
5626
5627 static void
5628 catanh_test (void)
5629 {
5630   errno = 0;
5631   FUNC(catanh) (BUILD_COMPLEX (0.7L, 1.2L));
5632   if (errno == ENOSYS)
5633     /* Function not implemented.  */
5634     return;
5635
5636   START (catanh);
5637   RUN_TEST_LOOP_c_c (catanh, catanh_test_data, );
5638   END (catanh, complex);
5639 }
5640
5641 static const struct test_f_f_data cbrt_test_data[] =
5642   {
5643     START_DATA (cbrt),
5644     TEST_f_f (cbrt, 0.0, 0.0),
5645     TEST_f_f (cbrt, minus_zero, minus_zero),
5646
5647     TEST_f_f (cbrt, plus_infty, plus_infty),
5648     TEST_f_f (cbrt, minus_infty, minus_infty),
5649     TEST_f_f (cbrt, qnan_value, qnan_value),
5650
5651     TEST_f_f (cbrt, -0.001L, -0.1L),
5652     TEST_f_f (cbrt, 8, 2),
5653     TEST_f_f (cbrt, -27.0, -3.0),
5654     TEST_f_f (cbrt, 0.9921875L, 0.997389022060725270579075195353955217L),
5655     TEST_f_f (cbrt, 0.75L, 0.908560296416069829445605878163630251L),
5656     END_DATA (cbrt)
5657   };
5658
5659 static void
5660 cbrt_test (void)
5661 {
5662   errno = 0;
5663   FUNC(cbrt) (8);
5664   if (errno == ENOSYS)
5665     /* Function not implemented.  */
5666     return;
5667
5668   START (cbrt);
5669   RUN_TEST_LOOP_f_f (cbrt, cbrt_test_data, );
5670   END (cbrt);
5671 }
5672
5673
5674 static const struct test_c_c_data ccos_test_data[] =
5675   {
5676     START_DATA (ccos),
5677     TEST_c_c (ccos, 0.0, 0.0, 1.0, minus_zero),
5678     TEST_c_c (ccos, minus_zero, 0.0, 1.0, 0.0),
5679     TEST_c_c (ccos, 0.0, minus_zero, 1.0, 0.0),
5680     TEST_c_c (ccos, minus_zero, minus_zero, 1.0, minus_zero),
5681
5682     TEST_c_c (ccos, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5683     TEST_c_c (ccos, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5684     TEST_c_c (ccos, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5685     TEST_c_c (ccos, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5686
5687     TEST_c_c (ccos, 0.0, plus_infty, plus_infty, minus_zero),
5688     TEST_c_c (ccos, 0.0, minus_infty, plus_infty, 0.0),
5689     TEST_c_c (ccos, minus_zero, plus_infty, plus_infty, 0.0),
5690     TEST_c_c (ccos, minus_zero, minus_infty, plus_infty, minus_zero),
5691
5692     TEST_c_c (ccos, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5693     TEST_c_c (ccos, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5694     TEST_c_c (ccos, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5695     TEST_c_c (ccos, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5696
5697     TEST_c_c (ccos, 4.625, plus_infty, minus_infty, plus_infty),
5698     TEST_c_c (ccos, 4.625, minus_infty, minus_infty, minus_infty),
5699     TEST_c_c (ccos, -4.625, plus_infty, minus_infty, minus_infty),
5700     TEST_c_c (ccos, -4.625, minus_infty, minus_infty, plus_infty),
5701
5702     TEST_c_c (ccos, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5703     TEST_c_c (ccos, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5704     TEST_c_c (ccos, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5705     TEST_c_c (ccos, minus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
5706
5707     TEST_c_c (ccos, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5708     TEST_c_c (ccos, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5709
5710     TEST_c_c (ccos, qnan_value, plus_infty, plus_infty, qnan_value),
5711     TEST_c_c (ccos, qnan_value, minus_infty, plus_infty, qnan_value),
5712
5713     TEST_c_c (ccos, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5714     TEST_c_c (ccos, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5715
5716     TEST_c_c (ccos, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5717     TEST_c_c (ccos, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5718
5719     TEST_c_c (ccos, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5720     TEST_c_c (ccos, -10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5721
5722     TEST_c_c (ccos, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5723     TEST_c_c (ccos, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5724
5725     TEST_c_c (ccos, qnan_value, qnan_value, qnan_value, qnan_value),
5726
5727     TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L),
5728     TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L),
5729
5730     TEST_c_c (ccos, 0.75, 89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5731     TEST_c_c (ccos, 0.75, -89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5732     TEST_c_c (ccos, -0.75, 89.5, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5733     TEST_c_c (ccos, -0.75, -89.5, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5734
5735 #ifndef TEST_FLOAT
5736     TEST_c_c (ccos, 0.75, 710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5737     TEST_c_c (ccos, 0.75, -710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5738     TEST_c_c (ccos, -0.75, 710.5, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5739     TEST_c_c (ccos, -0.75, -710.5, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5740 #endif
5741
5742 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5743     TEST_c_c (ccos, 0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5744     TEST_c_c (ccos, 0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5745     TEST_c_c (ccos, -0.75, 11357.25, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5746     TEST_c_c (ccos, -0.75, -11357.25, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5747 #endif
5748
5749 #ifdef TEST_FLOAT
5750     TEST_c_c (ccos, 0x1p-149, 180, plus_infty, -1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5751 #endif
5752
5753 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5754     TEST_c_c (ccos, 0x1p-1074, 1440, plus_infty, -5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5755 #endif
5756
5757 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5758     TEST_c_c (ccos, 0x1p-16434L, 22730, plus_infty, -1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5759 #endif
5760
5761     TEST_c_c (ccos, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5762     TEST_c_c (ccos, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
5763     END_DATA (ccos)
5764   };
5765
5766 static void
5767 ccos_test (void)
5768 {
5769   errno = 0;
5770   FUNC(ccos) (BUILD_COMPLEX (0, 0));
5771   if (errno == ENOSYS)
5772     /* Function not implemented.  */
5773     return;
5774
5775   START (ccos);
5776   RUN_TEST_LOOP_c_c (ccos, ccos_test_data, );
5777   END (ccos, complex);
5778 }
5779
5780
5781 static const struct test_c_c_data ccosh_test_data[] =
5782   {
5783     START_DATA (ccosh),
5784     TEST_c_c (ccosh, 0.0, 0.0, 1.0, 0.0),
5785     TEST_c_c (ccosh, minus_zero, 0.0, 1.0, minus_zero),
5786     TEST_c_c (ccosh, 0.0, minus_zero, 1.0, minus_zero),
5787     TEST_c_c (ccosh, minus_zero, minus_zero, 1.0, 0.0),
5788
5789     TEST_c_c (ccosh, 0.0, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5790     TEST_c_c (ccosh, minus_zero, plus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5791     TEST_c_c (ccosh, 0.0, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5792     TEST_c_c (ccosh, minus_zero, minus_infty, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
5793
5794     TEST_c_c (ccosh, plus_infty, 0.0, plus_infty, 0.0),
5795     TEST_c_c (ccosh, minus_infty, 0.0, plus_infty, minus_zero),
5796     TEST_c_c (ccosh, plus_infty, minus_zero, plus_infty, minus_zero),
5797     TEST_c_c (ccosh, minus_infty, minus_zero, plus_infty, 0.0),
5798
5799     TEST_c_c (ccosh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5800     TEST_c_c (ccosh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5801     TEST_c_c (ccosh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5802     TEST_c_c (ccosh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
5803
5804     TEST_c_c (ccosh, plus_infty, 4.625, minus_infty, minus_infty),
5805     TEST_c_c (ccosh, minus_infty, 4.625, minus_infty, plus_infty),
5806     TEST_c_c (ccosh, plus_infty, -4.625, minus_infty, plus_infty),
5807     TEST_c_c (ccosh, minus_infty, -4.625, minus_infty, minus_infty),
5808
5809     TEST_c_c (ccosh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5810     TEST_c_c (ccosh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5811     TEST_c_c (ccosh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5812     TEST_c_c (ccosh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
5813
5814     TEST_c_c (ccosh, 0.0, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5815     TEST_c_c (ccosh, minus_zero, qnan_value, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5816
5817     TEST_c_c (ccosh, plus_infty, qnan_value, plus_infty, qnan_value),
5818     TEST_c_c (ccosh, minus_infty, qnan_value, plus_infty, qnan_value),
5819
5820     TEST_c_c (ccosh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5821     TEST_c_c (ccosh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5822
5823     TEST_c_c (ccosh, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5824     TEST_c_c (ccosh, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
5825
5826     TEST_c_c (ccosh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5827     TEST_c_c (ccosh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5828
5829     TEST_c_c (ccosh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5830     TEST_c_c (ccosh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
5831
5832     TEST_c_c (ccosh, qnan_value, qnan_value, qnan_value, qnan_value),
5833
5834     TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L),
5835
5836     TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L),
5837
5838     TEST_c_c (ccosh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5839     TEST_c_c (ccosh, -89.5, 0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5840     TEST_c_c (ccosh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
5841     TEST_c_c (ccosh, -89.5, -0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
5842
5843 #ifndef TEST_FLOAT
5844     TEST_c_c (ccosh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5845     TEST_c_c (ccosh, -710.5, 0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5846     TEST_c_c (ccosh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
5847     TEST_c_c (ccosh, -710.5, -0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
5848 #endif
5849
5850 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5851     TEST_c_c (ccosh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5852     TEST_c_c (ccosh, -11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5853     TEST_c_c (ccosh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
5854     TEST_c_c (ccosh, -11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
5855 #endif
5856
5857 #ifdef TEST_FLOAT
5858     TEST_c_c (ccosh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
5859 #endif
5860
5861 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
5862     TEST_c_c (ccosh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
5863 #endif
5864
5865 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
5866     TEST_c_c (ccosh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
5867 #endif
5868
5869     TEST_c_c (ccosh, min_subnorm_value * 0x1p120, 0x1p-120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
5870     TEST_c_c (ccosh, 0x1p-120, min_subnorm_value * 0x1p120, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
5871     END_DATA (ccosh)
5872   };
5873
5874 static void
5875 ccosh_test (void)
5876 {
5877   errno = 0;
5878   FUNC(ccosh) (BUILD_COMPLEX (0.7L, 1.2L));
5879   if (errno == ENOSYS)
5880     /* Function not implemented.  */
5881     return;
5882
5883   START (ccosh);
5884   RUN_TEST_LOOP_c_c (ccosh, ccosh_test_data, );
5885   END (ccosh, complex);
5886 }
5887
5888
5889 static const struct test_f_f_data ceil_test_data[] =
5890   {
5891     START_DATA (ceil),
5892     TEST_f_f (ceil, 0.0, 0.0),
5893     TEST_f_f (ceil, minus_zero, minus_zero),
5894     TEST_f_f (ceil, plus_infty, plus_infty),
5895     TEST_f_f (ceil, minus_infty, minus_infty),
5896     TEST_f_f (ceil, qnan_value, qnan_value),
5897
5898     TEST_f_f (ceil, M_PIl, 4.0),
5899     TEST_f_f (ceil, -M_PIl, -3.0),
5900     TEST_f_f (ceil, 0.1, 1.0),
5901     TEST_f_f (ceil, 0.25, 1.0),
5902     TEST_f_f (ceil, 0.625, 1.0),
5903     TEST_f_f (ceil, -0.1, minus_zero),
5904     TEST_f_f (ceil, -0.25, minus_zero),
5905     TEST_f_f (ceil, -0.625, minus_zero),
5906
5907 #ifdef TEST_LDOUBLE
5908     /* The result can only be represented in long double.  */
5909     TEST_f_f (ceil, 4503599627370495.5L, 4503599627370496.0L),
5910     TEST_f_f (ceil, 4503599627370496.25L, 4503599627370497.0L),
5911     TEST_f_f (ceil, 4503599627370496.5L, 4503599627370497.0L),
5912     TEST_f_f (ceil, 4503599627370496.75L, 4503599627370497.0L),
5913     TEST_f_f (ceil, 4503599627370497.5L, 4503599627370498.0L),
5914
5915     TEST_f_f (ceil, -4503599627370495.5L, -4503599627370495.0L),
5916     TEST_f_f (ceil, -4503599627370496.25L, -4503599627370496.0L),
5917     TEST_f_f (ceil, -4503599627370496.5L, -4503599627370496.0L),
5918     TEST_f_f (ceil, -4503599627370496.75L, -4503599627370496.0L),
5919     TEST_f_f (ceil, -4503599627370497.5L, -4503599627370497.0L),
5920
5921 # if LDBL_MANT_DIG > 100
5922     TEST_f_f (ceil, 4503599627370494.5000000000001L, 4503599627370495.0L),
5923     TEST_f_f (ceil, 4503599627370495.5000000000001L, 4503599627370496.0L),
5924     TEST_f_f (ceil, 4503599627370496.5000000000001L, 4503599627370497.0L),
5925     TEST_f_f (ceil, -4503599627370494.5000000000001L, -4503599627370494.0L),
5926     TEST_f_f (ceil, -4503599627370495.5000000000001L, -4503599627370495.0L),
5927     TEST_f_f (ceil, -4503599627370496.5000000000001L, -4503599627370496.0L),
5928 # endif
5929
5930     TEST_f_f (ceil, 9007199254740991.5L, 9007199254740992.0L),
5931     TEST_f_f (ceil, 9007199254740992.25L, 9007199254740993.0L),
5932     TEST_f_f (ceil, 9007199254740992.5L, 9007199254740993.0L),
5933     TEST_f_f (ceil, 9007199254740992.75L, 9007199254740993.0L),
5934     TEST_f_f (ceil, 9007199254740993.5L, 9007199254740994.0L),
5935
5936     TEST_f_f (ceil, -9007199254740991.5L, -9007199254740991.0L),
5937     TEST_f_f (ceil, -9007199254740992.25L, -9007199254740992.0L),
5938     TEST_f_f (ceil, -9007199254740992.5L, -9007199254740992.0L),
5939     TEST_f_f (ceil, -9007199254740992.75L, -9007199254740992.0L),
5940     TEST_f_f (ceil, -9007199254740993.5L, -9007199254740993.0L),
5941
5942 # if LDBL_MANT_DIG > 100
5943     TEST_f_f (ceil, 9007199254740991.0000000000001L, 9007199254740992.0L),
5944     TEST_f_f (ceil, 9007199254740992.0000000000001L, 9007199254740993.0L),
5945     TEST_f_f (ceil, 9007199254740993.0000000000001L, 9007199254740994.0L),
5946     TEST_f_f (ceil, 9007199254740991.5000000000001L, 9007199254740992.0L),
5947     TEST_f_f (ceil, 9007199254740992.5000000000001L, 9007199254740993.0L),
5948     TEST_f_f (ceil, 9007199254740993.5000000000001L, 9007199254740994.0L),
5949
5950     TEST_f_f (ceil, -9007199254740991.0000000000001L, -9007199254740991.0L),
5951     TEST_f_f (ceil, -9007199254740992.0000000000001L, -9007199254740992.0L),
5952     TEST_f_f (ceil, -9007199254740993.0000000000001L, -9007199254740993.0L),
5953     TEST_f_f (ceil, -9007199254740991.5000000000001L, -9007199254740991.0L),
5954     TEST_f_f (ceil, -9007199254740992.5000000000001L, -9007199254740992.0L),
5955     TEST_f_f (ceil, -9007199254740993.5000000000001L, -9007199254740993.0L),
5956 # endif
5957
5958     TEST_f_f (ceil, 72057594037927935.5L, 72057594037927936.0L),
5959     TEST_f_f (ceil, 72057594037927936.25L, 72057594037927937.0L),
5960     TEST_f_f (ceil, 72057594037927936.5L, 72057594037927937.0L),
5961     TEST_f_f (ceil, 72057594037927936.75L, 72057594037927937.0L),
5962     TEST_f_f (ceil, 72057594037927937.5L, 72057594037927938.0L),
5963
5964     TEST_f_f (ceil, -72057594037927935.5L, -72057594037927935.0L),
5965     TEST_f_f (ceil, -72057594037927936.25L, -72057594037927936.0L),
5966     TEST_f_f (ceil, -72057594037927936.5L, -72057594037927936.0L),
5967     TEST_f_f (ceil, -72057594037927936.75L, -72057594037927936.0L),
5968     TEST_f_f (ceil, -72057594037927937.5L, -72057594037927937.0L),
5969
5970     TEST_f_f (ceil, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
5971     TEST_f_f (ceil, 10141204801825835211973625643008.25L, 10141204801825835211973625643009.0L),
5972     TEST_f_f (ceil, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
5973     TEST_f_f (ceil, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
5974     TEST_f_f (ceil, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
5975 #endif
5976     END_DATA (ceil)
5977   };
5978
5979 static void
5980 ceil_test (void)
5981 {
5982   START (ceil);
5983   RUN_TEST_LOOP_f_f (ceil, ceil_test_data, );
5984   END (ceil);
5985 }
5986
5987
5988 static const struct test_c_c_data cexp_test_data[] =
5989   {
5990     START_DATA (cexp),
5991     TEST_c_c (cexp, plus_zero, plus_zero, 1, 0.0),
5992     TEST_c_c (cexp, minus_zero, plus_zero, 1, 0.0),
5993     TEST_c_c (cexp, plus_zero, minus_zero, 1, minus_zero),
5994     TEST_c_c (cexp, minus_zero, minus_zero, 1, minus_zero),
5995
5996     TEST_c_c (cexp, plus_infty, plus_zero, plus_infty, 0.0),
5997     TEST_c_c (cexp, plus_infty, minus_zero, plus_infty, minus_zero),
5998
5999     TEST_c_c (cexp, minus_infty, plus_zero, 0.0, 0.0),
6000     TEST_c_c (cexp, minus_infty, minus_zero, 0.0, minus_zero),
6001
6002     TEST_c_c (cexp, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6003     TEST_c_c (cexp, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6004
6005     TEST_c_c (cexp, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6006     TEST_c_c (cexp, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6007
6008     TEST_c_c (cexp, 100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6009     TEST_c_c (cexp, -100.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6010
6011     TEST_c_c (cexp, 100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6012     TEST_c_c (cexp, -100.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
6013
6014     TEST_c_c (cexp, minus_infty, 2.0, minus_zero, 0.0),
6015     TEST_c_c (cexp, minus_infty, 4.0, minus_zero, minus_zero),
6016     TEST_c_c (cexp, plus_infty, 2.0, minus_infty, plus_infty),
6017     TEST_c_c (cexp, plus_infty, 4.0, minus_infty, minus_infty),
6018
6019     TEST_c_c (cexp, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6020     TEST_c_c (cexp, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
6021
6022     TEST_c_c (cexp, minus_infty, plus_infty, 0.0, 0.0, IGNORE_ZERO_INF_SIGN),
6023     TEST_c_c (cexp, minus_infty, minus_infty, 0.0, minus_zero, IGNORE_ZERO_INF_SIGN),
6024
6025     TEST_c_c (cexp, minus_infty, qnan_value, 0, 0, IGNORE_ZERO_INF_SIGN),
6026
6027     TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value),
6028
6029     TEST_c_c (cexp, qnan_value, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6030     TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6031
6032     TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6033     TEST_c_c (cexp, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6034     TEST_c_c (cexp, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6035     TEST_c_c (cexp, qnan_value, qnan_value, qnan_value, qnan_value),
6036
6037     TEST_c_c (cexp, 0.75L, 1.25L, 0.667537446429131586942201977015932112L, 2.00900045494094876258347228145863909L),
6038     TEST_c_c (cexp, -2.0, -3.0, -0.13398091492954261346140525546115575L, -0.019098516261135196432576240858800925L),
6039
6040     TEST_c_c (cexp, 0, 0x1p65, 0.99888622066058013610642172179340364209972L, -0.047183876212354673805106149805700013943218L),
6041     TEST_c_c (cexp, 0, -0x1p65, 0.99888622066058013610642172179340364209972L, 0.047183876212354673805106149805700013943218L),
6042     TEST_c_c (cexp, 50, 0x1p127, 4.053997150228616856622417636046265337193e21L, 3.232070315463388524466674772633810238819e21L),
6043
6044 #ifndef TEST_FLOAT
6045     TEST_c_c (cexp, 0, 1e22, 0.5232147853951389454975944733847094921409L, -0.8522008497671888017727058937530293682618L),
6046     TEST_c_c (cexp, 0, 0x1p1023, -0.826369834614147994500785680811743734805L, 0.5631277798508840134529434079444683477104L),
6047     TEST_c_c (cexp, 500, 0x1p1023, -1.159886268932754433233243794561351783426e217L, 7.904017694554466595359379965081774849708e216L),
6048 #endif
6049
6050 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6051     TEST_c_c (cexp, 0, 0x1p16383L, 0.9210843909921906206874509522505756251609L, 0.3893629985894208126948115852610595405563L),
6052     TEST_c_c (cexp, -10000, 0x1p16383L, 1.045876464564882298442774542991176546722e-4343L, 4.421154026488516836023811173959413420548e-4344L),
6053 #endif
6054
6055     TEST_c_c (cexp, 88.75, 0.75, 2.558360358486542817001900410314204322891e38L, 2.383359453227311447654736314679677655100e38L),
6056     TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L, UNDERFLOW_EXCEPTION_FLOAT),
6057
6058 #ifndef TEST_FLOAT
6059     TEST_c_c (cexp, 709.8125, 0.75, 1.355121963080879535248452862759108365762e308L, 1.262426823598609432507811340856186873507e308L),
6060     TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L, UNDERFLOW_EXCEPTION_DOUBLE),
6061 #endif
6062
6063 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6064     TEST_c_c (cexp, 11356.5625, 0.75, 9.052188470850960144814815984311663764287e4931L, 8.432986734191301036267148978260970230200e4931L),
6065     TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L, UNDERFLOW_EXCEPTION),
6066 #endif
6067
6068 #ifdef TEST_FLOAT
6069     TEST_c_c (cexp, 180, 0x1p-149, plus_infty, 2.087071793345235105931967606907855310664e33L, OVERFLOW_EXCEPTION),
6070 #endif
6071
6072 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6073     TEST_c_c (cexp, 1440, 0x1p-1074, plus_infty, 1.196295853897226111293303155636183216483e302L, OVERFLOW_EXCEPTION),
6074 #endif
6075
6076 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6077     TEST_c_c (cexp, 22730, 0x1p-16434L, plus_infty, 2.435706297811211974162115164702304105374e4924L, OVERFLOW_EXCEPTION),
6078 #endif
6079
6080     TEST_c_c (cexp, 1e6, 0, plus_infty, 0, OVERFLOW_EXCEPTION),
6081     TEST_c_c (cexp, 1e6, min_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
6082     TEST_c_c (cexp, 1e6, -min_value, plus_infty, minus_infty, OVERFLOW_EXCEPTION),
6083
6084     TEST_c_c (cexp, min_value, min_subnorm_value, 1.0, min_subnorm_value, UNDERFLOW_EXCEPTION),
6085     TEST_c_c (cexp, min_value, -min_subnorm_value, 1.0, -min_subnorm_value, UNDERFLOW_EXCEPTION),
6086     END_DATA (cexp)
6087   };
6088
6089 static void
6090 cexp_test (void)
6091 {
6092   errno = 0;
6093   FUNC(cexp) (BUILD_COMPLEX (0, 0));
6094   if (errno == ENOSYS)
6095     /* Function not implemented.  */
6096     return;
6097
6098   START (cexp);
6099   RUN_TEST_LOOP_c_c (cexp, cexp_test_data, );
6100   END (cexp, complex);
6101 }
6102
6103
6104 static const struct test_c_f_data cimag_test_data[] =
6105   {
6106     START_DATA (cimag);
6107     TEST_c_f (cimag, 1.0, 0.0, 0.0),
6108     TEST_c_f (cimag, 1.0, minus_zero, minus_zero),
6109     TEST_c_f (cimag, 1.0, qnan_value, qnan_value),
6110     TEST_c_f (cimag, qnan_value, qnan_value, qnan_value),
6111     TEST_c_f (cimag, 1.0, plus_infty, plus_infty),
6112     TEST_c_f (cimag, 1.0, minus_infty, minus_infty),
6113     TEST_c_f (cimag, 2.0, 3.0, 3.0),
6114     END_DATA (cimag);
6115   };
6116
6117 static void
6118 cimag_test (void)
6119 {
6120   START (cimag);
6121   RUN_TEST_LOOP_c_f (cimag, cimag_test_data, );
6122   END (cimag);
6123 }
6124
6125 static const struct test_c_c_data clog_test_data[] =
6126   {
6127     START_DATA (clog),
6128     TEST_c_c (clog, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6129     TEST_c_c (clog, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6130
6131     TEST_c_c (clog, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6132     TEST_c_c (clog, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6133
6134     TEST_c_c (clog, minus_infty, plus_infty, plus_infty, M_PI_34l),
6135     TEST_c_c (clog, minus_infty, minus_infty, plus_infty, -M_PI_34l),
6136
6137     TEST_c_c (clog, plus_infty, plus_infty, plus_infty, M_PI_4l),
6138     TEST_c_c (clog, plus_infty, minus_infty, plus_infty, -M_PI_4l),
6139
6140     TEST_c_c (clog, 0, plus_infty, plus_infty, M_PI_2l),
6141     TEST_c_c (clog, 3, plus_infty, plus_infty, M_PI_2l),
6142     TEST_c_c (clog, minus_zero, plus_infty, plus_infty, M_PI_2l),
6143     TEST_c_c (clog, -3, plus_infty, plus_infty, M_PI_2l),
6144     TEST_c_c (clog, 0, minus_infty, plus_infty, -M_PI_2l),
6145     TEST_c_c (clog, 3, minus_infty, plus_infty, -M_PI_2l),
6146     TEST_c_c (clog, minus_zero, minus_infty, plus_infty, -M_PI_2l),
6147     TEST_c_c (clog, -3, minus_infty, plus_infty, -M_PI_2l),
6148
6149     TEST_c_c (clog, minus_infty, 0, plus_infty, M_PIl),
6150     TEST_c_c (clog, minus_infty, 1, plus_infty, M_PIl),
6151     TEST_c_c (clog, minus_infty, minus_zero, plus_infty, -M_PIl),
6152     TEST_c_c (clog, minus_infty, -1, plus_infty, -M_PIl),
6153
6154     TEST_c_c (clog, plus_infty, 0, plus_infty, 0.0),
6155     TEST_c_c (clog, plus_infty, 1, plus_infty, 0.0),
6156     TEST_c_c (clog, plus_infty, minus_zero, plus_infty, minus_zero),
6157     TEST_c_c (clog, plus_infty, -1, plus_infty, minus_zero),
6158
6159     TEST_c_c (clog, plus_infty, qnan_value, plus_infty, qnan_value),
6160     TEST_c_c (clog, minus_infty, qnan_value, plus_infty, qnan_value),
6161
6162     TEST_c_c (clog, qnan_value, plus_infty, plus_infty, qnan_value),
6163     TEST_c_c (clog, qnan_value, minus_infty, plus_infty, qnan_value),
6164
6165     TEST_c_c (clog, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6166     TEST_c_c (clog, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6167     TEST_c_c (clog, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6168     TEST_c_c (clog, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6169
6170     TEST_c_c (clog, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6171     TEST_c_c (clog, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6172     TEST_c_c (clog, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6173     TEST_c_c (clog, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6174
6175     TEST_c_c (clog, qnan_value, qnan_value, qnan_value, qnan_value),
6176
6177     TEST_c_c (clog, 0.75L, 1.25L, 0.376885901188190075998919126749298416L, 1.03037682652431246378774332703115153L),
6178     TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L),
6179
6180     TEST_c_c (clog, 0x1.fffffep+127L, 0x1.fffffep+127L, 89.06941264234832570836679262104313101776L, M_PI_4l),
6181     TEST_c_c (clog, 0x1.fffffep+127L, 1.0L, 88.72283905206835305365817656031404273372L, 2.938736052218037251011746307725933020145e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6182     TEST_c_c (clog, 0x1p-149L, 0x1p-149L, -102.9323563131518784484589700365392203592L, M_PI_4l),
6183     TEST_c_c (clog, 0x1p-147L, 0x1p-147L, -101.5460619520319878296245057936228672231L, M_PI_4l),
6184
6185 #ifndef TEST_FLOAT
6186     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 710.1292864836639693869320059713862337880L, M_PI_4l),
6187     TEST_c_c (clog, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 709.8942846690411016323109979483151967689L, 0.4636476090008061606231772164674799632783L),
6188     TEST_c_c (clog, 0x1p-1074L, 0x1p-1074L, -744.0934983311012896593986823853525458290L, M_PI_4l),
6189     TEST_c_c (clog, 0x1p-1073L, 0x1p-1073L, -743.4003511505413443499814502638943692610L, M_PI_4l),
6190 #endif
6191
6192 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6193     TEST_c_c (clog, 0x1.fp+16383L, 0x1.fp+16383L, 11356.83823118610934184548269774874545400L, M_PI_4l),
6194     TEST_c_c (clog, 0x1.fp+16383L, 0x1p+16383L, 11356.60974243783798653123798337822335902L, 0.4764674194737066993385333770295162295856L),
6195     TEST_c_c (clog, 0x1p-16440L, 0x1p-16441L, -11395.22807662984378194141292922726786191L, 0.4636476090008061162142562314612144020285L),
6196 #endif
6197
6198     TEST_c_c (clog, 0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6199     TEST_c_c (clog, -0x1p-149L, 0x1.fp+127L, 88.69109041335841930424871526389807508374L, M_PI_2l),
6200     TEST_c_c (clog, 0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6201     TEST_c_c (clog, -0x1p-149L, -0x1.fp+127L, 88.69109041335841930424871526389807508374L, -M_PI_2l),
6202     TEST_c_c (clog, -0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, M_PIl),
6203     TEST_c_c (clog, -0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, -M_PIl),
6204 #ifdef TEST_FLOAT
6205     TEST_c_c (clog, 0x1.fp+127L, 0x1p-149L, 88.69109041335841930424871526389807508374L, plus_zero, UNDERFLOW_EXCEPTION),
6206     TEST_c_c (clog, 0x1.fp+127L, -0x1p-149L, 88.69109041335841930424871526389807508374L, minus_zero, UNDERFLOW_EXCEPTION),
6207 #endif
6208
6209 #ifndef TEST_FLOAT
6210     TEST_c_c (clog, 0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6211     TEST_c_c (clog, -0x1p-1074L, 0x1.fp+1023L, 709.7509641950694165420886960904242800794L, M_PI_2l),
6212     TEST_c_c (clog, 0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6213     TEST_c_c (clog, -0x1p-1074L, -0x1.fp+1023L, 709.7509641950694165420886960904242800794L, -M_PI_2l),
6214     TEST_c_c (clog, -0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, M_PIl),
6215     TEST_c_c (clog, -0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, -M_PIl),
6216 #endif
6217 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6218     TEST_c_c (clog, 0x1.fp+1023L, 0x1p-1074L, 709.7509641950694165420886960904242800794L, plus_zero, UNDERFLOW_EXCEPTION),
6219     TEST_c_c (clog, 0x1.fp+1023L, -0x1p-1074L, 709.7509641950694165420886960904242800794L, minus_zero, UNDERFLOW_EXCEPTION),
6220 #endif
6221
6222 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6223     TEST_c_c (clog, 0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6224     TEST_c_c (clog, -0x1p-16445L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6225     TEST_c_c (clog, 0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6226     TEST_c_c (clog, -0x1p-16445L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6227     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, M_PIl),
6228     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, -M_PIl),
6229     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16445L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6230     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16445L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6231 # if LDBL_MANT_DIG >= 113
6232     TEST_c_c (clog, 0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6233     TEST_c_c (clog, -0x1p-16494L, 0x1.fp+16383L, 11356.49165759582936919077408168801636572L, M_PI_2l),
6234     TEST_c_c (clog, 0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6235     TEST_c_c (clog, -0x1p-16494L, -0x1.fp+16383L, 11356.49165759582936919077408168801636572L, -M_PI_2l),
6236     TEST_c_c (clog, -0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, M_PIl),
6237     TEST_c_c (clog, -0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, -M_PIl),
6238     TEST_c_c (clog, 0x1.fp+16383L, 0x1p-16494L, 11356.49165759582936919077408168801636572L, plus_zero, UNDERFLOW_EXCEPTION),
6239     TEST_c_c (clog, 0x1.fp+16383L, -0x1p-16494L, 11356.49165759582936919077408168801636572L, minus_zero, UNDERFLOW_EXCEPTION),
6240 # endif
6241 #endif
6242
6243     TEST_c_c (clog, 1.0L, 0x1.234566p-10L, 6.172834701221959432440126967147726538097e-7L, 1.111110564353742042376451655136933182201e-3L),
6244     TEST_c_c (clog, -1.0L, 0x1.234566p-20L, 5.886877547844618300918562490463748605537e-13L, 3.141591568520436206990380699322226378452L),
6245     TEST_c_c (clog, 0x1.234566p-30L, 1.0L, 5.614163921211322622623353961365728040115e-19L, 1.570796325735258575254858696548386439740L),
6246     TEST_c_c (clog, -0x1.234566p-40L, -1.0L, 5.354083939753840089583620652120903838944e-25L, -1.570796326795931422008642456283782656359L),
6247     TEST_c_c (clog, 0x1.234566p-50L, 1.0L, 5.106052341226425256332038420428899201070e-31L, 1.570796326794895608681734464330528755366L),
6248     TEST_c_c (clog, 0x1.234566p-60L, 1.0L, 4.869510976053643471080816669875627875933e-37L, 1.570796326794896618244456860363082279319L),
6249     TEST_c_c (clog, 0x1p-62L, 1.0L, 2.350988701644575015937473074444491355582e-38L, 1.570796326794896619014481257142650555297L),
6250     TEST_c_c (clog, 0x1p-63L, 1.0L, 5.877471754111437539843682686111228389059e-39L, 1.570796326794896619122901474391200998698L, UNDERFLOW_EXCEPTION_FLOAT),
6251     TEST_c_c (clog, 0x1p-64L, 1.0L, 1.469367938527859384960920671527807097271e-39L, 1.570796326794896619177111583015476220398L, UNDERFLOW_EXCEPTION_FLOAT),
6252 #ifndef TEST_FLOAT
6253     TEST_c_c (clog, 0x1p-510L, 1.0L, 4.450147717014402766180465434664808128438e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6254     TEST_c_c (clog, 0x1p-511L, 1.0L, 1.112536929253600691545116358666202032110e-308L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6255     TEST_c_c (clog, 0x1p-512L, 1.0L, 2.781342323134001728862790896665505080274e-309L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION_DOUBLE),
6256 #endif
6257 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6258     TEST_c_c (clog, 0x1p-8190L, 1.0L, 6.724206286224187012525355634643505205196e-4932L, 1.570796326794896619231321691639751442099L),
6259     TEST_c_c (clog, 0x1p-8191L, 1.0L, 1.681051571556046753131338908660876301299e-4932L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6260     TEST_c_c (clog, 0x1p-8192L, 1.0L, 4.202628928890116882828347271652190753248e-4933L, 1.570796326794896619231321691639751442099L, UNDERFLOW_EXCEPTION),
6261 #endif
6262
6263     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-10L, 8.298731898331237038231468223024422855654e-5L, 1.110938609507128729312743251313024793990e-3L),
6264     TEST_c_c (clog, 0x1.000566p0L, 0x1.234p-100L, 8.237022655933121125560939513260027133767e-5L, 8.974094312218060110948251664314290484113e-31L),
6265 #ifndef TEST_FLOAT
6266     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-30L, 2.649094282537168795982991778475646793277e-10L, 3.141592652530155111500161671113150737892L),
6267     TEST_c_c (clog, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 2.649094276923003995420209214900915462737e-10L, 3.141592653589793238462643383279502884197L),
6268 #endif
6269 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6270     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 9.868649107778739757272772275265050767867e-19L, 9.868649106423871142816660980898339912137e-19L),
6271     TEST_c_c (clog, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 9.868649107778739752403260515979017248596e-19L, 1.061846605795612822522063052130030717368e-301L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6272 #endif
6273
6274     TEST_c_c (clog, 0x0.ffffffp0L, 0x0.ffffffp-100L, -5.960464655174753498633255797994360530379e-8L, 7.888609052210118054117285652827862296732e-31L),
6275 #ifndef TEST_FLOAT
6276     TEST_c_c (clog, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -1.110223024625156602053389888482372171810e-16L, 9.332636185032188789900895447238171696171e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6277 #endif
6278 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6279     TEST_c_c (clog, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -5.421010862427522170184200798202494495630e-20L, 3.548665303440282824232502561095699343814e-4516L),
6280 #endif
6281
6282     TEST_c_c (clog, 0x1a6p-10L, 0x3a5p-10L, -1.4305135209763571252847059962654228661815e-06L, 1.1460277178115757370775644871674016684074L),
6283     TEST_c_c (clog, 0xf2p-10L, 0x3e3p-10L, 6.1988446308070710970664736815277450078106e-06L, 1.3322126499153926210226335249558203898460L),
6284     TEST_c_c (clog, 0x4d4ep-15L, 0x6605p-15L, -1.6298145321400412054744424587143483169412e-08L, 0.9223574537155056772124552172295398141249L),
6285     TEST_c_c (clog, 0x2818p-15L, 0x798fp-15L, 1.5366822245016167178749091974664853785194e-08L, 1.2522014929038946066987318471922169174157L),
6286     TEST_c_c (clog, 0x9b57bp-20L, 0xcb7b4p-20L, -3.9563019528687610863490232935890272740908e-11L, 0.9187593477446338910857133065497364950682L),
6287     TEST_c_c (clog, 0x2731p-20L, 0xfffd0p-20L, 4.4110493034041283943115971658295280288115e-11L, 1.5612279663766352262688735061954290528838L),
6288     TEST_c_c (clog, 0x2ede88p-23L, 0x771c3fp-23L, -4.4764192352906350039050902870893173560494e-13L, 1.1959106857549200806818600493552847793381L),
6289     TEST_c_c (clog, 0x11682p-23L, 0x7ffed1p-23L, 1.1723955140027907954461000991619077811832e-12L, 1.5622968405332756349813737986164832897108L),
6290     TEST_c_c (clog, 0xa1f2c1p-24L, 0xc643aep-24L, -1.0480505352462576151523512837107080269981e-13L, 0.8858771987699967480545613322309315260313L),
6291     TEST_c_c (clog, 0x659feap-24L, 0xeaf6f9p-24L, 3.7303493627403868207597214252239749960738e-14L, 1.1625816408046866464773042283673653469061L),
6292 #ifndef TEST_FLOAT
6293     TEST_c_c (clog, 0x4447d7175p-35L, 0x6c445e00ap-35L, -1.4823076576950255933915367361099865652625e-20L, 1.0081311552703893116404606212158840190615L),
6294     TEST_c_c (clog, 0x2dd46725bp-35L, 0x7783a1284p-35L, 4.4469229730850767799109418892826021157328e-20L, 1.2046235979300843056806465045930070146351L),
6295     TEST_c_c (clog, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -3.0292258760486853327810377824479932031744e-26L, 0.7998237934177411746093524982030330293980L),
6296     TEST_c_c (clog, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 5.3718272201930019901317065495843842735179e-26L, 1.0503831592447830576186444373011142397404L),
6297     TEST_c_c (clog, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -6.2122796286154679676173624516405339768606e-30L, 1.4904138780720095276446375492434049214172L),
6298     TEST_c_c (clog, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 3.2047474274603604594851472963586149973093e-29L, 1.4422922682185099608731642353544207976604L),
6299     TEST_c_c (clog, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -9.7375017988218644730510244778042114638107e-30L, 0.9790637929494922564724108399524154766631L),
6300     TEST_c_c (clog, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 8.3076914081087805757422664530653247447136e-30L, 1.2072712126771536614482822173033535043206L),
6301     TEST_c_c (clog, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -2.5083311595699359750201056724289010648701e-30L, 1.3710185432462268491534742969536240564640L),
6302     TEST_c_c (clog, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 1.0168910106364605304135563536838075568606e-30L, 0.8208373755522359859870890246475340086663L),
6303     TEST_c_c (clog, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 5.0844550531823026520677817684239496041087e-32L, 1.2627468605458094918919206628466016525397L),
6304     TEST_c_c (clog, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -5.2000108498455368032511404449795741611813e-32L, 1.5288921536982513453421343495466824420259L),
6305 #endif
6306 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6307     TEST_c_c (clog, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -1.1931267660846218205882675852805793644095e-36L, 1.2402109774337032400594953899784058127412L),
6308     TEST_c_c (clog, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 6.4064442119814669184296141278612389400075e-37L, 0.9193591364645830864185131402313014890145L),
6309     TEST_c_c (clog, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -2.3362950222592964220878638677292132852104e-37L, 1.1856121127236268105413184264288408265852L),
6310     TEST_c_c (clog, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 2.4244570985709679851855191080208817099132e-37L, 1.1393074519572050614551047548718495655972L),
6311     TEST_c_c (clog, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -9.9182335850630508484862145328126979066934e-39L, 1.3146479888794807046338799047003947008804L),
6312 #endif
6313 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6314     TEST_c_c (clog, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -1.0509738482436128031927971874674370984602e-45L, 1.0509191467640012308402149909370784281448L),
6315     TEST_c_c (clog, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 1.3487497719126364307640897239165442763573e-43L, 1.1750493008528425228929764149024375035382L),
6316     TEST_c_c (clog, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -4.7775669192897997174762089350332738583822e-50L, 0.8393953487996880419413728440067635213372L),
6317     TEST_c_c (clog, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 2.8398125044729578740243199963484494962411e-50L, 0.9149964976334130461795060758257083099706L),
6318     TEST_c_c (clog, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -3.5048022044913950094635368750889659723004e-57L, 1.3345633256521815205858155673950177421079L),
6319     TEST_c_c (clog, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 4.1101771307217268747345114262406964584250e-56L, 1.4596065864518742494094402406719567059585L),
6320     TEST_c_c (clog, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -1.4281333889622737316199756373421183559948e-62L, 1.3673546561165378090903506783353927980633L),
6321     TEST_c_c (clog, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 1.0027319539522347477331743836657426754857e-62L, 0.8193464073721167323313606647411269414759L),
6322     TEST_c_c (clog, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -1.7471844652198029695350765775994001163767e-63L, 1.1789110097072986038243729592318526094314L),
6323     TEST_c_c (clog, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 4.3299788920664682288477984749202524623248e-63L, 1.4746938237585656250866370987773473745867L),
6324 #endif
6325 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6326     TEST_c_c (clog, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -1.1683999374665377365054966073875064467108e-66L, 1.3257197596350832748781065387304444940172L),
6327     TEST_c_c (clog, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 1.5077923002544367932999503838191154621839e-65L, 1.2897445708311412721399861948957141824914L),
6328     TEST_c_c (clog, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -7.1865869169568789348552370692485515571497e-67L, 0.8730167479365994646287897223471819363668L),
6329     TEST_c_c (clog, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 6.6255694866654064502633121109394710807528e-66L, 1.0526409614996288387567810726095850312049L),
6330     TEST_c_c (clog, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 4.6017338806965821566734340588575402712716e-67L, 1.3547418904611758959096647942223384691728L),
6331     TEST_c_c (clog, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 2.5993421227864195179698176012564317527271e-67L, 1.4132318089683022770487383611430906982461L),
6332 #endif
6333     END_DATA (clog)
6334   };
6335
6336 static void
6337 clog_test (void)
6338 {
6339   errno = 0;
6340   FUNC(clog) (BUILD_COMPLEX (-2, -3));
6341   if (errno == ENOSYS)
6342     /* Function not implemented.  */
6343     return;
6344
6345   START (clog);
6346   RUN_TEST_LOOP_c_c (clog, clog_test_data, );
6347   END (clog, complex);
6348 }
6349
6350
6351 static const struct test_c_c_data clog10_test_data[] =
6352   {
6353     START_DATA (clog10),
6354     TEST_c_c (clog10, minus_zero, 0, minus_infty, M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6355     TEST_c_c (clog10, minus_zero, minus_zero, minus_infty, -M_PIl, DIVIDE_BY_ZERO_EXCEPTION),
6356
6357     TEST_c_c (clog10, 0, 0, minus_infty, 0.0, DIVIDE_BY_ZERO_EXCEPTION),
6358     TEST_c_c (clog10, 0, minus_zero, minus_infty, minus_zero, DIVIDE_BY_ZERO_EXCEPTION),
6359
6360     TEST_c_c (clog10, minus_infty, plus_infty, plus_infty, M_PI_34_LOG10El),
6361
6362     TEST_c_c (clog10, plus_infty, plus_infty, plus_infty, M_PI4_LOG10El),
6363     TEST_c_c (clog10, plus_infty, minus_infty, plus_infty, -M_PI4_LOG10El),
6364
6365     TEST_c_c (clog10, 0, plus_infty, plus_infty, M_PI2_LOG10El),
6366     TEST_c_c (clog10, 3, plus_infty, plus_infty, M_PI2_LOG10El),
6367     TEST_c_c (clog10, minus_zero, plus_infty, plus_infty, M_PI2_LOG10El),
6368     TEST_c_c (clog10, -3, plus_infty, plus_infty, M_PI2_LOG10El),
6369     TEST_c_c (clog10, 0, minus_infty, plus_infty, -M_PI2_LOG10El),
6370     TEST_c_c (clog10, 3, minus_infty, plus_infty, -M_PI2_LOG10El),
6371     TEST_c_c (clog10, minus_zero, minus_infty, plus_infty, -M_PI2_LOG10El),
6372     TEST_c_c (clog10, -3, minus_infty, plus_infty, -M_PI2_LOG10El),
6373
6374     TEST_c_c (clog10, minus_infty, 0, plus_infty, M_PI_LOG10El),
6375     TEST_c_c (clog10, minus_infty, 1, plus_infty, M_PI_LOG10El),
6376     TEST_c_c (clog10, minus_infty, minus_zero, plus_infty, -M_PI_LOG10El),
6377     TEST_c_c (clog10, minus_infty, -1, plus_infty, -M_PI_LOG10El),
6378
6379     TEST_c_c (clog10, plus_infty, 0, plus_infty, 0.0),
6380     TEST_c_c (clog10, plus_infty, 1, plus_infty, 0.0),
6381     TEST_c_c (clog10, plus_infty, minus_zero, plus_infty, minus_zero),
6382     TEST_c_c (clog10, plus_infty, -1, plus_infty, minus_zero),
6383
6384     TEST_c_c (clog10, plus_infty, qnan_value, plus_infty, qnan_value),
6385     TEST_c_c (clog10, minus_infty, qnan_value, plus_infty, qnan_value),
6386
6387     TEST_c_c (clog10, qnan_value, plus_infty, plus_infty, qnan_value),
6388     TEST_c_c (clog10, qnan_value, minus_infty, plus_infty, qnan_value),
6389
6390     TEST_c_c (clog10, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6391     TEST_c_c (clog10, 3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6392     TEST_c_c (clog10, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6393     TEST_c_c (clog10, -3, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6394
6395     TEST_c_c (clog10, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6396     TEST_c_c (clog10, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6397     TEST_c_c (clog10, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6398     TEST_c_c (clog10, qnan_value, -5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
6399
6400     TEST_c_c (clog10, qnan_value, qnan_value, qnan_value, qnan_value),
6401
6402     TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L),
6403     TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L),
6404
6405     TEST_c_c (clog10, 0x1.fffffep+127L, 0x1.fffffep+127L, 38.68235441693561449174780668781319348761L, M_PI4_LOG10El),
6406     TEST_c_c (clog10, 0x1.fffffep+127L, 1.0L, 38.53183941910362389414093724045094697423L, 1.276276851248440096917018665609900318458e-39L, UNDERFLOW_EXCEPTION_FLOAT),
6407     TEST_c_c (clog10, 0x1p-149L, 0x1p-149L, -44.70295435610120748924022586658721447508L, M_PI4_LOG10El),
6408     TEST_c_c (clog10, 0x1p-147L, 0x1p-147L, -44.10089436477324509881274807713822842154L, M_PI4_LOG10El),
6409
6410 #ifndef TEST_FLOAT
6411     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 308.4052305577487344482591243175787477115L, M_PI4_LOG10El),
6412     TEST_c_c (clog10, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 308.3031705664207720674749211936626341569L, 0.2013595981366865903254995612594728746470L),
6413     TEST_c_c (clog10, 0x1p-1074L, 0x1p-1074L, -323.1557003452838130619487034867432642357L, M_PI4_LOG10El),
6414     TEST_c_c (clog10, 0x1p-1073L, 0x1p-1073L, -322.8546703496198318667349645920187712089L, M_PI4_LOG10El),
6415 #endif
6416
6417 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6418     TEST_c_c (clog10, 0x1.fp+16383L, 0x1.fp+16383L, 4932.212175672014259683102930239951947672L, M_PI4_LOG10El),
6419     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p+16383L, 4932.112944269463028900262609694408579449L, 0.2069271710841128115912940666587802677383L),
6420     TEST_c_c (clog10, 0x1p-16440L, 0x1p-16441L, -4948.884673709346821106688037612752099609L, 0.2013595981366865710389502301937289472543L),
6421 #endif
6422
6423     TEST_c_c (clog10, 0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6424     TEST_c_c (clog10, -0x1p-149L, 0x1.fp+127L, 38.51805116050395969095658815123105801479L, 0.6821881769209206737428918127156778851051L),
6425     TEST_c_c (clog10, 0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6426     TEST_c_c (clog10, -0x1p-149L, -0x1.fp+127L, 38.51805116050395969095658815123105801479L, -0.6821881769209206737428918127156778851051L),
6427     TEST_c_c (clog10, -0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, 1.364376353841841347485783625431355770210L),
6428     TEST_c_c (clog10, -0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, -1.364376353841841347485783625431355770210L),
6429 #ifdef TEST_FLOAT
6430     TEST_c_c (clog10, 0x1.fp+127L, 0x1p-149L, 38.51805116050395969095658815123105801479L, plus_zero, UNDERFLOW_EXCEPTION),
6431     TEST_c_c (clog10, 0x1.fp+127L, -0x1p-149L, 38.51805116050395969095658815123105801479L, minus_zero, UNDERFLOW_EXCEPTION),
6432 #endif
6433
6434 #ifndef TEST_FLOAT
6435     TEST_c_c (clog10, 0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6436     TEST_c_c (clog10, -0x1p-1074L, 0x1.fp+1023L, 308.2409272754311106024666378243768099991L, 0.6821881769209206737428918127156778851051L),
6437     TEST_c_c (clog10, 0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6438     TEST_c_c (clog10, -0x1p-1074L, -0x1.fp+1023L, 308.2409272754311106024666378243768099991L, -0.6821881769209206737428918127156778851051L),
6439     TEST_c_c (clog10, -0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, 1.364376353841841347485783625431355770210L),
6440     TEST_c_c (clog10, -0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, -1.364376353841841347485783625431355770210L),
6441 #endif
6442 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
6443     TEST_c_c (clog10, 0x1.fp+1023L, 0x1p-1074L, 308.2409272754311106024666378243768099991L, plus_zero, UNDERFLOW_EXCEPTION),
6444     TEST_c_c (clog10, 0x1.fp+1023L, -0x1p-1074L, 308.2409272754311106024666378243768099991L, minus_zero, UNDERFLOW_EXCEPTION),
6445 #endif
6446
6447 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6448     TEST_c_c (clog10, 0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6449     TEST_c_c (clog10, -0x1p-16445L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6450     TEST_c_c (clog10, 0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6451     TEST_c_c (clog10, -0x1p-16445L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6452     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6453     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6454     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16445L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6455     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16445L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6456 # if LDBL_MANT_DIG >= 113
6457     TEST_c_c (clog10, 0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6458     TEST_c_c (clog10, -0x1p-16494L, 0x1.fp+16383L, 4932.061660674182269085496060792589701158L, 0.6821881769209206737428918127156778851051L),
6459     TEST_c_c (clog10, 0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6460     TEST_c_c (clog10, -0x1p-16494L, -0x1.fp+16383L, 4932.061660674182269085496060792589701158L, -0.6821881769209206737428918127156778851051L),
6461     TEST_c_c (clog10, -0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, 1.364376353841841347485783625431355770210L),
6462     TEST_c_c (clog10, -0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, -1.364376353841841347485783625431355770210L),
6463     TEST_c_c (clog10, 0x1.fp+16383L, 0x1p-16494L, 4932.061660674182269085496060792589701158L, plus_zero, UNDERFLOW_EXCEPTION),
6464     TEST_c_c (clog10, 0x1.fp+16383L, -0x1p-16494L, 4932.061660674182269085496060792589701158L, minus_zero, UNDERFLOW_EXCEPTION),
6465 # endif
6466 #endif
6467
6468     TEST_c_c (clog10, 1.0L, 0x1.234566p-10L, 2.680828048441605163181684680300513080769e-7L, 4.825491868832381486767558728169977751564e-4L),
6469     TEST_c_c (clog10, -1.0L, 0x1.234566p-20L, 2.556638434669064077889576526006849923281e-13L, 1.364375882602207106407956770293808181427L),
6470     TEST_c_c (clog10, 0x1.234566p-30L, 1.0L, 2.438200411482400072282924063740535840474e-19L, 6.821881764607257184291586401763604544928e-1L),
6471     TEST_c_c (clog10, -0x1.234566p-40L, -1.0L, 2.325249110681915353442924915876654139373e-25L, -6.821881769213700828789403802671540158935e-1L),
6472     TEST_c_c (clog10, 0x1.234566p-50L, 1.0L, 2.217530356103816369479108963807448194409e-31L, 6.821881769209202348667823902864283966959e-1L),
6473     TEST_c_c (clog10, 0x1.234566p-60L, 1.0L, 2.114801746467415208319767917450504756866e-37L, 6.821881769209206733143018621078368211515e-1L),
6474     TEST_c_c (clog10, 0x1p-61L, 1.0L, 4.084085680564517578238994467153626207224e-38L, 6.821881769209206735545466044044889962925e-1L),
6475     TEST_c_c (clog10, 0x1p-62L, 1.0L, 1.021021420141129394559748616788406551878e-38L, 6.821881769209206736487192085600834406988e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6476     TEST_c_c (clog10, 0x1p-63L, 1.0L, 2.552553550352823486399371541971016379740e-39L, 6.821881769209206736958055106378806629019e-1L, UNDERFLOW_EXCEPTION_FLOAT),
6477 #ifndef TEST_FLOAT
6478     TEST_c_c (clog10, 0x1p-509L, 1.0L, 7.730698388614835910296270976605350994446e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6479     TEST_c_c (clog10, 0x1p-510L, 1.0L, 1.932674597153708977574067744151337748612e-308L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6480     TEST_c_c (clog10, 0x1p-511L, 1.0L, 4.831686492884272443935169360378344371529e-309L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION_DOUBLE),
6481 #endif
6482 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6483     TEST_c_c (clog10, 0x1p-8189L, 1.0L, 1.168114274114528946314738738025008370069e-4931L, 6.821881769209206737428918127156778851051e-1L),
6484     TEST_c_c (clog10, 0x1p-8190L, 1.0L, 2.920285685286322365786846845062520925172e-4932L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6485     TEST_c_c (clog10, 0x1p-8191L, 1.0L, 7.300714213215805914467117112656302312931e-4933L, 6.821881769209206737428918127156778851051e-1L, UNDERFLOW_EXCEPTION),
6486 #endif
6487
6488     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-10L, 3.604093470239754109961125085078190708674e-5L, 4.824745078422174667425851670822596859720e-4L),
6489     TEST_c_c (clog10, 0x1.000566p0L, 0x1.234p-100L, 3.577293486783822178310971763308187385546e-5L, 3.897399639875661463735636919790792140598e-31L),
6490 #ifndef TEST_FLOAT
6491     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-30L, 1.150487028947346337782682105935961875822e-10L, 1.364376353381646356131680448946397884147L),
6492     TEST_c_c (clog10, -0x1.0000000123456p0L, 0x1.2345678p-1000L, 1.150487026509145544402795327729455391948e-10L, 1.364376353841841347485783625431355770210L),
6493 #endif
6494 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6495     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-60L, 4.285899851347756188767674032946882584784e-19L, 4.285899850759344225805480528847018395861e-19L),
6496     TEST_c_c (clog10, 0x1.00000000000000123456789abcp0L, 0x1.23456789p-1000L, 4.285899851347756186652871946325962330640e-19L, 4.611541215247321502041995872887317363241e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6497 #endif
6498
6499     TEST_c_c (clog10, 0x0.ffffffp0L, 0x0.ffffffp-100L, -2.588596909321764128428416045209904492216e-8L, 3.425979381266895667295625489912064603415e-31L),
6500 #ifndef TEST_FLOAT
6501     TEST_c_c (clog10, 0x0.fffffffffffff8p0L, 0x0.fffffffffffff8p-1000L, -4.821637332766435821255375046554377090472e-17L, 4.053112396770095089737411317782466262176e-302L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
6502 #endif
6503 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
6504     TEST_c_c (clog10, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp-15000L, -2.354315103889861110220423157644627849164e-20L, 1.541165759405643564697852372112893034397e-4516L),
6505 #endif
6506
6507     TEST_c_c (clog10, 0x1a6p-10L, 0x3a5p-10L, -6.2126412844802358329771948751248003038444e-07L, 0.4977135139537443711784513409096950995985L),
6508     TEST_c_c (clog10, 0xf2p-10L, 0x3e3p-10L, 2.6921240173351112953324592659528481616879e-06L, 0.5785726025799636431142862788413361783862L),
6509     TEST_c_c (clog10, 0x4d4ep-15L, 0x6605p-15L, -7.0781945783414996953799915941870192015212e-09L, 0.4005747524909781155537088181659175147564L),
6510     TEST_c_c (clog10, 0x2818p-15L, 0x798fp-15L, 6.6737261053986614395049481326819059203910e-09L, 0.5438241985991753781478398141908629586460L),
6511     TEST_c_c (clog10, 0x9b57bp-20L, 0xcb7b4p-20L, -1.7182001068739620267773842120965071561416e-11L, 0.3990121149225253562859800593935899629087L),
6512     TEST_c_c (clog10, 0x2731p-20L, 0xfffd0p-20L, 1.9156943718715958194239364991329064049438e-11L, 0.6780326907904082601285090019969008967595L),
6513     TEST_c_c (clog10, 0x2ede88p-23L, 0x771c3fp-23L, -1.9440841725722970687903291200493082253766e-13L, 0.5193774116724956222518530053006822210323L),
6514     TEST_c_c (clog10, 0x11682p-23L, 0x7ffed1p-23L, 5.0916490233953865181284669870035717560498e-13L, 0.6784968969384861816694467029319146542069L),
6515     TEST_c_c (clog10, 0xa1f2c1p-24L, 0xc643aep-24L, -4.5516256421319921959681423447271490869664e-14L, 0.3847315790697197749315054516562206543710L),
6516     TEST_c_c (clog10, 0x659feap-24L, 0xeaf6f9p-24L, 1.6200701438094619117335617123525612051457e-14L, 0.5049027913635038013499728086604870749732L),
6517 #ifndef TEST_FLOAT
6518     TEST_c_c (clog10, 0x4447d7175p-35L, 0x6c445e00ap-35L, -6.4375803621988389731799033530075237868110e-21L, 0.4378257977686804492768642780897650927167L),
6519     TEST_c_c (clog10, 0x2dd46725bp-35L, 0x7783a1284p-35L, 1.9312741086596516918394613098872836703188e-20L, 0.5231613813514771042838490538484014771862L),
6520     TEST_c_c (clog10, 0x164c74eea876p-45L, 0x16f393482f77p-45L, -1.3155760824064879362415202279780039150764e-26L, 0.3473590599762514228227328130640352044313L),
6521     TEST_c_c (clog10, 0xfe961079616p-45L, 0x1bc37e09e6d1p-45L, 2.3329549194675052736016290082882121135546e-26L, 0.4561756099441139182878993697611751382976L),
6522     TEST_c_c (clog10, 0xa4722f19346cp-51L, 0x7f9631c5e7f07p-51L, -2.6979587627476803379953050733225113494503e-30L, 0.6472785229986997177606324374555347813105L),
6523     TEST_c_c (clog10, 0x10673dd0f2481p-51L, 0x7ef1d17cefbd2p-51L, 1.3918041236396763648388478552321724382899e-29L, 0.6263795733790237053262025311642907438291L),
6524     TEST_c_c (clog10, 0x8ecbf810c4ae6p-52L, 0xd479468b09a37p-52L, -4.2289432987513243393180377141513840878196e-30L, 0.4252020027092323591068799049905597805296L),
6525     TEST_c_c (clog10, 0x5b06b680ea2ccp-52L, 0xef452b965da9fp-52L, 3.6079845358966994996207055940336690133424e-30L, 0.5243112258263349992771652393178033846555L),
6526     TEST_c_c (clog10, 0x659b70ab7971bp-53L, 0x1f5d111e08abecp-53L, -1.0893543813872082317104059174982092534059e-30L, 0.5954257879188711495921161433751775633232L),
6527     TEST_c_c (clog10, 0x15cfbd1990d1ffp-53L, 0x176a3973e09a9ap-53L, 4.4163015461643576961232672330852798804976e-31L, 0.3564851427422832755956993418877523303529L),
6528     TEST_c_c (clog10, 0x1367a310575591p-54L, 0x3cfcc0a0541f60p-54L, 2.2081507730821788480616336165447731164865e-32L, 0.5484039935757001196548030312819898864760L),
6529     TEST_c_c (clog10, 0x55cb6d0c83af5p-55L, 0x7fe33c0c7c4e90p-55L, -2.2583360179249556400630343805573865814771e-32L, 0.6639894257763289307423302343317622430835L),
6530 #endif
6531 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
6532     TEST_c_c (clog10, 0x298c62cb546588a7p-63L, 0x7911b1dfcc4ecdaep-63L, -5.1816837072162316773907242302011632570857e-37L, 0.5386167838952956925896424154370364458140L),
6533     TEST_c_c (clog10, 0x4d9c37e2b5cb4533p-63L, 0x65c98be2385a042ep-63L, 2.7822833698845776001753149807484078521508e-37L, 0.3992725998539071066769046272515417679815L),
6534     TEST_c_c (clog10, 0x602fd5037c4792efp-64L, 0xed3e2086dcca80b8p-64L, -1.0146400362652473358437501879334790111898e-37L, 0.5149047982335273098246594109614460842099L),
6535     TEST_c_c (clog10, 0x6b10b4f3520217b6p-64L, 0xe8893cbb449253a1p-64L, 1.0529283395205396881397407610630442563938e-37L, 0.4947949395762683446121140513971996916447L),
6536     TEST_c_c (clog10, 0x81b7efa81fc35ad1p-65L, 0x1ef4b835f1c79d812p-65L, -4.3074341162203896332989394770760901408798e-39L, 0.5709443672155660428417571212549720987784L),
6537 #endif
6538 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
6539     TEST_c_c (clog10, 0x3f96469050f650869c2p-75L, 0x6f16b2c9c8b05988335p-75L, -4.5643214291682663316715446865040356750881e-46L, 0.4564083863660793840592614609053162690362L),
6540     TEST_c_c (clog10, 0x3157fc1d73233e580c8p-75L, 0x761b52ccd435d7c7f5fp-75L, 5.8575458340992751256451490143468457830297e-44L, 0.5103174273246635294300470585396890237265L),
6541     TEST_c_c (clog10, 0x155f8afc4c48685bf63610p-85L, 0x17d0cf2652cdbeb1294e19p-85L, -2.0748709499710785084693619097712106753591e-50L, 0.3645447681189598740620098186365764884771L),
6542     TEST_c_c (clog10, 0x13836d58a13448d750b4b9p-85L, 0x195ca7bc3ab4f9161edbe6p-85L, 1.2333149003324592532859843519619084433953e-50L, 0.3973779298829931059309198145608711073016L),
6543     TEST_c_c (clog10, 0x1df515eb171a808b9e400266p-95L, 0x7c71eb0cd4688dfe98581c77p-95L, -1.5221162575729652613635150540947625639689e-57L, 0.5795934880811949230121092882659698986043L),
6544     TEST_c_c (clog10, 0xe33f66c9542ca25cc43c867p-95L, 0x7f35a68ebd3704a43c465864p-95L, 1.7850272475173865337808494725293124613817e-56L, 0.6338990862456906754888183278564382516852L),
6545     TEST_c_c (clog10, 0x6771f22c64ed551b857c128b4cp-105L, 0x1f570e7a13cc3cf2f44fd793ea1p-105L, -6.2023045024810589256360494043570293518879e-63L, 0.5938345819561308555003145899438513900776L),
6546     TEST_c_c (clog10, 0x15d8ab6ed05ca514086ac3a1e84p-105L, 0x1761e480aa094c0b10b34b09ce9p-105L, 4.3548095442952115860848857519953610343042e-63L, 0.3558376234889641500775150477035448866763L),
6547     TEST_c_c (clog10, 0x187190c1a334497bdbde5a95f48p-106L, 0x3b25f08062d0a095c4cfbbc338dp-106L, -7.5879257211204444302994221436282805900756e-64L, 0.5119945461708707332160859198685423099187L),
6548     TEST_c_c (clog10, 0x6241ef0da53f539f02fad67dabp-106L, 0x3fb46641182f7efd9caa769dac0p-106L, 1.8804859395820231849002915747252695375405e-63L, 0.6404513901551516189871978418046651877394L),
6549 #endif
6550 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
6551     TEST_c_c (clog10, 0x3e1d0a105ac4ebeacd9c6952d34cp-112L, 0xf859b3d1b06d005dcbb5516d5479p-112L, -5.0742964549782184008668435276046798273476e-67L, 0.5757527761596220360985719127090110408283L),
6552     TEST_c_c (clog10, 0x47017a2e36807acb1e5214b209dep-112L, 0xf5f4a550c9d75e3bb1839d865f0dp-112L, 6.5482587585671294601662599808612773010057e-66L, 0.5601289501766423782280643144987875760229L),
6553     TEST_c_c (clog10, 0x148f818cb7a9258fca942ade2a0cap-113L, 0x18854a34780b8333ec53310ad7001p-113L, -3.1210950417524756037077807411854181477733e-67L, 0.3791463562379872585396164879981280044658L),
6554     TEST_c_c (clog10, 0xfd95243681c055c2632286921092p-113L, 0x1bccabcd29ca2152860ec29e34ef7p-113L, 2.8774482675253468630312378575186855052697e-66L, 0.4571561610046221605554903008571429975493L),
6555     TEST_c_c (clog10, 0xdb85c467ee2aadd5f425fe0f4b8dp-114L, 0x3e83162a0f95f1dcbf97dddf410eap-114L, 1.9985076315737626043096596036300177494613e-67L, 0.5883569274304683249184005177865521205198L),
6556     TEST_c_c (clog10, 0x1415bcaf2105940d49a636e98ae59p-115L, 0x7e6a150adfcd1b0921d44b31f40f4p-115L, 1.1288799405048268615023706955013387413519e-67L, 0.6137587762850841972073301550420510507903L),
6557 #endif
6558     END_DATA (clog10)
6559   };
6560
6561 static void
6562 clog10_test (void)
6563 {
6564   errno = 0;
6565   FUNC(clog10) (BUILD_COMPLEX (0.7L, 1.2L));
6566   if (errno == ENOSYS)
6567     /* Function not implemented.  */
6568     return;
6569
6570   START (clog10);
6571   RUN_TEST_LOOP_c_c (clog10, clog10_test_data, );
6572   END (clog10, complex);
6573 }
6574
6575
6576 static const struct test_c_c_data conj_test_data[] =
6577   {
6578     START_DATA (conj),
6579     TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero),
6580     TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0),
6581     TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value),
6582     TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty),
6583     TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty),
6584     TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0),
6585     TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0),
6586     END_DATA (conj)
6587   };
6588
6589 static void
6590 conj_test (void)
6591 {
6592   START (conj);
6593   RUN_TEST_LOOP_c_c (conj, conj_test_data, );
6594   END (conj, complex);
6595 }
6596
6597
6598 static const struct test_ff_f_data copysign_test_data[] =
6599   {
6600     START_DATA (copysign),
6601     TEST_ff_f (copysign, 0, 4, 0),
6602     TEST_ff_f (copysign, 0, -4, minus_zero),
6603     TEST_ff_f (copysign, minus_zero, 4, 0),
6604     TEST_ff_f (copysign, minus_zero, -4, minus_zero),
6605
6606     TEST_ff_f (copysign, plus_infty, 0, plus_infty),
6607     TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty),
6608     TEST_ff_f (copysign, minus_infty, 0, plus_infty),
6609     TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty),
6610
6611     TEST_ff_f (copysign, 0, plus_infty, 0),
6612     TEST_ff_f (copysign, 0, minus_zero, minus_zero),
6613     TEST_ff_f (copysign, minus_zero, plus_infty, 0),
6614     TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero),
6615
6616     /* XXX More correctly we would have to check the sign of the NaN.  */
6617     TEST_ff_f (copysign, qnan_value, 0, qnan_value),
6618     TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value),
6619     TEST_ff_f (copysign, -qnan_value, 0, qnan_value),
6620     TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value),
6621     END_DATA (copysign)
6622   };
6623
6624 static void
6625 copysign_test (void)
6626 {
6627   START (copysign);
6628   RUN_TEST_LOOP_ff_f (copysign, copysign_test_data, );
6629   END (copysign);
6630 }
6631
6632
6633 static const struct test_f_f_data cos_test_data[] =
6634   {
6635     START_DATA (cos),
6636     TEST_f_f (cos, 0, 1),
6637     TEST_f_f (cos, minus_zero, 1),
6638     TEST_f_f (cos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6639     TEST_f_f (cos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
6640     TEST_f_f (cos, qnan_value, qnan_value, ERRNO_UNCHANGED),
6641
6642     TEST_f_f (cos, M_PI_6l * 2.0, 0.5),
6643     TEST_f_f (cos, M_PI_6l * 4.0, -0.5),
6644
6645     /* The value of M_PI_2l is never exactly PI/2, and therefore the
6646        answer is never exactly zero. The answer is equal to the error
6647        in rounding PI/2 for the type used.  Thus the answer is unique
6648        to each type.  */
6649 #ifdef TEST_FLOAT
6650     /* 32-bit float.  */
6651     TEST_f_f (cos, M_PI_2l, -0x1.777a5cp-25L),
6652 #endif
6653 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
6654     /* 64-bit double or 64-bit long double.  */
6655     TEST_f_f (cos, M_PI_2l, 0x1.1a62633145c07p-54L),
6656 #endif
6657 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
6658     /* 96-bit long double.  */
6659     TEST_f_f (cos, M_PI_2l, -0xe.ce675d1fc8f8cbbp-69L),
6660 #endif
6661 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
6662     /* 128-bit IBM long double.  */
6663     TEST_f_f (cos, M_PI_2l, 0x1.c1cd129024e088a67cc74020bcp-107L),
6664 #endif
6665 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
6666     /* 128-bit long double.  */
6667     TEST_f_f (cos, M_PI_2l, 0x1.cd129024e088a67cc74020bbea64p-115L),
6668 #endif
6669
6670     TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L),
6671
6672     TEST_f_f (cos, 0x1p65, 0.99888622066058013610642172179340364209972L),
6673     TEST_f_f (cos, -0x1p65, 0.99888622066058013610642172179340364209972L),
6674
6675 #ifdef TEST_DOUBLE
6676     TEST_f_f (cos, 0.80190127184058835, 0.69534156199418473),
6677 #endif
6678
6679     TEST_f_f (cos, 0x1.442f74p+15, 2.4407839902314016628485779006274989801517e-06L),
6680
6681 #ifndef TEST_FLOAT
6682     TEST_f_f (cos, 1e22, 0.5232147853951389454975944733847094921409L),
6683     TEST_f_f (cos, 0x1p1023, -0.826369834614147994500785680811743734805L),
6684 #endif
6685
6686 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
6687     TEST_f_f (cos, 0x1p16383L, 0.9210843909921906206874509522505756251609L),
6688 #endif
6689
6690     TEST_f_f (cos, 0x1p+120, -9.25879022854837867303861764107414946730833e-01L),
6691     TEST_f_f (cos, 0x1p+127, 7.81914638714960072263910298466369236613162e-01L),
6692     TEST_f_f (cos, 0x1.fffff8p+127, 9.98819362551949040703862043664101081064641e-01L),
6693     TEST_f_f (cos, 0x1.fffffep+127, 8.53021039830304158051791467692161107353094e-01L),
6694     TEST_f_f (cos, 0x1p+50, 8.68095904660550604334592502063501320395739e-01L),
6695     TEST_f_f (cos, 0x1p+28, -1.65568979490578758865468278195361551113358e-01L),
6696     END_DATA (cos)
6697   };
6698
6699 static void
6700 cos_test (void)
6701 {
6702   errno = 0;
6703   FUNC(cos) (0);
6704   if (errno == ENOSYS)
6705     /* Function not implemented.  */
6706     return;
6707
6708   START (cos);
6709   RUN_TEST_LOOP_f_f (cos, cos_test_data, );
6710   END (cos);
6711 }
6712
6713
6714 static const struct test_f_f_data cos_tonearest_test_data[] =
6715   {
6716     START_DATA (cos_tonearest),
6717     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6718     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6719     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6720     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6721     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6722     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6723     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6724     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6725     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6726     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6727     END_DATA (cos_tonearest)
6728   };
6729
6730 static void
6731 cos_test_tonearest (void)
6732 {
6733   errno = 0;
6734   FUNC(cos) (0);
6735   if (errno == ENOSYS)
6736     /* Function not implemented.  */
6737     return;
6738
6739   START (cos_tonearest);
6740   RUN_TEST_LOOP_f_f (cos, cos_tonearest_test_data, FE_TONEAREST);
6741   END (cos_tonearest);
6742 }
6743
6744
6745 static const struct test_f_f_data cos_towardzero_test_data[] =
6746   {
6747     START_DATA (cos_towardzero),
6748     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6749     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6750     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6751     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6752     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6753     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6754     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6755     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6756     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6757     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6758     END_DATA (cos_towardzero)
6759   };
6760
6761 static void
6762 cos_test_towardzero (void)
6763 {
6764   errno = 0;
6765   FUNC(cos) (0);
6766   if (errno == ENOSYS)
6767     /* Function not implemented.  */
6768     return;
6769
6770   START (cos_towardzero);
6771   RUN_TEST_LOOP_f_f (cos, cos_towardzero_test_data, FE_TOWARDZERO);
6772   END (cos_towardzero);
6773 }
6774
6775
6776 static const struct test_f_f_data cos_downward_test_data[] =
6777   {
6778     START_DATA (cos_downward),
6779     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6780     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6781     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6782     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6783     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6784     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6785     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6786     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6787     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6788     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6789     END_DATA (cos_downward)
6790   };
6791
6792 static void
6793 cos_test_downward (void)
6794 {
6795   errno = 0;
6796   FUNC(cos) (0);
6797   if (errno == ENOSYS)
6798     /* Function not implemented.  */
6799     return;
6800
6801   START (cos_downward);
6802   RUN_TEST_LOOP_f_f (cos, cos_downward_test_data, FE_DOWNWARD);
6803   END (cos_downward);
6804 }
6805
6806
6807 static const struct test_f_f_data cos_upward_test_data[] =
6808   {
6809     START_DATA (cos_upward),
6810     TEST_f_f (cos, 1, 0.5403023058681397174009366074429766037323L),
6811     TEST_f_f (cos, 2, -0.4161468365471423869975682295007621897660L),
6812     TEST_f_f (cos, 3, -0.9899924966004454572715727947312613023937L),
6813     TEST_f_f (cos, 4, -0.6536436208636119146391681830977503814241L),
6814     TEST_f_f (cos, 5, 0.2836621854632262644666391715135573083344L),
6815     TEST_f_f (cos, 6, 0.9601702866503660205456522979229244054519L),
6816     TEST_f_f (cos, 7, 0.7539022543433046381411975217191820122183L),
6817     TEST_f_f (cos, 8, -0.1455000338086135258688413818311946826093L),
6818     TEST_f_f (cos, 9, -0.9111302618846769883682947111811653112463L),
6819     TEST_f_f (cos, 10, -0.8390715290764524522588639478240648345199L),
6820     END_DATA (cos_upward)
6821   };
6822
6823 static void
6824 cos_test_upward (void)
6825 {
6826   errno = 0;
6827   FUNC(cos) (0);
6828   if (errno == ENOSYS)
6829     /* Function not implemented.  */
6830     return;
6831
6832   START (cos_upward);
6833   RUN_TEST_LOOP_f_f (cos, cos_upward_test_data, FE_UPWARD);
6834   END (cos_upward);
6835 }
6836
6837
6838 static const struct test_f_f_data cosh_test_data[] =
6839   {
6840     START_DATA (cosh),
6841     TEST_f_f (cosh, 0, 1),
6842     TEST_f_f (cosh, minus_zero, 1),
6843
6844 #ifndef TEST_INLINE
6845     TEST_f_f (cosh, plus_infty, plus_infty),
6846     TEST_f_f (cosh, minus_infty, plus_infty),
6847 #endif
6848     TEST_f_f (cosh, qnan_value, qnan_value),
6849
6850     TEST_f_f (cosh, 0.75L, 1.29468328467684468784170818539018176L),
6851
6852 #ifndef TEST_FLOAT
6853     TEST_f_f (cosh, 709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6854     TEST_f_f (cosh, -709.8893558127259666434838436543941497802734375L, 9.9999998999995070652573675944761818416035e+307L),
6855 #endif
6856     END_DATA (cosh)
6857   };
6858
6859 static void
6860 cosh_test (void)
6861 {
6862   errno = 0;
6863   FUNC(cosh) (0.7L);
6864   if (errno == ENOSYS)
6865     /* Function not implemented.  */
6866     return;
6867
6868   START (cosh);
6869   RUN_TEST_LOOP_f_f (cosh, cosh_test_data, );
6870   END (cosh);
6871 }
6872
6873
6874 static const struct test_f_f_data cosh_tonearest_test_data[] =
6875   {
6876     START_DATA (cosh_tonearest),
6877     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6878     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6879     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6880     END_DATA (cosh_tonearest)
6881   };
6882
6883 static void
6884 cosh_test_tonearest (void)
6885 {
6886   errno = 0;
6887   FUNC(cosh) (0);
6888   if (errno == ENOSYS)
6889     /* Function not implemented.  */
6890     return;
6891
6892   START (cosh_tonearest);
6893   RUN_TEST_LOOP_f_f (cosh, cosh_tonearest_test_data, FE_TONEAREST);
6894   END (cosh_tonearest);
6895 }
6896
6897
6898 static const struct test_f_f_data cosh_towardzero_test_data[] =
6899   {
6900     START_DATA (cosh_towardzero),
6901     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6902     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6903     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6904     END_DATA (cosh_towardzero)
6905   };
6906
6907 static void
6908 cosh_test_towardzero (void)
6909 {
6910   errno = 0;
6911   FUNC(cosh) (0);
6912   if (errno == ENOSYS)
6913     /* Function not implemented.  */
6914     return;
6915
6916   START (cosh_towardzero);
6917   RUN_TEST_LOOP_f_f (cosh, cosh_towardzero_test_data, FE_TOWARDZERO);
6918   END (cosh_towardzero);
6919 }
6920
6921
6922 static const struct test_f_f_data cosh_downward_test_data[] =
6923   {
6924     START_DATA (cosh_downward),
6925     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6926     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6927     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6928     END_DATA (cosh_downward)
6929   };
6930
6931 static void
6932 cosh_test_downward (void)
6933 {
6934   errno = 0;
6935   FUNC(cosh) (0);
6936   if (errno == ENOSYS)
6937     /* Function not implemented.  */
6938     return;
6939
6940   START (cosh_downward);
6941   RUN_TEST_LOOP_f_f (cosh, cosh_downward_test_data, FE_DOWNWARD);
6942   END (cosh_downward);
6943 }
6944
6945
6946 static const struct test_f_f_data cosh_upward_test_data[] =
6947   {
6948     START_DATA (cosh_upward),
6949     TEST_f_f (cosh, 22, 1792456423.065795780980053377632656584997L),
6950     TEST_f_f (cosh, 23, 4872401723.124451300068625740569997090344L),
6951     TEST_f_f (cosh, 24, 13244561064.92173614708845674912733665919L),
6952     END_DATA (cosh_upward)
6953   };
6954
6955 static void
6956 cosh_test_upward (void)
6957 {
6958   errno = 0;
6959   FUNC(cosh) (0);
6960   if (errno == ENOSYS)
6961     /* Function not implemented.  */
6962     return;
6963
6964   START (cosh_upward);
6965   RUN_TEST_LOOP_f_f (cosh, cosh_upward_test_data, FE_UPWARD);
6966   END (cosh_upward);
6967 }
6968
6969
6970 static void
6971 cpow_test (void)
6972 {
6973   errno = 0;
6974   FUNC(cpow) (BUILD_COMPLEX (1, 0), BUILD_COMPLEX (0, 0));
6975   if (errno == ENOSYS)
6976     /* Function not implemented.  */
6977     return;
6978
6979   START (cpow);
6980
6981   TEST_cc_c (cpow, 1, 0, 0, 0, 1.0, 0.0);
6982   TEST_cc_c (cpow, 2, 0, 10, 0, 1024.0, 0.0);
6983
6984   TEST_cc_c (cpow, M_El, 0, 0, 2 * M_PIl, 1.0, 0.0);
6985   TEST_cc_c (cpow, 2, 3, 4, 0, -119.0, -120.0);
6986
6987   TEST_cc_c (cpow, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value, qnan_value);
6988
6989   TEST_cc_c (cpow, 0.75L, 1.25L, 0.75L, 1.25L, 0.117506293914473555420279832210420483L, 0.346552747708338676483025352060418001L);
6990   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 1.0L, 0.0846958290317209430433805274189191353L, 0.513285749182902449043287190519090481L);
6991   TEST_cc_c (cpow, 0.75L, 1.25L, 1.0L, 0.0L, 0.75L, 1.25L);
6992   TEST_cc_c (cpow, 0.75L, 1.25L, 0.0L, 1.0L, 0.331825439177608832276067945276730566L, 0.131338600281188544930936345230903032L);
6993
6994   END (cpow, complex);
6995 }
6996
6997
6998 static const struct test_c_c_data cproj_test_data[] =
6999   {
7000     START_DATA (cproj),
7001     TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0),
7002     TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero),
7003     TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero),
7004     TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0),
7005
7006     TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value),
7007
7008     TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0),
7009     TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero),
7010     TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0),
7011     TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero),
7012
7013     TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0),
7014     TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0),
7015     END_DATA (cproj)
7016   };
7017
7018 static void
7019 cproj_test (void)
7020 {
7021   START (cproj);
7022   RUN_TEST_LOOP_c_c (cproj, cproj_test_data, );
7023   END (cproj, complex);
7024 }
7025
7026
7027 static const struct test_c_f_data creal_test_data[] =
7028   {
7029     START_DATA (creal);
7030     TEST_c_f (creal, 0.0, 1.0, 0.0),
7031     TEST_c_f (creal, minus_zero, 1.0, minus_zero),
7032     TEST_c_f (creal, qnan_value, 1.0, qnan_value),
7033     TEST_c_f (creal, qnan_value, qnan_value, qnan_value),
7034     TEST_c_f (creal, plus_infty, 1.0, plus_infty),
7035     TEST_c_f (creal, minus_infty, 1.0, minus_infty),
7036     TEST_c_f (creal, 2.0, 3.0, 2.0),
7037     END_DATA (creal);
7038   };
7039
7040 static void
7041 creal_test (void)
7042 {
7043   START (creal);
7044   RUN_TEST_LOOP_c_f (creal, creal_test_data, );
7045   END (creal);
7046 }
7047
7048 static const struct test_c_c_data csin_test_data[] =
7049   {
7050     START_DATA (csin),
7051     TEST_c_c (csin, 0.0, 0.0, 0.0, 0.0),
7052     TEST_c_c (csin, minus_zero, 0.0, minus_zero, 0.0),
7053     TEST_c_c (csin, 0.0, minus_zero, 0, minus_zero),
7054     TEST_c_c (csin, minus_zero, minus_zero, minus_zero, minus_zero),
7055
7056     TEST_c_c (csin, 0.0, plus_infty, 0.0, plus_infty),
7057     TEST_c_c (csin, minus_zero, plus_infty, minus_zero, plus_infty),
7058     TEST_c_c (csin, 0.0, minus_infty, 0.0, minus_infty),
7059     TEST_c_c (csin, minus_zero, minus_infty, minus_zero, minus_infty),
7060
7061     TEST_c_c (csin, plus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7062     TEST_c_c (csin, minus_infty, 0.0, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7063     TEST_c_c (csin, plus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7064     TEST_c_c (csin, minus_infty, minus_zero, qnan_value, 0.0, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7065
7066     TEST_c_c (csin, plus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7067     TEST_c_c (csin, minus_infty, plus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7068     TEST_c_c (csin, plus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7069     TEST_c_c (csin, minus_infty, minus_infty, qnan_value, plus_infty, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7070
7071     TEST_c_c (csin, plus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7072     TEST_c_c (csin, plus_infty, -6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7073     TEST_c_c (csin, minus_infty, 6.75, qnan_value, qnan_value, INVALID_EXCEPTION),
7074     TEST_c_c (csin, minus_infty, -6.75,  qnan_value, qnan_value, INVALID_EXCEPTION),
7075
7076     TEST_c_c (csin, 4.625, plus_infty, minus_infty, minus_infty),
7077     TEST_c_c (csin, 4.625, minus_infty, minus_infty, plus_infty),
7078     TEST_c_c (csin, -4.625, plus_infty, plus_infty, minus_infty),
7079     TEST_c_c (csin, -4.625, minus_infty, plus_infty, plus_infty),
7080
7081     TEST_c_c (csin, qnan_value, 0.0, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7082     TEST_c_c (csin, qnan_value, minus_zero, qnan_value, 0.0, IGNORE_ZERO_INF_SIGN),
7083
7084     TEST_c_c (csin, qnan_value, plus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7085     TEST_c_c (csin, qnan_value, minus_infty, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7086
7087     TEST_c_c (csin, qnan_value, 9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7088     TEST_c_c (csin, qnan_value, -9.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7089
7090     TEST_c_c (csin, 0.0, qnan_value, 0.0, qnan_value),
7091     TEST_c_c (csin, minus_zero, qnan_value, minus_zero, qnan_value),
7092
7093     TEST_c_c (csin, 10.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7094     TEST_c_c (csin, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7095
7096     TEST_c_c (csin, plus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7097     TEST_c_c (csin, minus_infty, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7098
7099     TEST_c_c (csin, qnan_value, qnan_value, qnan_value, qnan_value),
7100
7101     TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L),
7102     TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L),
7103
7104     TEST_c_c (csin, 0.75, 89.5, 2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7105     TEST_c_c (csin, 0.75, -89.5, 2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7106     TEST_c_c (csin, -0.75, 89.5, -2.522786001038096774676288412995370563339e38L, 2.708024460708609732016532185663087200560e38L),
7107     TEST_c_c (csin, -0.75, -89.5, -2.522786001038096774676288412995370563339e38L, -2.708024460708609732016532185663087200560e38L),
7108
7109 #ifndef TEST_FLOAT
7110     TEST_c_c (csin, 0.75, 710.5, 1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7111     TEST_c_c (csin, 0.75, -710.5, 1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7112     TEST_c_c (csin, -0.75, 710.5, -1.255317763348154410745082950806112487736e308L, 1.347490911916428129246890157395342279438e308L),
7113     TEST_c_c (csin, -0.75, -710.5, -1.255317763348154410745082950806112487736e308L, -1.347490911916428129246890157395342279438e308L),
7114 #endif
7115
7116 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7117     TEST_c_c (csin, 0.75, 11357.25, 8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7118     TEST_c_c (csin, 0.75, -11357.25, 8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7119     TEST_c_c (csin, -0.75, 11357.25, -8.385498349388321535962327491346664141020e4931L, 9.001213196851067077465606717616495588201e4931L),
7120     TEST_c_c (csin, -0.75, -11357.25, -8.385498349388321535962327491346664141020e4931L, -9.001213196851067077465606717616495588201e4931L),
7121 #endif
7122
7123 #ifdef TEST_FLOAT
7124     TEST_c_c (csin, 0x1p-149, 180, 1.043535896672617552965983803453927655332e33L, plus_infty, OVERFLOW_EXCEPTION),
7125 #endif
7126
7127 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7128     TEST_c_c (csin, 0x1p-1074, 1440, 5.981479269486130556466515778180916082415e301L, plus_infty, OVERFLOW_EXCEPTION),
7129 #endif
7130
7131 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7132     TEST_c_c (csin, 0x1p-16434L, 22730, 1.217853148905605987081057582351152052687e4924L, plus_infty, OVERFLOW_EXCEPTION),
7133 #endif
7134
7135     TEST_c_c (csin, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7136     TEST_c_c (csin, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7137     END_DATA (csin)
7138   };
7139
7140 static void
7141 csin_test (void)
7142 {
7143   errno = 0;
7144   FUNC(csin) (BUILD_COMPLEX (0.7L, 1.2L));
7145   if (errno == ENOSYS)
7146     /* Function not implemented.  */
7147     return;
7148
7149   START (csin);
7150   RUN_TEST_LOOP_c_c (csin, csin_test_data, );
7151   END (csin, complex);
7152 }
7153
7154
7155 static const struct test_c_c_data csinh_test_data[] =
7156   {
7157     START_DATA (csinh),
7158     TEST_c_c (csinh, 0.0, 0.0, 0.0, 0.0),
7159     TEST_c_c (csinh, minus_zero, 0.0, minus_zero, 0.0),
7160     TEST_c_c (csinh, 0.0, minus_zero, 0.0, minus_zero),
7161     TEST_c_c (csinh, minus_zero, minus_zero, minus_zero, minus_zero),
7162
7163     TEST_c_c (csinh, 0.0, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7164     TEST_c_c (csinh, minus_zero, plus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7165     TEST_c_c (csinh, 0.0, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7166     TEST_c_c (csinh, minus_zero, minus_infty, 0.0, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7167
7168     TEST_c_c (csinh, plus_infty, 0.0, plus_infty, 0.0),
7169     TEST_c_c (csinh, minus_infty, 0.0, minus_infty, 0.0),
7170     TEST_c_c (csinh, plus_infty, minus_zero, plus_infty, minus_zero),
7171     TEST_c_c (csinh, minus_infty, minus_zero, minus_infty, minus_zero),
7172
7173     TEST_c_c (csinh, plus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7174     TEST_c_c (csinh, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7175     TEST_c_c (csinh, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7176     TEST_c_c (csinh, minus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN),
7177
7178     TEST_c_c (csinh, plus_infty, 4.625, minus_infty, minus_infty),
7179     TEST_c_c (csinh, minus_infty, 4.625, plus_infty, minus_infty),
7180     TEST_c_c (csinh, plus_infty, -4.625, minus_infty, plus_infty),
7181     TEST_c_c (csinh, minus_infty, -4.625, plus_infty, plus_infty),
7182
7183     TEST_c_c (csinh, 6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7184     TEST_c_c (csinh, -6.75, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7185     TEST_c_c (csinh, 6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7186     TEST_c_c (csinh, -6.75, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7187
7188     TEST_c_c (csinh, 0.0, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7189     TEST_c_c (csinh, minus_zero, qnan_value, 0.0, qnan_value, IGNORE_ZERO_INF_SIGN),
7190
7191     TEST_c_c (csinh, plus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7192     TEST_c_c (csinh, minus_infty, qnan_value, plus_infty, qnan_value, IGNORE_ZERO_INF_SIGN),
7193
7194     TEST_c_c (csinh, 9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7195     TEST_c_c (csinh, -9.0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7196
7197     TEST_c_c (csinh, qnan_value, 0.0, qnan_value, 0.0),
7198     TEST_c_c (csinh, qnan_value, minus_zero, qnan_value, minus_zero),
7199
7200     TEST_c_c (csinh, qnan_value, 10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7201     TEST_c_c (csinh, qnan_value, -10.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7202
7203     TEST_c_c (csinh, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7204     TEST_c_c (csinh, qnan_value, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7205
7206     TEST_c_c (csinh, qnan_value, qnan_value, qnan_value, qnan_value),
7207
7208     TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L),
7209     TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L),
7210
7211     TEST_c_c (csinh, 89.5, 0.75, 2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7212     TEST_c_c (csinh, -89.5, 0.75, -2.708024460708609732016532185663087200560e38L, 2.522786001038096774676288412995370563339e38L),
7213     TEST_c_c (csinh, 89.5, -0.75, 2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7214     TEST_c_c (csinh, -89.5, -0.75, -2.708024460708609732016532185663087200560e38L, -2.522786001038096774676288412995370563339e38L),
7215
7216 #ifndef TEST_FLOAT
7217     TEST_c_c (csinh, 710.5, 0.75, 1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7218     TEST_c_c (csinh, -710.5, 0.75, -1.347490911916428129246890157395342279438e308L, 1.255317763348154410745082950806112487736e308L),
7219     TEST_c_c (csinh, 710.5, -0.75, 1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7220     TEST_c_c (csinh, -710.5, -0.75, -1.347490911916428129246890157395342279438e308L, -1.255317763348154410745082950806112487736e308L),
7221 #endif
7222
7223 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7224     TEST_c_c (csinh, 11357.25, 0.75, 9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7225     TEST_c_c (csinh, -11357.25, 0.75, -9.001213196851067077465606717616495588201e4931L, 8.385498349388321535962327491346664141020e4931L),
7226     TEST_c_c (csinh, 11357.25, -0.75, 9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7227     TEST_c_c (csinh, -11357.25, -0.75, -9.001213196851067077465606717616495588201e4931L, -8.385498349388321535962327491346664141020e4931L),
7228 #endif
7229
7230 #ifdef TEST_FLOAT
7231     TEST_c_c (csinh, 180, 0x1p-149, plus_infty, 1.043535896672617552965983803453927655332e33L, OVERFLOW_EXCEPTION),
7232 #endif
7233
7234 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7235     TEST_c_c (csinh, 1440, 0x1p-1074, plus_infty, 5.981479269486130556466515778180916082415e301L, OVERFLOW_EXCEPTION),
7236 #endif
7237
7238 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7239     TEST_c_c (csinh, 22730, 0x1p-16434L, plus_infty, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
7240 #endif
7241
7242     TEST_c_c (csinh, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
7243     TEST_c_c (csinh, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
7244     END_DATA (csinh)
7245   };
7246
7247 static void
7248 csinh_test (void)
7249 {
7250   errno = 0;
7251   FUNC(csinh) (BUILD_COMPLEX (0.7L, 1.2L));
7252   if (errno == ENOSYS)
7253     /* Function not implemented.  */
7254     return;
7255
7256   START (csinh);
7257   RUN_TEST_LOOP_c_c (csinh, csinh_test_data, );
7258   END (csinh, complex);
7259 }
7260
7261
7262 static const struct test_c_c_data csqrt_test_data[] =
7263   {
7264     START_DATA (csqrt),
7265     TEST_c_c (csqrt, 0, 0, 0.0, 0.0),
7266     TEST_c_c (csqrt, 0, minus_zero, 0, minus_zero),
7267     TEST_c_c (csqrt, minus_zero, 0, 0.0, 0.0),
7268     TEST_c_c (csqrt, minus_zero, minus_zero, 0.0, minus_zero),
7269
7270     TEST_c_c (csqrt, minus_infty, 0, 0.0, plus_infty),
7271     TEST_c_c (csqrt, minus_infty, 6, 0.0, plus_infty),
7272     TEST_c_c (csqrt, minus_infty, minus_zero, 0.0, minus_infty),
7273     TEST_c_c (csqrt, minus_infty, -6, 0.0, minus_infty),
7274
7275     TEST_c_c (csqrt, plus_infty, 0, plus_infty, 0.0),
7276     TEST_c_c (csqrt, plus_infty, 6, plus_infty, 0.0),
7277     TEST_c_c (csqrt, plus_infty, minus_zero, plus_infty, minus_zero),
7278     TEST_c_c (csqrt, plus_infty, -6, plus_infty, minus_zero),
7279
7280     TEST_c_c (csqrt, 0, plus_infty, plus_infty, plus_infty),
7281     TEST_c_c (csqrt, 4, plus_infty, plus_infty, plus_infty),
7282     TEST_c_c (csqrt, plus_infty, plus_infty, plus_infty, plus_infty),
7283     TEST_c_c (csqrt, minus_zero, plus_infty, plus_infty, plus_infty),
7284     TEST_c_c (csqrt, -4, plus_infty, plus_infty, plus_infty),
7285     TEST_c_c (csqrt, minus_infty, plus_infty, plus_infty, plus_infty),
7286     TEST_c_c (csqrt, 0, minus_infty, plus_infty, minus_infty),
7287     TEST_c_c (csqrt, 4, minus_infty, plus_infty, minus_infty),
7288     TEST_c_c (csqrt, plus_infty, minus_infty, plus_infty, minus_infty),
7289     TEST_c_c (csqrt, minus_zero, minus_infty, plus_infty, minus_infty),
7290     TEST_c_c (csqrt, -4, minus_infty, plus_infty, minus_infty),
7291     TEST_c_c (csqrt, minus_infty, minus_infty, plus_infty, minus_infty),
7292
7293     TEST_c_c (csqrt, minus_infty, qnan_value, qnan_value, plus_infty, IGNORE_ZERO_INF_SIGN),
7294
7295     TEST_c_c (csqrt, plus_infty, qnan_value, plus_infty, qnan_value),
7296
7297     TEST_c_c (csqrt, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7298     TEST_c_c (csqrt, 1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7299     TEST_c_c (csqrt, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7300     TEST_c_c (csqrt, -1, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7301
7302     TEST_c_c (csqrt, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7303     TEST_c_c (csqrt, qnan_value, 8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7304     TEST_c_c (csqrt, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7305     TEST_c_c (csqrt, qnan_value, -8, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7306
7307     TEST_c_c (csqrt, qnan_value, qnan_value, qnan_value, qnan_value),
7308
7309     TEST_c_c (csqrt, 16.0, -30.0, 5.0, -3.0),
7310     TEST_c_c (csqrt, -1, 0, 0.0, 1.0),
7311     TEST_c_c (csqrt, 0, 2, 1.0, 1.0),
7312     TEST_c_c (csqrt, 119, 120, 12.0, 5.0),
7313     TEST_c_c (csqrt, 0.75L, 1.25L, 1.05065169626078392338656675760808326L, 0.594868882070379067881984030639932657L),
7314     TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L),
7315     TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L),
7316     /* Principal square root should be returned (i.e., non-negative real
7317        part).  */
7318     TEST_c_c (csqrt, 0, -1, M_SQRT1_2l, -M_SQRT1_2l),
7319
7320     TEST_c_c (csqrt, 0x1.fffffep+127L, 0x1.fffffep+127L, 2.026714405498316804978751017492482558075e+19L, 8.394925938143272988211878516208015586281e+18L),
7321     TEST_c_c (csqrt, 0x1.fffffep+127L, 1.0L, 1.844674352395372953599975585936590505260e+19L, 2.710505511993121390769065968615872097053e-20L),
7322     TEST_c_c (csqrt, 0x1p-149L, 0x1p-149L, 4.112805464342778798097003462770175200803e-23L, 1.703579802732953750368659735601389709551e-23L),
7323     TEST_c_c (csqrt, 0x1p-147L, 0x1p-147L, 8.225610928685557596194006925540350401606e-23L, 3.407159605465907500737319471202779419102e-23L),
7324
7325     TEST_c_c (csqrt, plus_zero, 0x1p-149L, 2.646977960169688559588507814623881131411e-23L, 2.646977960169688559588507814623881131411e-23L),
7326     TEST_c_c (csqrt, 0x1p-50L, 0x1p-149L, 2.980232238769531250000000000000000000000e-8L, 2.350988701644575015937473074444491355637e-38L),
7327 #ifdef TEST_FLOAT
7328     TEST_c_c (csqrt, 0x1p+127L, 0x1p-149L, 1.304381782533278221234957180625250836888e19L, plus_zero, UNDERFLOW_EXCEPTION),
7329 #endif
7330     TEST_c_c (csqrt, 0x1p-149L, 0x1p+127L, 9.223372036854775808000000000000000000000e18L, 9.223372036854775808000000000000000000000e18L),
7331     TEST_c_c (csqrt, 0x1.000002p-126L, 0x1.000002p-126L, 1.191195773697904627170323731331667740087e-19L, 4.934094449071842328766868579214125217132e-20L),
7332     TEST_c_c (csqrt, -0x1.000002p-126L, -0x1.000002p-126L, 4.934094449071842328766868579214125217132e-20L, -1.191195773697904627170323731331667740087e-19L),
7333
7334 #ifndef TEST_FLOAT
7335     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 1.473094556905565378990473658199034571917e+154L, 6.101757441282702188537080005372547713595e+153L),
7336     TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 1.379778091031440685006200821918878702861e+154L, 3.257214233483129514781233066898042490248e+153L),
7337     TEST_c_c (csqrt, 0x1p-1074L, 0x1p-1074L, 2.442109726130830256743814843868934877597e-162L, 1.011554969366634726113090867589031782487e-162L),
7338     TEST_c_c (csqrt, 0x1p-1073L, 0x1p-1073L, 3.453664695497464982856905711457966660085e-162L, 1.430554756764195530630723976279903095110e-162L),
7339
7340     TEST_c_c (csqrt, plus_zero, 0x1p-1074L, 1.571727784702628688909515672805082228285e-162L, 1.571727784702628688909515672805082228285e-162L),
7341     TEST_c_c (csqrt, 0x1p-500L, 0x1p-1074L, 5.527147875260444560247265192192255725514e-76L, 4.469444793151709302716387622440056066334e-249L),
7342 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MAX_EXP == 1024)
7343     TEST_c_c (csqrt, 0x1p+1023L, 0x1p-1074L, 9.480751908109176726832526455652159260085e153L, plus_zero, UNDERFLOW_EXCEPTION),
7344 #endif
7345     TEST_c_c (csqrt, 0x1p-1074L, 0x1p+1023L, 6.703903964971298549787012499102923063740e153L, 6.703903964971298549787012499102923063740e153L),
7346     TEST_c_c (csqrt, 0x1.0000000000001p-1022L, 0x1.0000000000001p-1022L, 1.638872094839911521020410942677082920935e-154L, 6.788430486774966350907249113759995429568e-155L),
7347     TEST_c_c (csqrt, -0x1.0000000000001p-1022L, -0x1.0000000000001p-1022L, 6.788430486774966350907249113759995429568e-155L, -1.638872094839911521020410942677082920935e-154L),
7348 #endif
7349
7350 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7351     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1.fp+16383L, 1.179514222452201722651836720466795901016e+2466L, 4.885707879516577666702435054303191575148e+2465L),
7352     TEST_c_c (csqrt, 0x1.fp+16383L, 0x1p+16383L, 1.106698967236475180613254276996359485630e+2466L, 2.687568007603946993388538156299100955642e+2465L),
7353     TEST_c_c (csqrt, 0x1p-16440L, 0x1p-16441L, 3.514690655930285351254618340783294558136e-2475L,  8.297059146828716918029689466551384219370e-2476L),
7354
7355     TEST_c_c (csqrt, plus_zero, 0x1p-16445L, 4.269191686890197837775136325621239761720e-2476L, 4.269191686890197837775136325621239761720e-2476L),
7356     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16445L, 2.660791472672778409283210520357607795518e-753L, 6.849840675828785164910701384823702064234e-4199L),
7357     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16445L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7358     TEST_c_c (csqrt, 0x1p-16445L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7359     TEST_c_c (csqrt, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-16382L, 2.014551439675644900131815801350165472778e-2466L, 8.344545284118961664300307045791497724440e-2467L),
7360     TEST_c_c (csqrt, -0x1.0000000000000002p-16382L, -0x1.0000000000000002p-16382L, 8.344545284118961664300307045791497724440e-2467L, -2.014551439675644900131815801350165472778e-2466L),
7361
7362 # if LDBL_MANT_DIG >= 113
7363     TEST_c_c (csqrt, plus_zero, 0x1p-16494L, 1.799329752913293143453817328207572571442e-2483L, 1.799329752913293143453817328207572571442e-2483L),
7364     TEST_c_c (csqrt, 0x1p-5000L, 0x1p-16494L, 2.660791472672778409283210520357607795518e-753L, 1.216776133331049643422030716668249905907e-4213L),
7365     TEST_c_c (csqrt, 0x1p+16383L, 0x1p-16494L, 7.712754032630730034273323365543179095045e2465L, plus_zero, UNDERFLOW_EXCEPTION),
7366     TEST_c_c (csqrt, 0x1p-16494L, 0x1p+16383L, 5.453740678097079647314921223668914312241e2465L, 5.453740678097079647314921223668914312241e2465L),
7367     TEST_c_c (csqrt, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-16382L, 2.014551439675644900022606748976158925145e-2466L, 8.344545284118961663847948339519226074126e-2467L),
7368     TEST_c_c (csqrt, -0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-16382L, 8.344545284118961663847948339519226074126e-2467L, -2.014551439675644900022606748976158925145e-2466L),
7369 # endif
7370 #endif
7371     END_DATA (csqrt)
7372   };
7373
7374 static void
7375 csqrt_test (void)
7376 {
7377   errno = 0;
7378   FUNC(csqrt) (BUILD_COMPLEX (-1, 0));
7379   if (errno == ENOSYS)
7380     /* Function not implemented.  */
7381     return;
7382
7383   START (csqrt);
7384   RUN_TEST_LOOP_c_c (csqrt, csqrt_test_data, );
7385   END (csqrt, complex);
7386 }
7387
7388 static const struct test_c_c_data ctan_test_data[] =
7389   {
7390     START_DATA (ctan),
7391     TEST_c_c (ctan, 0, 0, 0.0, 0.0),
7392     TEST_c_c (ctan, 0, minus_zero, 0.0, minus_zero),
7393     TEST_c_c (ctan, minus_zero, 0, minus_zero, 0.0),
7394     TEST_c_c (ctan, minus_zero, minus_zero, minus_zero, minus_zero),
7395
7396     TEST_c_c (ctan, 0, plus_infty, 0.0, 1.0),
7397     TEST_c_c (ctan, 1, plus_infty, 0.0, 1.0),
7398     TEST_c_c (ctan, minus_zero, plus_infty, minus_zero, 1.0),
7399     TEST_c_c (ctan, -1, plus_infty, minus_zero, 1.0),
7400
7401     TEST_c_c (ctan, 0, minus_infty, 0.0, -1.0),
7402     TEST_c_c (ctan, 1, minus_infty, 0.0, -1.0),
7403     TEST_c_c (ctan, minus_zero, minus_infty, minus_zero, -1.0),
7404     TEST_c_c (ctan, -1, minus_infty, minus_zero, -1.0),
7405
7406     TEST_c_c (ctan, plus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7407     TEST_c_c (ctan, plus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7408     TEST_c_c (ctan, minus_infty, 0, qnan_value, qnan_value, INVALID_EXCEPTION),
7409     TEST_c_c (ctan, minus_infty, 2, qnan_value, qnan_value, INVALID_EXCEPTION),
7410     TEST_c_c (ctan, plus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7411     TEST_c_c (ctan, plus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7412     TEST_c_c (ctan, minus_infty, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION),
7413     TEST_c_c (ctan, minus_infty, -2, qnan_value, qnan_value, INVALID_EXCEPTION),
7414
7415     TEST_c_c (ctan, qnan_value, plus_infty, 0.0, 1.0, IGNORE_ZERO_INF_SIGN),
7416     TEST_c_c (ctan, qnan_value, minus_infty, 0.0, -1.0, IGNORE_ZERO_INF_SIGN),
7417
7418     TEST_c_c (ctan, 0, qnan_value, 0.0, qnan_value),
7419     TEST_c_c (ctan, minus_zero, qnan_value, minus_zero, qnan_value),
7420
7421     TEST_c_c (ctan, 0.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7422     TEST_c_c (ctan, -4.5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7423
7424     TEST_c_c (ctan, qnan_value, 0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7425     TEST_c_c (ctan, qnan_value, 5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7426     TEST_c_c (ctan, qnan_value, minus_zero, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7427     TEST_c_c (ctan, qnan_value, -0.25, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7428
7429     TEST_c_c (ctan, qnan_value, qnan_value, qnan_value, qnan_value),
7430
7431     TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L),
7432     TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L),
7433
7434     TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L, UNDERFLOW_EXCEPTION_FLOAT),
7435     TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0, UNDERFLOW_EXCEPTION_FLOAT),
7436
7437 #ifndef TEST_FLOAT
7438     TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7439     TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE),
7440 #endif
7441
7442 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7443     TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0, UNDERFLOW_EXCEPTION),
7444     TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0, UNDERFLOW_EXCEPTION),
7445 #endif
7446
7447     TEST_c_c (ctan, 0x3.243f6cp-1, 0, -2.287733242885645987394874673945769518150e7L, 0.0),
7448
7449     TEST_c_c (ctan, 0x1p127, 1, 0.2446359391192790896381501310437708987204L, 0.9101334047676183761532873794426475906201L),
7450
7451 #ifndef TEST_FLOAT
7452     TEST_c_c (ctan, 0x1p1023, 1, -0.2254627924997545057926782581695274244229L, 0.8786063118883068695462540226219865087189L),
7453 #endif
7454
7455 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7456     TEST_c_c (ctan, 0x1p16383L, 1, 0.1608598776370396607204448234354670036772L, 0.8133818522051542536316746743877629761488L),
7457 #endif
7458
7459     TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0, UNDERFLOW_EXCEPTION),
7460     TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0, UNDERFLOW_EXCEPTION),
7461     TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0, UNDERFLOW_EXCEPTION),
7462     TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0, UNDERFLOW_EXCEPTION),
7463     END_DATA (ctan)
7464   };
7465
7466 static void
7467 ctan_test (void)
7468 {
7469   errno = 0;
7470   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7471   if (errno == ENOSYS)
7472     /* Function not implemented.  */
7473     return;
7474
7475   START (ctan);
7476   RUN_TEST_LOOP_c_c (ctan, ctan_test_data, );
7477   END (ctan, complex);
7478 }
7479
7480
7481 static const struct test_c_c_data ctan_tonearest_test_data[] =
7482   {
7483     START_DATA (ctan_tonearest),
7484     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7485
7486 #ifndef TEST_FLOAT
7487     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7488 #endif
7489
7490 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7491     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7492 #endif
7493     END_DATA (ctan_tonearest)
7494   };
7495
7496 static void
7497 ctan_test_tonearest (void)
7498 {
7499   errno = 0;
7500   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7501   if (errno == ENOSYS)
7502     /* Function not implemented.  */
7503     return;
7504
7505   START (ctan_tonearest);
7506   RUN_TEST_LOOP_c_c (ctan, ctan_tonearest_test_data, FE_TONEAREST);
7507   END (ctan_tonearest, complex);
7508 }
7509
7510
7511 static const struct test_c_c_data ctan_towardzero_test_data[] =
7512   {
7513     START_DATA (ctan_towardzero),
7514     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7515
7516 #ifndef TEST_FLOAT
7517     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7518 #endif
7519
7520 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7521     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7522 #endif
7523     END_DATA (ctan_towardzero)
7524   };
7525
7526 static void
7527 ctan_test_towardzero (void)
7528 {
7529   errno = 0;
7530   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7531   if (errno == ENOSYS)
7532     /* Function not implemented.  */
7533     return;
7534
7535   START (ctan_towardzero);
7536   RUN_TEST_LOOP_c_c (ctan, ctan_towardzero_test_data, FE_TOWARDZERO);
7537   END (ctan_towardzero, complex);
7538 }
7539
7540
7541 static const struct test_c_c_data ctan_downward_test_data[] =
7542   {
7543     START_DATA (ctan_downward),
7544     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7545
7546 #ifndef TEST_FLOAT
7547     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7548 #endif
7549
7550 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7551     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7552 #endif
7553     END_DATA (ctan_downward)
7554   };
7555
7556 static void
7557 ctan_test_downward (void)
7558 {
7559   errno = 0;
7560   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7561   if (errno == ENOSYS)
7562     /* Function not implemented.  */
7563     return;
7564
7565   START (ctan_downward);
7566   RUN_TEST_LOOP_c_c (ctan, ctan_downward_test_data, FE_DOWNWARD);
7567   END (ctan_downward, complex);
7568 }
7569
7570
7571 static const struct test_c_c_data ctan_upward_test_data[] =
7572   {
7573     START_DATA (ctan_upward),
7574     TEST_c_c (ctan, 0x1.921fb6p+0, 0x1p-149, -2.287733242885645987394874673945769518150e7L, 7.334008549954377778731880988481078535821e-31L),
7575
7576 #ifndef TEST_FLOAT
7577     TEST_c_c (ctan, 0x1.921fb54442d18p+0, 0x1p-1074, 1.633123935319536975596773704152891653086e16L, 1.317719414943508315995636961402669067843e-291L),
7578 #endif
7579
7580 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7581     TEST_c_c (ctan, 0x1.921fb54442d1846ap+0L, 0x1p-16445L, -3.986797629811710706723242948653362815645e19L, 5.793882568875674066286163141055208625180e-4912L),
7582 #endif
7583     END_DATA (ctan_upward)
7584   };
7585
7586 static void
7587 ctan_test_upward (void)
7588 {
7589   errno = 0;
7590   FUNC(ctan) (BUILD_COMPLEX (0.7L, 1.2L));
7591   if (errno == ENOSYS)
7592     /* Function not implemented.  */
7593     return;
7594
7595   START (ctan_upward);
7596   RUN_TEST_LOOP_c_c (ctan, ctan_upward_test_data, FE_UPWARD);
7597   END (ctan_upward, complex);
7598 }
7599
7600
7601 static const struct test_c_c_data ctanh_test_data[] =
7602   {
7603     START_DATA (ctanh),
7604     TEST_c_c (ctanh, 0, 0, 0.0, 0.0),
7605     TEST_c_c (ctanh, 0, minus_zero, 0.0, minus_zero),
7606     TEST_c_c (ctanh, minus_zero, 0, minus_zero, 0.0),
7607     TEST_c_c (ctanh, minus_zero, minus_zero, minus_zero, minus_zero),
7608
7609     TEST_c_c (ctanh, plus_infty, 0, 1.0, 0.0),
7610     TEST_c_c (ctanh, plus_infty, 1, 1.0, 0.0),
7611     TEST_c_c (ctanh, plus_infty, minus_zero, 1.0, minus_zero),
7612     TEST_c_c (ctanh, plus_infty, -1, 1.0, minus_zero),
7613     TEST_c_c (ctanh, minus_infty, 0, -1.0, 0.0),
7614     TEST_c_c (ctanh, minus_infty, 1, -1.0, 0.0),
7615     TEST_c_c (ctanh, minus_infty, minus_zero, -1.0, minus_zero),
7616     TEST_c_c (ctanh, minus_infty, -1, -1.0, minus_zero),
7617
7618     TEST_c_c (ctanh, 0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7619     TEST_c_c (ctanh, 2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7620     TEST_c_c (ctanh, 0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7621     TEST_c_c (ctanh, 2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7622     TEST_c_c (ctanh, minus_zero, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7623     TEST_c_c (ctanh, -2, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7624     TEST_c_c (ctanh, minus_zero, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7625     TEST_c_c (ctanh, -2, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION),
7626
7627     TEST_c_c (ctanh, plus_infty, qnan_value, 1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7628     TEST_c_c (ctanh, minus_infty, qnan_value, -1.0, 0.0, IGNORE_ZERO_INF_SIGN),
7629
7630     TEST_c_c (ctanh, qnan_value, 0, qnan_value, 0.0),
7631     TEST_c_c (ctanh, qnan_value, minus_zero, qnan_value, minus_zero),
7632
7633     TEST_c_c (ctanh, qnan_value, 0.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7634     TEST_c_c (ctanh, qnan_value, -4.5, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7635
7636     TEST_c_c (ctanh, 0, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7637     TEST_c_c (ctanh, 5, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7638     TEST_c_c (ctanh, minus_zero, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7639     TEST_c_c (ctanh, -0.25, qnan_value, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
7640
7641     TEST_c_c (ctanh, qnan_value, qnan_value, qnan_value, qnan_value),
7642
7643     TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0),
7644
7645     TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L),
7646     TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L),
7647
7648     TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L, UNDERFLOW_EXCEPTION_FLOAT),
7649     TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L, UNDERFLOW_EXCEPTION_FLOAT),
7650
7651 #ifndef TEST_FLOAT
7652     TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
7653     TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L, UNDERFLOW_EXCEPTION_DOUBLE),
7654 #endif
7655
7656 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7657     TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L, UNDERFLOW_EXCEPTION),
7658     TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L, UNDERFLOW_EXCEPTION),
7659 #endif
7660
7661     TEST_c_c (ctanh, 0, 0x3.243f6cp-1, 0.0, -2.287733242885645987394874673945769518150e7L),
7662
7663     TEST_c_c (ctanh, 1, 0x1p127, 0.9101334047676183761532873794426475906201L, 0.2446359391192790896381501310437708987204L),
7664
7665 #ifndef TEST_FLOAT
7666     TEST_c_c (ctanh, 1, 0x1p1023, 0.8786063118883068695462540226219865087189L, -0.2254627924997545057926782581695274244229L),
7667 #endif
7668
7669 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
7670     TEST_c_c (ctanh, 1, 0x1p16383L, 0.8133818522051542536316746743877629761488L, 0.1608598776370396607204448234354670036772L),
7671 #endif
7672
7673     TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero, UNDERFLOW_EXCEPTION),
7674     TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero, UNDERFLOW_EXCEPTION),
7675     TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero, UNDERFLOW_EXCEPTION),
7676     TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero, UNDERFLOW_EXCEPTION),
7677     END_DATA (ctanh)
7678   };
7679
7680 static void
7681 ctanh_test (void)
7682 {
7683   errno = 0;
7684   FUNC(ctanh) (BUILD_COMPLEX (0, 0));
7685   if (errno == ENOSYS)
7686     /* Function not implemented.  */
7687     return;
7688
7689   START (ctanh);
7690   RUN_TEST_LOOP_c_c (ctanh, ctanh_test_data, );
7691   END (ctanh, complex);
7692 }
7693
7694
7695 static const struct test_c_c_data ctanh_tonearest_test_data[] =
7696   {
7697     START_DATA (ctanh_tonearest),
7698     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7699
7700 #ifndef TEST_FLOAT
7701     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7702 #endif
7703
7704 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7705     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7706 #endif
7707     END_DATA (ctanh_tonearest)
7708   };
7709
7710 static void
7711 ctanh_test_tonearest (void)
7712 {
7713   errno = 0;
7714   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7715   if (errno == ENOSYS)
7716     /* Function not implemented.  */
7717     return;
7718
7719   START (ctanh_tonearest);
7720   RUN_TEST_LOOP_c_c (ctanh, ctanh_tonearest_test_data, FE_TONEAREST);
7721   END (ctanh_tonearest, complex);
7722 }
7723
7724
7725 static const struct test_c_c_data ctanh_towardzero_test_data[] =
7726   {
7727     START_DATA (ctanh_towardzero),
7728     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7729
7730 #ifndef TEST_FLOAT
7731     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7732 #endif
7733
7734 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7735     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7736 #endif
7737     END_DATA (ctanh_towardzero)
7738   };
7739
7740 static void
7741 ctanh_test_towardzero (void)
7742 {
7743   errno = 0;
7744   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7745   if (errno == ENOSYS)
7746     /* Function not implemented.  */
7747     return;
7748
7749   START (ctanh_towardzero);
7750   RUN_TEST_LOOP_c_c (ctanh, ctanh_towardzero_test_data, FE_TOWARDZERO);
7751   END (ctanh_towardzero, complex);
7752 }
7753
7754
7755 static const struct test_c_c_data ctanh_downward_test_data[] =
7756   {
7757     START_DATA (ctanh_downward),
7758     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7759
7760 #ifndef TEST_FLOAT
7761     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7762 #endif
7763
7764 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7765     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7766 #endif
7767     END_DATA (ctanh_downward)
7768   };
7769
7770 static void
7771 ctanh_test_downward (void)
7772 {
7773   errno = 0;
7774   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7775   if (errno == ENOSYS)
7776     /* Function not implemented.  */
7777     return;
7778
7779   START (ctanh_downward);
7780   RUN_TEST_LOOP_c_c (ctanh, ctanh_downward_test_data, FE_DOWNWARD);
7781   END (ctanh_downward, complex);
7782 }
7783
7784
7785 static const struct test_c_c_data ctanh_upward_test_data[] =
7786   {
7787     START_DATA (ctanh_upward),
7788     TEST_c_c (ctanh, 0x1p-149, 0x1.921fb6p+0, 7.334008549954377778731880988481078535821e-31L, -2.287733242885645987394874673945769518150e7L),
7789
7790 #ifndef TEST_FLOAT
7791     TEST_c_c (ctanh, 0x1p-1074, 0x1.921fb54442d18p+0, 1.317719414943508315995636961402669067843e-291L, 1.633123935319536975596773704152891653086e16L),
7792 #endif
7793
7794 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
7795     TEST_c_c (ctanh, 0x1p-16445L, 0x1.921fb54442d1846ap+0L, 5.793882568875674066286163141055208625180e-4912L, -3.986797629811710706723242948653362815645e19L),
7796 #endif
7797     END_DATA (ctanh_upward)
7798   };
7799
7800 static void
7801 ctanh_test_upward (void)
7802 {
7803   errno = 0;
7804   FUNC(ctanh) (BUILD_COMPLEX (0.7L, 1.2L));
7805   if (errno == ENOSYS)
7806     /* Function not implemented.  */
7807     return;
7808
7809   START (ctanh_upward);
7810   RUN_TEST_LOOP_c_c (ctanh, ctanh_upward_test_data, FE_UPWARD);
7811   END (ctanh_upward, complex);
7812 }
7813
7814
7815 static const struct test_f_f_data erf_test_data[] =
7816   {
7817     START_DATA (erf),
7818     TEST_f_f (erf, 0, 0),
7819     TEST_f_f (erf, minus_zero, minus_zero),
7820     TEST_f_f (erf, plus_infty, 1),
7821     TEST_f_f (erf, minus_infty, -1),
7822     TEST_f_f (erf, qnan_value, qnan_value),
7823
7824     TEST_f_f (erf, 0.125L, 0.140316204801333817393029446521623398L),
7825     TEST_f_f (erf, 0.75L, 0.711155633653515131598937834591410777L),
7826     TEST_f_f (erf, 1.25L, 0.922900128256458230136523481197281140L),
7827     TEST_f_f (erf, 2.0L, 0.995322265018952734162069256367252929L),
7828     TEST_f_f (erf, 4.125L, 0.999999994576599200434933994687765914L),
7829     TEST_f_f (erf, 27.0L, 1.0L),
7830     END_DATA (erf)
7831   };
7832
7833 static void
7834 erf_test (void)
7835 {
7836   errno = 0;
7837   FUNC(erf) (0);
7838   if (errno == ENOSYS)
7839     /* Function not implemented.  */
7840     return;
7841
7842   START (erf);
7843   RUN_TEST_LOOP_f_f (erf, erf_test_data, );
7844   END (erf);
7845 }
7846
7847
7848 static const struct test_f_f_data erfc_test_data[] =
7849   {
7850     START_DATA (erfc),
7851     TEST_f_f (erfc, plus_infty, 0.0),
7852     TEST_f_f (erfc, minus_infty, 2.0),
7853     TEST_f_f (erfc, 0.0, 1.0),
7854     TEST_f_f (erfc, minus_zero, 1.0),
7855     TEST_f_f (erfc, qnan_value, qnan_value),
7856
7857     TEST_f_f (erfc, 0.125L, 0.859683795198666182606970553478376602L),
7858     TEST_f_f (erfc, 0.75L, 0.288844366346484868401062165408589223L),
7859     TEST_f_f (erfc, 1.25L, 0.0770998717435417698634765188027188596L),
7860     TEST_f_f (erfc, 2.0L, 0.00467773498104726583793074363274707139L),
7861     TEST_f_f (erfc, 0x1.f7303cp+1L, 2.705500297238986897105236321218861842255e-8L),
7862     TEST_f_f (erfc, 4.125L, 0.542340079956506600531223408575531062e-8L),
7863     TEST_f_f (erfc, 0x1.ffa002p+2L, 1.233585992097580296336099501489175967033e-29L),
7864     TEST_f_f (erfc, 0x1.ffffc8p+2L, 1.122671365033056305522366683719541099329e-29L),
7865 #ifdef TEST_LDOUBLE
7866     /* The result can only be represented in long double.  */
7867 # if LDBL_MIN_10_EXP < -319
7868     TEST_f_f (erfc, 27.0L, 0.523704892378925568501606768284954709e-318L),
7869 # endif
7870 # if LDBL_MANT_DIG >= 106
7871     TEST_f_f (erfc, 0x1.ffff56789abcdef0123456789a8p+2L, 1.123161416304655390092138725253789378459e-29L),
7872 # endif
7873 #endif
7874     END_DATA (erfc)
7875   };
7876
7877 static void
7878 erfc_test (void)
7879 {
7880   errno = 0;
7881   FUNC(erfc) (0);
7882   if (errno == ENOSYS)
7883     /* Function not implemented.  */
7884     return;
7885
7886   START (erfc);
7887   RUN_TEST_LOOP_f_f (erfc, erfc_test_data, );
7888   END (erfc);
7889 }
7890
7891
7892 static const struct test_f_f_data exp_test_data[] =
7893   {
7894     START_DATA (exp),
7895     TEST_f_f (exp, 0, 1),
7896     TEST_f_f (exp, minus_zero, 1),
7897
7898 #ifndef TEST_INLINE
7899     TEST_f_f (exp, plus_infty, plus_infty),
7900     TEST_f_f (exp, minus_infty, 0),
7901 #endif
7902     TEST_f_f (exp, qnan_value, qnan_value),
7903     TEST_f_f (exp, 1, M_El),
7904
7905     TEST_f_f (exp, 2, M_E2l),
7906     TEST_f_f (exp, 3, M_E3l),
7907     TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L),
7908     TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L),
7909     TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L),
7910 #ifndef TEST_FLOAT
7911     TEST_f_f (exp, 709.75L, 1.739836873264160557698252711673830393864768e+308L),
7912 #endif
7913 #if defined TEST_LDOUBLE && __LDBL_MAX_EXP__ > 1024
7914     /* The result can only be represented in sane long double.  */
7915     TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L),
7916 #endif
7917
7918 #if !(defined TEST_LDOUBLE && LDBL_MAX_EXP > 1024)
7919     TEST_f_f (exp, 710, plus_infty, OVERFLOW_EXCEPTION),
7920     TEST_f_f (exp, -1234, plus_zero, UNDERFLOW_EXCEPTION),
7921 #endif
7922     TEST_f_f (exp, 1e5, plus_infty, OVERFLOW_EXCEPTION),
7923     TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION),
7924     TEST_f_f (exp, -max_value, 0, UNDERFLOW_EXCEPTION),
7925     END_DATA (exp)
7926   };
7927
7928 static void
7929 exp_test (void)
7930 {
7931   errno = 0;
7932   FUNC(exp) (0);
7933   if (errno == ENOSYS)
7934     /* Function not implemented.  */
7935     return;
7936
7937   START (exp);
7938   RUN_TEST_LOOP_f_f (exp, exp_test_data, );
7939   END (exp);
7940 }
7941
7942
7943 static const struct test_f_f_data exp_tonearest_test_data[] =
7944   {
7945     START_DATA (exp_tonearest),
7946     TEST_f_f (exp, 1, M_El),
7947     TEST_f_f (exp, 2, M_E2l),
7948     TEST_f_f (exp, 3, M_E3l),
7949     END_DATA (exp_tonearest)
7950   };
7951
7952 static void
7953 exp_test_tonearest (void)
7954 {
7955   errno = 0;
7956   FUNC(exp) (0);
7957   if (errno == ENOSYS)
7958     /* Function not implemented.  */
7959     return;
7960
7961   START (exp_tonearest);
7962   RUN_TEST_LOOP_f_f (exp, exp_tonearest_test_data, FE_TONEAREST);
7963   END (exp_tonearest);
7964 }
7965
7966
7967 static const struct test_f_f_data exp_towardzero_test_data[] =
7968   {
7969     START_DATA (exp_towardzero),
7970     TEST_f_f (exp, 1, M_El),
7971     TEST_f_f (exp, 2, M_E2l),
7972     TEST_f_f (exp, 3, M_E3l),
7973     END_DATA (exp_towardzero)
7974   };
7975
7976 static void
7977 exp_test_towardzero (void)
7978 {
7979   errno = 0;
7980   FUNC(exp) (0);
7981   if (errno == ENOSYS)
7982     /* Function not implemented.  */
7983     return;
7984
7985   START (exp_towardzero);
7986   RUN_TEST_LOOP_f_f (exp, exp_towardzero_test_data, FE_TOWARDZERO);
7987   END (exp_towardzero);
7988 }
7989
7990
7991 static const struct test_f_f_data exp_downward_test_data[] =
7992   {
7993     START_DATA (exp_downward),
7994     TEST_f_f (exp, 1, M_El),
7995     TEST_f_f (exp, 2, M_E2l),
7996     TEST_f_f (exp, 3, M_E3l),
7997     END_DATA (exp_downward)
7998   };
7999
8000 static void
8001 exp_test_downward (void)
8002 {
8003   errno = 0;
8004   FUNC(exp) (0);
8005   if (errno == ENOSYS)
8006     /* Function not implemented.  */
8007     return;
8008
8009   START (exp_downward);
8010   RUN_TEST_LOOP_f_f (exp, exp_downward_test_data, FE_DOWNWARD);
8011   END (exp_downward);
8012 }
8013
8014
8015 static const struct test_f_f_data exp_upward_test_data[] =
8016   {
8017     START_DATA (exp_upward),
8018     TEST_f_f (exp, 1, M_El),
8019     TEST_f_f (exp, 2, M_E2l),
8020     TEST_f_f (exp, 3, M_E3l),
8021     END_DATA (exp_upward)
8022   };
8023
8024 static void
8025 exp_test_upward (void)
8026 {
8027   errno = 0;
8028   FUNC(exp) (0);
8029   if (errno == ENOSYS)
8030     /* Function not implemented.  */
8031     return;
8032
8033   START (exp_upward);
8034   RUN_TEST_LOOP_f_f (exp, exp_upward_test_data, FE_UPWARD);
8035   END (exp_upward);
8036 }
8037
8038
8039 static const struct test_f_f_data exp10_test_data[] =
8040   {
8041     START_DATA (exp10),
8042     TEST_f_f (exp10, 0, 1),
8043     TEST_f_f (exp10, minus_zero, 1),
8044
8045     TEST_f_f (exp10, plus_infty, plus_infty),
8046     TEST_f_f (exp10, minus_infty, 0),
8047     TEST_f_f (exp10, qnan_value, qnan_value),
8048     TEST_f_f (exp10, 3, 1000),
8049     TEST_f_f (exp10, -1, 0.1L),
8050     TEST_f_f (exp10, 36, 1.0e36L),
8051     TEST_f_f (exp10, -36, 1.0e-36L),
8052 #ifndef TEST_FLOAT
8053     TEST_f_f (exp10, 305, 1.0e305L),
8054     TEST_f_f (exp10, -305, 1.0e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
8055 #endif
8056 #if defined TEST_LDOUBLE && LDBL_MAX_10_EXP >= 4932
8057     TEST_f_f (exp10, 4932, 1.0e4932L),
8058     TEST_f_f (exp10, -4932, 1.0e-4932L, UNDERFLOW_EXCEPTION),
8059 #endif
8060     TEST_f_f (exp10, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8061     TEST_f_f (exp10, -1e6, 0, UNDERFLOW_EXCEPTION),
8062     TEST_f_f (exp10, max_value, plus_infty, OVERFLOW_EXCEPTION),
8063     TEST_f_f (exp10, -max_value, 0, UNDERFLOW_EXCEPTION),
8064     TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L),
8065     END_DATA (exp10)
8066   };
8067
8068 static void
8069 exp10_test (void)
8070 {
8071   errno = 0;
8072   FUNC(exp10) (0);
8073   if (errno == ENOSYS)
8074     /* Function not implemented.  */
8075     return;
8076
8077   START (exp10);
8078   RUN_TEST_LOOP_f_f (exp10, exp10_test_data, );
8079   END (exp10);
8080 }
8081
8082
8083 static const struct test_f_f_data exp2_test_data[] =
8084   {
8085     START_DATA (exp2),
8086     TEST_f_f (exp2, 0, 1),
8087     TEST_f_f (exp2, minus_zero, 1),
8088     TEST_f_f (exp2, plus_infty, plus_infty),
8089     TEST_f_f (exp2, minus_infty, 0),
8090     TEST_f_f (exp2, qnan_value, qnan_value),
8091
8092     TEST_f_f (exp2, 10, 1024),
8093     TEST_f_f (exp2, -1, 0.5),
8094     TEST_f_f (exp2, 1e6, plus_infty, OVERFLOW_EXCEPTION),
8095     TEST_f_f (exp2, -1e6, 0, UNDERFLOW_EXCEPTION),
8096     TEST_f_f (exp2, max_value, plus_infty, OVERFLOW_EXCEPTION),
8097     TEST_f_f (exp2, -max_value, 0, UNDERFLOW_EXCEPTION),
8098     TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L),
8099
8100     TEST_f_f (exp2, 100.5, 1.792728671193156477399422023278661496394e+30L),
8101     TEST_f_f (exp2, 127, 0x1p127),
8102     TEST_f_f (exp2, -149, 0x1p-149),
8103
8104 #ifndef TEST_FLOAT
8105     TEST_f_f (exp2, 1000.25, 1.274245659452564874772384918171765416737e+301L),
8106     TEST_f_f (exp2, 1023, 0x1p1023),
8107     TEST_f_f (exp2, -1074, 0x1p-1074),
8108 #endif
8109
8110 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8111     TEST_f_f (exp2, 16383, 0x1p16383L),
8112     TEST_f_f (exp2, -16400, 0x1p-16400L),
8113 #endif
8114     END_DATA (exp2)
8115   };
8116
8117 static void
8118 exp2_test (void)
8119 {
8120   errno = 0;
8121   FUNC(exp2) (0);
8122   if (errno == ENOSYS)
8123     /* Function not implemented.  */
8124     return;
8125
8126   START (exp2);
8127   RUN_TEST_LOOP_f_f (exp2, exp2_test_data, );
8128   END (exp2);
8129 }
8130
8131
8132 static const struct test_f_f_data expm1_test_data[] =
8133   {
8134     START_DATA (expm1),
8135     TEST_f_f (expm1, 0, 0),
8136     TEST_f_f (expm1, minus_zero, minus_zero),
8137
8138 #ifndef TEST_INLINE
8139     TEST_f_f (expm1, plus_infty, plus_infty),
8140     TEST_f_f (expm1, minus_infty, -1),
8141 #endif
8142     TEST_f_f (expm1, qnan_value, qnan_value),
8143
8144     TEST_f_f (expm1, 1, M_El - 1.0),
8145     TEST_f_f (expm1, 0.75L, 1.11700001661267466854536981983709561L),
8146
8147     TEST_f_f (expm1, 50.0L, 5.1847055285870724640864533229334853848275e+21L),
8148
8149 #ifndef TEST_FLOAT
8150     TEST_f_f (expm1, 127.0L, 1.4302079958348104463583671072905261080748e+55L),
8151     TEST_f_f (expm1, 500.0L, 1.4035922178528374107397703328409120821806e+217L),
8152 #endif
8153
8154 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
8155     TEST_f_f (expm1, 11356.25L, 9.05128237311923300051376115753226014206e+4931L),
8156 #endif
8157
8158     TEST_f_f (expm1, -10.0, -0.9999546000702375151484644084844394493898L),
8159     TEST_f_f (expm1, -16.0, -0.9999998874648252807408854862248209398728L),
8160     TEST_f_f (expm1, -17.0, -0.9999999586006228121483334034897228104472L),
8161     TEST_f_f (expm1, -18.0, -0.9999999847700202552873715638633707664826L),
8162     TEST_f_f (expm1, -36.0, -0.9999999999999997680477169756430611687736L),
8163     TEST_f_f (expm1, -37.0, -0.9999999999999999146695237425593420572195L),
8164     TEST_f_f (expm1, -38.0, -0.9999999999999999686086720795197037129104L),
8165     TEST_f_f (expm1, -44.0, -0.9999999999999999999221886775886620348429L),
8166     TEST_f_f (expm1, -45.0, -0.9999999999999999999713748141945060635553L),
8167     TEST_f_f (expm1, -46.0, -0.9999999999999999999894693826424461876212L),
8168     TEST_f_f (expm1, -73.0, -0.9999999999999999999999999999999802074012L),
8169     TEST_f_f (expm1, -74.0, -0.9999999999999999999999999999999927187098L),
8170     TEST_f_f (expm1, -75.0, -0.9999999999999999999999999999999973213630L),
8171     TEST_f_f (expm1, -78.0, -0.9999999999999999999999999999999998666385L),
8172     TEST_f_f (expm1, -79.0, -0.9999999999999999999999999999999999509391L),
8173     TEST_f_f (expm1, -80.0, -0.9999999999999999999999999999999999819515L),
8174     TEST_f_f (expm1, -100.0, -1.0),
8175     TEST_f_f (expm1, -1000.0, -1.0),
8176     TEST_f_f (expm1, -10000.0, -1.0),
8177     TEST_f_f (expm1, -100000.0, -1.0),
8178
8179     TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
8180     TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION),
8181     TEST_f_f (expm1, -max_value, -1),
8182     END_DATA (expm1)
8183   };
8184
8185 static void
8186 expm1_test (void)
8187 {
8188   errno = 0;
8189   FUNC(expm1) (0);
8190   if (errno == ENOSYS)
8191     /* Function not implemented.  */
8192     return;
8193
8194   START (expm1);
8195   RUN_TEST_LOOP_f_f (expm1, expm1_test_data, );
8196   END (expm1);
8197 }
8198
8199
8200 static const struct test_f_f_data fabs_test_data[] =
8201   {
8202     START_DATA (fabs),
8203     TEST_f_f (fabs, 0, 0),
8204     TEST_f_f (fabs, minus_zero, 0),
8205
8206     TEST_f_f (fabs, plus_infty, plus_infty),
8207     TEST_f_f (fabs, minus_infty, plus_infty),
8208     TEST_f_f (fabs, qnan_value, qnan_value),
8209
8210     TEST_f_f (fabs, 38.0, 38.0),
8211     TEST_f_f (fabs, -M_El, M_El),
8212     END_DATA (fabs)
8213   };
8214
8215 static void
8216 fabs_test (void)
8217 {
8218   START (fabs);
8219   RUN_TEST_LOOP_f_f (fabs, fabs_test_data, );
8220   END (fabs);
8221 }
8222
8223
8224 static const struct test_ff_f_data fdim_test_data[] =
8225   {
8226     START_DATA (fdim),
8227     TEST_ff_f (fdim, 0, 0, 0),
8228     TEST_ff_f (fdim, 9, 0, 9),
8229     TEST_ff_f (fdim, 0, 9, 0),
8230     TEST_ff_f (fdim, -9, 0, 0),
8231     TEST_ff_f (fdim, 0, -9, 9),
8232
8233     TEST_ff_f (fdim, plus_infty, 9, plus_infty),
8234     TEST_ff_f (fdim, plus_infty, -9, plus_infty),
8235     TEST_ff_f (fdim, minus_infty, 9, 0),
8236     TEST_ff_f (fdim, minus_infty, -9, 0),
8237     TEST_ff_f (fdim, 9, minus_infty, plus_infty),
8238     TEST_ff_f (fdim, -9, minus_infty, plus_infty),
8239     TEST_ff_f (fdim, 9, plus_infty, 0),
8240     TEST_ff_f (fdim, -9, plus_infty, 0),
8241
8242     TEST_ff_f (fdim, 0, qnan_value, qnan_value),
8243     TEST_ff_f (fdim, 9, qnan_value, qnan_value),
8244     TEST_ff_f (fdim, -9, qnan_value, qnan_value),
8245     TEST_ff_f (fdim, qnan_value, 9, qnan_value),
8246     TEST_ff_f (fdim, qnan_value, -9, qnan_value),
8247     TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value),
8248     TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value),
8249     TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value),
8250     TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value),
8251     TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value),
8252
8253     TEST_ff_f (fdim, plus_infty, plus_infty, 0),
8254     END_DATA (fdim)
8255   };
8256
8257 static void
8258 fdim_test (void)
8259 {
8260   START (fdim);
8261   RUN_TEST_LOOP_ff_f (fdim, fdim_test_data, );
8262   END (fdim);
8263 }
8264
8265
8266 static void
8267 finite_test (void)
8268 {
8269   START (finite);
8270
8271   TEST_f_b (finite, 0, 1);
8272   TEST_f_b (finite, minus_zero, 1);
8273   TEST_f_b (finite, 10, 1);
8274   TEST_f_b (finite, min_subnorm_value, 1);
8275   TEST_f_b (finite, plus_infty, 0);
8276   TEST_f_b (finite, minus_infty, 0);
8277   TEST_f_b (finite, qnan_value, 0);
8278
8279   END (finite);
8280 }
8281
8282
8283 static const struct test_f_f_data floor_test_data[] =
8284   {
8285     START_DATA (floor),
8286     TEST_f_f (floor, 0.0, 0.0),
8287     TEST_f_f (floor, minus_zero, minus_zero),
8288     TEST_f_f (floor, plus_infty, plus_infty),
8289     TEST_f_f (floor, minus_infty, minus_infty),
8290     TEST_f_f (floor, qnan_value, qnan_value),
8291
8292     TEST_f_f (floor, M_PIl, 3.0),
8293     TEST_f_f (floor, -M_PIl, -4.0),
8294
8295     TEST_f_f (floor, 0.1, 0.0),
8296     TEST_f_f (floor, 0.25, 0.0),
8297     TEST_f_f (floor, 0.625, 0.0),
8298     TEST_f_f (floor, -0.1, -1.0),
8299     TEST_f_f (floor, -0.25, -1.0),
8300     TEST_f_f (floor, -0.625, -1.0),
8301
8302 #ifdef TEST_LDOUBLE
8303     /* The result can only be represented in long double.  */
8304     TEST_f_f (floor, 4503599627370495.5L, 4503599627370495.0L),
8305     TEST_f_f (floor, 4503599627370496.25L, 4503599627370496.0L),
8306     TEST_f_f (floor, 4503599627370496.5L, 4503599627370496.0L),
8307     TEST_f_f (floor, 4503599627370496.75L, 4503599627370496.0L),
8308     TEST_f_f (floor, 4503599627370497.5L, 4503599627370497.0L),
8309 # if LDBL_MANT_DIG > 100
8310     TEST_f_f (floor, 4503599627370494.5000000000001L, 4503599627370494.0L),
8311     TEST_f_f (floor, 4503599627370495.5000000000001L, 4503599627370495.0L),
8312     TEST_f_f (floor, 4503599627370496.5000000000001L, 4503599627370496.0L),
8313 # endif
8314
8315     TEST_f_f (floor, -4503599627370495.5L, -4503599627370496.0L),
8316     TEST_f_f (floor, -4503599627370496.25L, -4503599627370497.0L),
8317     TEST_f_f (floor, -4503599627370496.5L, -4503599627370497.0L),
8318     TEST_f_f (floor, -4503599627370496.75L, -4503599627370497.0L),
8319     TEST_f_f (floor, -4503599627370497.5L, -4503599627370498.0L),
8320 # if LDBL_MANT_DIG > 100
8321     TEST_f_f (floor, -4503599627370494.5000000000001L, -4503599627370495.0L),
8322     TEST_f_f (floor, -4503599627370495.5000000000001L, -4503599627370496.0L),
8323     TEST_f_f (floor, -4503599627370496.5000000000001L, -4503599627370497.0L),
8324 # endif
8325
8326     TEST_f_f (floor, 9007199254740991.5L, 9007199254740991.0L),
8327     TEST_f_f (floor, 9007199254740992.25L, 9007199254740992.0L),
8328     TEST_f_f (floor, 9007199254740992.5L, 9007199254740992.0L),
8329     TEST_f_f (floor, 9007199254740992.75L, 9007199254740992.0L),
8330     TEST_f_f (floor, 9007199254740993.5L, 9007199254740993.0L),
8331
8332 # if LDBL_MANT_DIG > 100
8333     TEST_f_f (floor, 9007199254740991.0000000000001L, 9007199254740991.0L),
8334     TEST_f_f (floor, 9007199254740992.0000000000001L, 9007199254740992.0L),
8335     TEST_f_f (floor, 9007199254740993.0000000000001L, 9007199254740993.0L),
8336     TEST_f_f (floor, 9007199254740991.5000000000001L, 9007199254740991.0L),
8337     TEST_f_f (floor, 9007199254740992.5000000000001L, 9007199254740992.0L),
8338     TEST_f_f (floor, 9007199254740993.5000000000001L, 9007199254740993.0L),
8339 # endif
8340
8341     TEST_f_f (floor, -9007199254740991.5L, -9007199254740992.0L),
8342     TEST_f_f (floor, -9007199254740992.25L, -9007199254740993.0L),
8343     TEST_f_f (floor, -9007199254740992.5L, -9007199254740993.0L),
8344     TEST_f_f (floor, -9007199254740992.75L, -9007199254740993.0L),
8345     TEST_f_f (floor, -9007199254740993.5L, -9007199254740994.0L),
8346
8347 # if LDBL_MANT_DIG > 100
8348     TEST_f_f (floor, -9007199254740991.0000000000001L, -9007199254740992.0L),
8349     TEST_f_f (floor, -9007199254740992.0000000000001L, -9007199254740993.0L),
8350     TEST_f_f (floor, -9007199254740993.0000000000001L, -9007199254740994.0L),
8351     TEST_f_f (floor, -9007199254740991.5000000000001L, -9007199254740992.0L),
8352     TEST_f_f (floor, -9007199254740992.5000000000001L, -9007199254740993.0L),
8353     TEST_f_f (floor, -9007199254740993.5000000000001L, -9007199254740994.0L),
8354 # endif
8355
8356     TEST_f_f (floor, 72057594037927935.5L, 72057594037927935.0L),
8357     TEST_f_f (floor, 72057594037927936.25L, 72057594037927936.0L),
8358     TEST_f_f (floor, 72057594037927936.5L, 72057594037927936.0L),
8359     TEST_f_f (floor, 72057594037927936.75L, 72057594037927936.0L),
8360     TEST_f_f (floor, 72057594037927937.5L, 72057594037927937.0L),
8361
8362     TEST_f_f (floor, -72057594037927935.5L, -72057594037927936.0L),
8363     TEST_f_f (floor, -72057594037927936.25L, -72057594037927937.0L),
8364     TEST_f_f (floor, -72057594037927936.5L, -72057594037927937.0L),
8365     TEST_f_f (floor, -72057594037927936.75L, -72057594037927937.0L),
8366     TEST_f_f (floor, -72057594037927937.5L, -72057594037927938.0L),
8367
8368     TEST_f_f (floor, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
8369     TEST_f_f (floor, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
8370     TEST_f_f (floor, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
8371     TEST_f_f (floor, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
8372     TEST_f_f (floor, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
8373
8374     TEST_f_f (floor, 0xf.ffffffffffffff8p+47L, 0xf.fffffffffffep+47L),
8375     TEST_f_f (floor, -0x8.000000000000004p+48L, -0x8.000000000001p+48L),
8376 #endif
8377     END_DATA (floor)
8378   };
8379
8380 static void
8381 floor_test (void)
8382 {
8383   START (floor);
8384   RUN_TEST_LOOP_f_f (floor, floor_test_data, );
8385   END (floor);
8386 }
8387
8388
8389 static const struct test_fff_f_data fma_test_data[] =
8390   {
8391     START_DATA (fma),
8392     TEST_fff_f (fma, 1.0, 2.0, 3.0, 5.0),
8393     TEST_fff_f (fma, qnan_value, 2.0, 3.0, qnan_value),
8394     TEST_fff_f (fma, 1.0, qnan_value, 3.0, qnan_value),
8395     TEST_fff_f (fma, 1.0, 2.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8396     TEST_fff_f (fma, plus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8397     TEST_fff_f (fma, minus_infty, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8398     TEST_fff_f (fma, 0.0, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8399     TEST_fff_f (fma, 0.0, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
8400     TEST_fff_f (fma, plus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8401     TEST_fff_f (fma, minus_infty, 0.0, 1.0, qnan_value, INVALID_EXCEPTION),
8402     TEST_fff_f (fma, 0.0, plus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8403     TEST_fff_f (fma, 0.0, minus_infty, 1.0, qnan_value, INVALID_EXCEPTION),
8404
8405     TEST_fff_f (fma, plus_infty, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8406     TEST_fff_f (fma, minus_infty, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8407     TEST_fff_f (fma, plus_infty, minus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8408     TEST_fff_f (fma, minus_infty, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
8409     TEST_fff_f (fma, plus_infty, 3.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8410     TEST_fff_f (fma, minus_infty, -7.5L, minus_infty, qnan_value, INVALID_EXCEPTION),
8411     TEST_fff_f (fma, -13.5L, plus_infty, plus_infty, qnan_value, INVALID_EXCEPTION),
8412     TEST_fff_f (fma, minus_infty, 7.5L, plus_infty, qnan_value, INVALID_EXCEPTION),
8413
8414     TEST_fff_f (fma, 1.25L, 0.75L, 0.0625L, 1.0L),
8415
8416     TEST_fff_f (fma, -max_value, -max_value, minus_infty, minus_infty),
8417     TEST_fff_f (fma, max_value / 2, max_value / 2, minus_infty, minus_infty),
8418     TEST_fff_f (fma, -max_value, max_value, plus_infty, plus_infty),
8419     TEST_fff_f (fma, max_value / 2, -max_value / 4, plus_infty, plus_infty),
8420     TEST_fff_f (fma, plus_infty, 4, plus_infty, plus_infty),
8421     TEST_fff_f (fma, 2, minus_infty, minus_infty, minus_infty),
8422     TEST_fff_f (fma, minus_infty, minus_infty, plus_infty, plus_infty),
8423     TEST_fff_f (fma, plus_infty, minus_infty, minus_infty, minus_infty),
8424
8425     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8426     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8427     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8428     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8429     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8430     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8431     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8432     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8433     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8434     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8435     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8436     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8437     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8438     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8439     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8440     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8441     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8442     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8443     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8444     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8445     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8446     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8447     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8448     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8449
8450     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8451     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8452     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8453     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8454
8455     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8456     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8457     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8458     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8459     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8460     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8461     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8462     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8463
8464     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8465     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8466     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8467     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8468     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8469     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8470     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
8471     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
8472
8473 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8474     TEST_fff_f (fma, 0x1.7ff8p+13, 0x1.000002p+0, 0x1.ffffp-24, 0x1.7ff802p+13),
8475     TEST_fff_f (fma, 0x1.fffp+0, 0x1.00001p+0, -0x1.fffp+0, 0x1.fffp-20),
8476     TEST_fff_f (fma, 0x1.9abcdep+127, 0x0.9abcdep-126, -0x1.f08948p+0, 0x1.bb421p-25),
8477     TEST_fff_f (fma, 0x1.9abcdep+100, 0x0.9abcdep-126, -0x1.f08948p-27, 0x1.bb421p-52),
8478     TEST_fff_f (fma, 0x1.fffffep+127, 0x1.001p+0, -0x1.fffffep+127, 0x1.fffffep+115),
8479     TEST_fff_f (fma, -0x1.fffffep+127, 0x1.fffffep+0, 0x1.fffffep+127, -0x1.fffffap+127),
8480     TEST_fff_f (fma, 0x1.fffffep+127, 2.0, -0x1.fffffep+127, 0x1.fffffep+127),
8481     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8482     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8483     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8484     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8485     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8486     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8487     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
8488     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8489     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8490     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
8491     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8492     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8493     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8494     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8495     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8496     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8497     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8498     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8499     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8500     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8501     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8502     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8503     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8504     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8505     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8506     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8507     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8508     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8509     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8510     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
8511     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8512     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8513     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8514     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
8515     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8516     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8517 #endif
8518 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8519     TEST_fff_f (fma, 0x1.7fp+13, 0x1.0000000000001p+0, 0x1.ffep-48, 0x1.7f00000000001p+13),
8520     TEST_fff_f (fma, 0x1.fffp+0, 0x1.0000000000001p+0, -0x1.fffp+0, 0x1.fffp-52),
8521     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, 0x1p-300, 1.0),
8522     TEST_fff_f (fma, 0x1.0000002p+0, 0x1.ffffffcp-1, -0x1p-300, 0x1.fffffffffffffp-1),
8523     TEST_fff_f (fma, 0x1.deadbeef2feedp+1023, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp+1, 0x1.0989687bc9da4p-53),
8524     TEST_fff_f (fma, 0x1.deadbeef2feedp+900, 0x0.deadbeef2feedp-1022, -0x1.a05f8c01a4bfbp-122, 0x1.0989687bc9da4p-176),
8525     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 0x1.001p+0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1011),
8526     TEST_fff_f (fma, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+0, 0x1.fffffffffffffp+1023, -0x1.ffffffffffffdp+1023),
8527     TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 2.0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023),
8528     TEST_fff_f (fma, 0x1.6a09e667f3bccp-538, 0x1.6a09e667f3bccp-538, 0.0, 0.0, UNDERFLOW_EXCEPTION),
8529     TEST_fff_f (fma, 0x1.deadbeef2feedp-495, 0x1.deadbeef2feedp-495, -0x1.bf86a5786a574p-989, 0x0.0000042625a1fp-1022, UNDERFLOW_EXCEPTION),
8530     TEST_fff_f (fma, 0x1.deadbeef2feedp-503, 0x1.deadbeef2feedp-503, -0x1.bf86a5786a574p-1005, 0x0.0000000004262p-1022, UNDERFLOW_EXCEPTION),
8531     TEST_fff_f (fma, 0x1p-537, 0x1p-538, 0x1p-1074, 0x0.0000000000002p-1022, UNDERFLOW_EXCEPTION),
8532     TEST_fff_f (fma, 0x1.7fffff8p-968, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000001p-1022, UNDERFLOW_EXCEPTION),
8533     TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022, UNDERFLOW_EXCEPTION),
8534     TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022, UNDERFLOW_EXCEPTION),
8535     TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022, UNDERFLOW_EXCEPTION),
8536     TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION),
8537     TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022, UNDERFLOW_EXCEPTION),
8538     TEST_fff_f (fma, -0x1.fffffffffffffp-711, 0x1.fffffffffffffp-275, 0x1.fffffe00007ffp-983, 0x1.7ffffe00007ffp-983),
8539     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8540     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8541     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8542     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8543     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8544     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8545     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
8546     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8547     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8548     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
8549     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
8550     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8551     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8552     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8553     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8554     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8555     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8556     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8557     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8558     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8559     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8560     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8561     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8562     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8563     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8564     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8565     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8566     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8567     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8568     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8569     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8570     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8571     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8572     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
8573     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
8574     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8575 #endif
8576 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8577     TEST_fff_f (fma, -0x8.03fcp+3696L, 0xf.fffffffffffffffp-6140L, 0x8.3ffffffffffffffp-2450L, -0x8.01ecp-2440L),
8578     TEST_fff_f (fma, 0x9.fcp+2033L, -0x8.000e1f000ff800fp-3613L, -0xf.fffffffffffc0ffp-1579L, -0xd.fc119fb093ed092p-1577L),
8579     TEST_fff_f (fma, 0xc.7fc000003ffffffp-1194L, 0x8.1e0003fffffffffp+15327L, -0x8.fffep+14072L, 0xc.ae9f164020effffp+14136L),
8580     TEST_fff_f (fma, -0x8.0001fc000000003p+1798L, 0xcp-2230L, 0x8.f7e000000000007p-468L, -0xc.0002f9ffee10404p-429L),
8581     TEST_fff_f (fma, 0xc.0000000000007ffp+10130L, -0x8.000000000000001p+4430L, 0xc.07000000001ffffp+14513L, -0xb.fffffffffffd7e4p+14563L),
8582     TEST_fff_f (fma, 0xb.ffffp-4777L, 0x8.000000fffffffffp-11612L, -0x0.3800fff8p-16385L, 0x5.c7fe80c7ffeffffp-16385L, UNDERFLOW_EXCEPTION),
8583     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8584     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8585     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8586     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8587     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8588     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8589     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8590     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8591     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8592     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
8593     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
8594     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8595     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8596     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8597     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8598     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8599     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8600     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8601     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8602     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8603     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8604     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8605     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8606     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8607     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8608     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8609     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8610     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8611     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8612     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8613     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8614     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8615     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8616     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8617     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8618     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8619 #endif
8620 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8621     TEST_fff_f (fma, 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584L, -0x1.6b500daf0580d987f1bc0cadfcddp-13777L, 0x1.613cd91d9fed34b33820e5ab9d8dp-16378L, -0x1.3a79fb50eb9ce887cffa0f09bd9fp-16360L),
8622     TEST_fff_f (fma, -0x1.f949b880cacb0f0c61540105321dp-5954L, -0x1.3876cec84b4140f3bd6198731b7ep-10525L, -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382L, -0x0.a5dc1c6cfbc498c54fb0b5038abbp-16382L, UNDERFLOW_EXCEPTION),
8623     TEST_fff_f (fma, -0x1.0000fffffffffp-16221L, 0x1.0000001fffff8007fep-239L, 0x0.ff87ffffffffffffe000003fffffp-16382L, 0x0.ff87ffffffffffffdffc003bff7fp-16382L, UNDERFLOW_EXCEPTION),
8624     TEST_fff_f (fma, -0x1.ac79c9376ef447f3827c9e9de008p-2228L, -0x1.5ba830022b6139e21fbe7270cad8p-6314L, 0x1.e8282b6a26bb6a9daf5c8e73e9f9p-8616L, 0x1.22f14a0253878a730cd1aee373adp-8541L),
8625     TEST_fff_f (fma, -0x1.c69749ec574caaa2ab8e97ddb9f3p+2652L, 0x1.f34235ff9d095449c29b4831b62dp+3311L, 0x1.fbe4302df23354dbd0c4d3cfe606p+5879L, -0x1.bb473bfdfb7a6e18886ce6e57eafp+5964L),
8626     TEST_fff_f (fma, -0x1.ca8835fc6ecfb5398625fc891be5p-1686L, 0x1.621e1972bbe2180e5be9dd7d8df5p-7671L, -0x1.7d2d21b73b52cf20dec2a83902a4p-9395L, -0x1.3d2322191c9c88bc68a62ab8042cp-9356L),
8627     TEST_fff_f (fma, -0x1.55cff679ec49c2541fab41fc843ep-11819L, 0x1.e60e9f464f9e8df0509647c7c971p+12325L, 0x1.eaa2a7649d765c2f564f7a5beca7p+454L, -0x1.447e29fa7e406a285f4e350fcf86p+507L),
8628     TEST_fff_f (fma, 0x1.f0e7b1454908576f2537d863cf9bp+11432L, 0x1.cdce52f09d4ca76e68706f34b5d5p-1417L, -0x1.2e986187c70f146235ea2066e486p+9979L, 0x1.c030dad3cc5643f3dd0f5619f661p+10016L),
8629     TEST_fff_f (fma, 0x1.f102f7da4a57a3a4aab620e29452p-3098L, -0x1.cc06a4ff40248f9e2dcc4b6afd84p-11727L, 0x1.d512a11126b5ac8ed8973b8580c8p-14849L, -0x1.be8f1cf737ab4d1c31c54f5ec23bp-14824L),
8630     TEST_fff_f (fma, -0x1.fc47ac7434b993cd8dcb2b431f25p-3816L, 0x1.fbc9750da8468852d84558e1db6dp-5773L, -0x1.00a98abf783f75c40fe5b7a37d86p-9607L, -0x1.f81917b166f45e763cfcc057e2adp-9588L),
8631     TEST_fff_f (fma, 0x1.00000000000007ffffffffffffffp-9045L, -0x1.ffffffffffff80000001ffffffffp+4773L, -0x1.f8p-4316L, -0x1.00000000000f88000000fffffdffp-4271L),
8632     TEST_fff_f (fma, 0x1.4e922764c90701d4a2f21d01893dp-8683L, -0x1.955a12e2d7c9447c27fa022fc865p+212L, -0x1.e9634462eaef96528b90b6944578p-8521L, -0x1.08e1783184a371943d3598e10865p-8470L),
8633     TEST_fff_f (fma, 0x1.801181509c03bdbef10d6165588cp-15131L, 0x1.ad86f8e57d3d40bfa8007780af63p-368L, -0x1.6e9df0dab1c9f1d7a6043c390741p-15507L, 0x1.417c9b2b15e2ad57dc9e0e920844p-15498L),
8634     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8635     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8636     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8637     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8638     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8639     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8640     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
8641     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
8642     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8643     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
8644     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
8645     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8646     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8647     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8648     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8649     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8650     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8651     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8652     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8653     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8654     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8655     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8656     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8657     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8658     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8659     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8660     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8661     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8662     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8663     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8664     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8665     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8666     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8667     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8668     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8669     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8670 #endif
8671     END_DATA (fma)
8672   };
8673
8674 static void
8675 fma_test (void)
8676 {
8677   START (fma);
8678   RUN_TEST_LOOP_fff_f (fma, fma_test_data, );
8679   END (fma);
8680 }
8681
8682
8683 static const struct test_fff_f_data fma_towardzero_test_data[] =
8684   {
8685     START_DATA (fma_towardzero),
8686     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8687     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
8688     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
8689     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8690     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
8691     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8692     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8693     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
8694     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8695     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
8696     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
8697     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8698     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
8699     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8700     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8701     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
8702     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8703     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
8704     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
8705     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8706     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
8707     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8708     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8709     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
8710
8711     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
8712     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
8713     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
8714     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
8715
8716     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8717     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8718     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8719     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8720     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8721     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
8722     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8723     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8724
8725 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8726     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8727     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8728     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8729     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8730     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
8731     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
8732     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8733     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8734 #endif
8735
8736 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8737     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8738     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8739     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8740     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8741     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8742     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8743     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8744     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8745     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8746     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8747     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
8748     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
8749     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8750     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8751     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8752     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
8753     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8754     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8755     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8756     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8757     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8758     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8759     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
8760     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8761     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8762     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8763     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8764     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8765     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8766     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8767     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
8768     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
8769     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8770     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8771     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
8772     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
8773 #endif
8774 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8775     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8776     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8777     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8778     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8779     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8780     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8781     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8782     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8783     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
8784     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
8785     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
8786     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
8787     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
8788     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8789     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8790     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
8791     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8792     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8793     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
8794     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8795     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
8796     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
8797     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
8798     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
8799     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8800     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8801     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
8802     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
8803     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
8804     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
8805     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
8806     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
8807     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
8808     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
8809     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
8810     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
8811 #endif
8812 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
8813     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8814     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
8815     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8816     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8817     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8818     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8819     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8820     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8821     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
8822     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8823     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8824     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
8825     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
8826     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8827     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8828     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
8829     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8830     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8831     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
8832     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8833     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
8834     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
8835     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
8836     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
8837     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8838     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8839     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
8840     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
8841     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
8842     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
8843     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
8844     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
8845     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
8846     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
8847     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
8848     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
8849 #endif
8850 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
8851     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8852     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
8853     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8854     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8855     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8856     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8857     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8858     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8859     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
8860     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8861     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8862     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
8863     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
8864     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8865     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8866     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
8867     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8868     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8869     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
8870     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
8871     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
8872     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
8873     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
8874     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
8875     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8876     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8877     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
8878     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
8879     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
8880     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
8881     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
8882     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
8883     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
8884     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
8885     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
8886     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
8887 #endif
8888     END_DATA (fma_towardzero)
8889   };
8890
8891 static void
8892 fma_test_towardzero (void)
8893 {
8894   START (fma_towardzero);
8895   RUN_TEST_LOOP_fff_f (fma, fma_towardzero_test_data, FE_TOWARDZERO);
8896   END (fma_towardzero);
8897 }
8898
8899
8900 static const struct test_fff_f_data fma_downward_test_data[] =
8901   {
8902     START_DATA (fma_downward),
8903     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
8904     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, minus_zero),
8905     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, minus_zero),
8906     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
8907     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, minus_zero),
8908     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
8909     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
8910     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, minus_zero),
8911     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
8912     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, minus_zero),
8913     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, minus_zero),
8914     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
8915     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, minus_zero),
8916     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
8917     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
8918     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, minus_zero),
8919     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
8920     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, minus_zero),
8921     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, minus_zero),
8922     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
8923     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, minus_zero),
8924     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
8925     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
8926     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, minus_zero),
8927
8928     TEST_fff_f (fma, 1.0, 1.0, -1.0, minus_zero),
8929     TEST_fff_f (fma, 1.0, -1.0, 1.0, minus_zero),
8930     TEST_fff_f (fma, -1.0, 1.0, 1.0, minus_zero),
8931     TEST_fff_f (fma, -1.0, -1.0, -1.0, minus_zero),
8932
8933     TEST_fff_f (fma, min_value, min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8934     TEST_fff_f (fma, min_value, min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8935     TEST_fff_f (fma, min_value, -min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8936     TEST_fff_f (fma, min_value, -min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8937     TEST_fff_f (fma, -min_value, min_value, plus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8938     TEST_fff_f (fma, -min_value, min_value, minus_zero, -min_subnorm_value, UNDERFLOW_EXCEPTION),
8939     TEST_fff_f (fma, -min_value, -min_value, plus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8940     TEST_fff_f (fma, -min_value, -min_value, minus_zero, plus_zero, UNDERFLOW_EXCEPTION),
8941
8942 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
8943     TEST_fff_f (fma, max_value, max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8944     TEST_fff_f (fma, max_value, max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8945     TEST_fff_f (fma, max_value, -max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8946     TEST_fff_f (fma, max_value, -max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8947     TEST_fff_f (fma, -max_value, max_value, min_value, minus_infty, OVERFLOW_EXCEPTION),
8948     TEST_fff_f (fma, -max_value, max_value, -min_value, minus_infty, OVERFLOW_EXCEPTION),
8949     TEST_fff_f (fma, -max_value, -max_value, min_value, max_value, OVERFLOW_EXCEPTION),
8950     TEST_fff_f (fma, -max_value, -max_value, -min_value, max_value, OVERFLOW_EXCEPTION),
8951 #endif
8952
8953 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
8954     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00004p-127, UNDERFLOW_EXCEPTION),
8955     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00008p-127, UNDERFLOW_EXCEPTION),
8956     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8957     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8958     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8959     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8960     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8961     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8962     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1p127),
8963     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x0.ffffffp127),
8964     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x1p127),
8965     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1.000002p127),
8966     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1p-126),
8967     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8968     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8969     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1.000002p-126),
8970     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8971     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
8972     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
8973     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x1p-126, UNDERFLOW_EXCEPTION),
8974     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
8975     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, plus_zero, UNDERFLOW_EXCEPTION),
8976     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
8977     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-148, UNDERFLOW_EXCEPTION),
8978     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
8979     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
8980     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
8981     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
8982     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1p127),
8983     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x0.ffffffp127),
8984     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x1p127),
8985     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1.000002p127),
8986     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1p103),
8987     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x0.ffffffp103),
8988     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x1p103),
8989     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1.000002p103),
8990 #endif
8991 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
8992     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
8993     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
8994     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8995     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
8996     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8997     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
8998     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
8999     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9000     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1p1023),
9001     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x0.fffffffffffff8p1023),
9002     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x1p1023),
9003     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1.0000000000001p1023),
9004     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1p-1022),
9005     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9006     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9007     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1.0000000000001p-1022),
9008     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9009     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9010     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9011     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x1p-1022, UNDERFLOW_EXCEPTION),
9012     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9013     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, plus_zero, UNDERFLOW_EXCEPTION),
9014     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9015     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1073, UNDERFLOW_EXCEPTION),
9016     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9017     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9018     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9019     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9020     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9021     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x0.fffffffffffff8p1023),
9022     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9023     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1.0000000000001p1023),
9024     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1p970),
9025     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x0.fffffffffffff8p970),
9026     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x1p970),
9027     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1.0000000000001p970),
9028 #endif
9029 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9030     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9031     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9032     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9033     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9034     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9035     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9036     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9037     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9038     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1p16383L),
9039     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
9040     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x1p16383L),
9041     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1.0000000000000002p16383L),
9042     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1p-16382L),
9043     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9044     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9045     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1.0000000000000002p-16382L),
9046     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9047     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9048     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9049     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9050     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9051     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, plus_zero, UNDERFLOW_EXCEPTION),
9052     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9053     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16444L, UNDERFLOW_EXCEPTION),
9054     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9055     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9056     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9057     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9058     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9059     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x0.ffffffffffffffffp16383L),
9060     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9061     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1.0000000000000002p16383L),
9062     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9063     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x0.ffffffffffffffffp16319L),
9064     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9065     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1.0000000000000002p16319L),
9066 #endif
9067 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9068     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9069     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9070     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9071     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9072     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9073     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9074     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9075     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9076     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1p16383L),
9077     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9078     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x1p16383L),
9079     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9080     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1p-16382L),
9081     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9082     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9083     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1.0000000000000000000000000001p-16382L),
9084     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9085     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9086     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9087     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x1p-16382L, UNDERFLOW_EXCEPTION),
9088     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9089     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, plus_zero, UNDERFLOW_EXCEPTION),
9090     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9091     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16493L, UNDERFLOW_EXCEPTION),
9092     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9093     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9094     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9095     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9096     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9097     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x0.ffffffffffffffffffffffffffff8p16383L),
9098     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9099     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1.0000000000000000000000000001p16383L),
9100     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9101     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x0.ffffffffffffffffffffffffffff8p16319L),
9102     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9103     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1.0000000000000000000000000001p16319L),
9104 #endif
9105     END_DATA (fma_downward)
9106   };
9107
9108 static void
9109 fma_test_downward (void)
9110 {
9111   START (fma_downward);
9112   RUN_TEST_LOOP_fff_f (fma, fma_downward_test_data, FE_DOWNWARD);
9113   END (fma_downward);
9114 }
9115
9116
9117 static const struct test_fff_f_data fma_upward_test_data[] =
9118   {
9119     START_DATA (fma_upward),
9120     TEST_fff_f (fma, plus_zero, plus_zero, plus_zero, plus_zero),
9121     TEST_fff_f (fma, plus_zero, plus_zero, minus_zero, plus_zero),
9122     TEST_fff_f (fma, plus_zero, minus_zero, plus_zero, plus_zero),
9123     TEST_fff_f (fma, plus_zero, minus_zero, minus_zero, minus_zero),
9124     TEST_fff_f (fma, minus_zero, plus_zero, plus_zero, plus_zero),
9125     TEST_fff_f (fma, minus_zero, plus_zero, minus_zero, minus_zero),
9126     TEST_fff_f (fma, minus_zero, minus_zero, plus_zero, plus_zero),
9127     TEST_fff_f (fma, minus_zero, minus_zero, minus_zero, plus_zero),
9128     TEST_fff_f (fma, 1.0, plus_zero, plus_zero, plus_zero),
9129     TEST_fff_f (fma, 1.0, plus_zero, minus_zero, plus_zero),
9130     TEST_fff_f (fma, 1.0, minus_zero, plus_zero, plus_zero),
9131     TEST_fff_f (fma, 1.0, minus_zero, minus_zero, minus_zero),
9132     TEST_fff_f (fma, -1.0, plus_zero, plus_zero, plus_zero),
9133     TEST_fff_f (fma, -1.0, plus_zero, minus_zero, minus_zero),
9134     TEST_fff_f (fma, -1.0, minus_zero, plus_zero, plus_zero),
9135     TEST_fff_f (fma, -1.0, minus_zero, minus_zero, plus_zero),
9136     TEST_fff_f (fma, plus_zero, 1.0, plus_zero, plus_zero),
9137     TEST_fff_f (fma, plus_zero, 1.0, minus_zero, plus_zero),
9138     TEST_fff_f (fma, plus_zero, -1.0, plus_zero, plus_zero),
9139     TEST_fff_f (fma, plus_zero, -1.0, minus_zero, minus_zero),
9140     TEST_fff_f (fma, minus_zero, 1.0, plus_zero, plus_zero),
9141     TEST_fff_f (fma, minus_zero, 1.0, minus_zero, minus_zero),
9142     TEST_fff_f (fma, minus_zero, -1.0, plus_zero, plus_zero),
9143     TEST_fff_f (fma, minus_zero, -1.0, minus_zero, plus_zero),
9144
9145     TEST_fff_f (fma, 1.0, 1.0, -1.0, plus_zero),
9146     TEST_fff_f (fma, 1.0, -1.0, 1.0, plus_zero),
9147     TEST_fff_f (fma, -1.0, 1.0, 1.0, plus_zero),
9148     TEST_fff_f (fma, -1.0, -1.0, -1.0, plus_zero),
9149
9150     TEST_fff_f (fma, min_value, min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9151     TEST_fff_f (fma, min_value, min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9152     TEST_fff_f (fma, min_value, -min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9153     TEST_fff_f (fma, min_value, -min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9154     TEST_fff_f (fma, -min_value, min_value, plus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9155     TEST_fff_f (fma, -min_value, min_value, minus_zero, minus_zero, UNDERFLOW_EXCEPTION),
9156     TEST_fff_f (fma, -min_value, -min_value, plus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9157     TEST_fff_f (fma, -min_value, -min_value, minus_zero, min_subnorm_value, UNDERFLOW_EXCEPTION),
9158
9159 #if !(defined TEST_LDOUBLE && LDBL_MANT_DIG == 106) /* Bug 13304.  */
9160     TEST_fff_f (fma, max_value, max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9161     TEST_fff_f (fma, max_value, max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9162     TEST_fff_f (fma, max_value, -max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9163     TEST_fff_f (fma, max_value, -max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9164     TEST_fff_f (fma, -max_value, max_value, min_value, -max_value, OVERFLOW_EXCEPTION),
9165     TEST_fff_f (fma, -max_value, max_value, -min_value, -max_value, OVERFLOW_EXCEPTION),
9166     TEST_fff_f (fma, -max_value, -max_value, min_value, plus_infty, OVERFLOW_EXCEPTION),
9167     TEST_fff_f (fma, -max_value, -max_value, -min_value, plus_infty, OVERFLOW_EXCEPTION),
9168 #endif
9169
9170 #if defined (TEST_FLOAT) && FLT_MANT_DIG == 24
9171     TEST_fff_f (fma, 0x1.4p-126, 0x1.000004p-1, 0x1p-128, 0x1.c00008p-127, UNDERFLOW_EXCEPTION),
9172     TEST_fff_f (fma, -0x1.4p-126, 0x1.000004p-1, -0x1p-128, -0x1.c00004p-127, UNDERFLOW_EXCEPTION),
9173     TEST_fff_f (fma, 0x1.fffff8p-126, 0x1.000002p-1, 0x1p-149, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9174     TEST_fff_f (fma, -0x1.fffff8p-126, 0x1.000002p-1, -0x1p-149, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9175     TEST_fff_f (fma, 0x1p-149, 0x1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9176     TEST_fff_f (fma, -0x1p-149, 0x1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9177     TEST_fff_f (fma, 0x1p-149, 0x1.1p-1, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9178     TEST_fff_f (fma, -0x1p-149, 0x1.1p-1, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9179     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p127, 0x1.000002p127),
9180     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p127, 0x1p127),
9181     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p127, -0x0.ffffffp127),
9182     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p127, -0x1p127),
9183     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-126, 0x1.000002p-126),
9184     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-126, 0x1p-126, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9185     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9186     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-126, -0x1p-126),
9187     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x0.fffffep-126, 0x1p-126, UNDERFLOW_EXCEPTION),
9188     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x0.fffffep-126, 0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9189     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x0.fffffep-126, -0x0.fffffcp-126, UNDERFLOW_EXCEPTION),
9190     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x0.fffffep-126, -0x0.fffffep-126, UNDERFLOW_EXCEPTION),
9191     TEST_fff_f (fma, 0x1p-149, 0x1p-149, 0x1p-149, 0x1p-148, UNDERFLOW_EXCEPTION),
9192     TEST_fff_f (fma, 0x1p-149, -0x1p-149, 0x1p-149, 0x1p-149, UNDERFLOW_EXCEPTION),
9193     TEST_fff_f (fma, 0x1p-149, 0x1p-149, -0x1p-149, minus_zero, UNDERFLOW_EXCEPTION),
9194     TEST_fff_f (fma, 0x1p-149, -0x1p-149, -0x1p-149, -0x1p-149, UNDERFLOW_EXCEPTION),
9195     TEST_fff_f (fma, 0x0.fffp0, 0x0.fffp0, -0x0.ffep0, 0x1p-24),
9196     TEST_fff_f (fma, 0x0.fffp0, -0x0.fffp0, 0x0.ffep0, -0x1p-24),
9197     TEST_fff_f (fma, -0x0.fffp0, 0x0.fffp0, 0x0.ffep0, -0x1p-24),
9198     TEST_fff_f (fma, -0x0.fffp0, -0x0.fffp0, -0x0.ffep0, 0x1p-24),
9199     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p127, 0x1.000002p127),
9200     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p127, 0x1p127),
9201     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p127, -0x0.ffffffp127),
9202     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p127, -0x1p127),
9203     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, 0x1p103, 0x1.000002p103),
9204     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, 0x1p103, 0x1p103),
9205     TEST_fff_f (fma, 0x1.000002p-126, 0x1.000002p-26, -0x1p103, -0x0.ffffffp103),
9206     TEST_fff_f (fma, 0x1.000002p-126, -0x1.000002p-26, -0x1p103, -0x1p103),
9207 #endif
9208 #if defined (TEST_DOUBLE) && DBL_MANT_DIG == 53
9209     TEST_fff_f (fma, 0x1.4p-1022, 0x1.0000000000002p-1, 0x1p-1024, 0x1.c000000000004p-1023, UNDERFLOW_EXCEPTION),
9210     TEST_fff_f (fma, -0x1.4p-1022, 0x1.0000000000002p-1, -0x1p-1024, -0x1.c000000000002p-1023, UNDERFLOW_EXCEPTION),
9211     TEST_fff_f (fma, 0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, 0x1p-1074, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9212     TEST_fff_f (fma, -0x1.ffffffffffffcp-1022, 0x1.0000000000001p-1, -0x1p-1074, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9213     TEST_fff_f (fma, 0x1p-1074, 0x1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9214     TEST_fff_f (fma, -0x1p-1074, 0x1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9215     TEST_fff_f (fma, 0x1p-1074, 0x1.1p-1, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9216     TEST_fff_f (fma, -0x1p-1074, 0x1.1p-1, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9217     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p1023, 0x1.0000000000001p1023),
9218     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p1023, 0x1p1023),
9219     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p1023, -0x0.fffffffffffff8p1023),
9220     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p1023, -0x1p1023),
9221     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1022, 0x1.0000000000001p-1022),
9222     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1022, 0x1p-1022, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9223     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9224     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1022, -0x1p-1022),
9225     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x0.fffffffffffffp-1022, 0x1p-1022, UNDERFLOW_EXCEPTION),
9226     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9227     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.ffffffffffffep-1022, UNDERFLOW_EXCEPTION),
9228     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x0.fffffffffffffp-1022, -0x0.fffffffffffffp-1022, UNDERFLOW_EXCEPTION),
9229     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, 0x1p-1074, 0x1p-1073, UNDERFLOW_EXCEPTION),
9230     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, 0x1p-1074, 0x1p-1074, UNDERFLOW_EXCEPTION),
9231     TEST_fff_f (fma, 0x1p-1074, 0x1p-1074, -0x1p-1074, minus_zero, UNDERFLOW_EXCEPTION),
9232     TEST_fff_f (fma, 0x1p-1074, -0x1p-1074, -0x1p-1074, -0x1p-1074, UNDERFLOW_EXCEPTION),
9233     TEST_fff_f (fma, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9234     TEST_fff_f (fma, 0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9235     TEST_fff_f (fma, -0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0, 0x0.fffffffffffffp0, -0x1p-106),
9236     TEST_fff_f (fma, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0, -0x0.fffffffffffffp0, 0x1p-106),
9237     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p1023, 0x1.0000000000001p1023),
9238     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p1023, 0x1p1023),
9239     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p1023, -0x0.fffffffffffff8p1023),
9240     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p1023, -0x1p1023),
9241     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, 0x1p970, 0x1.0000000000001p970),
9242     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, 0x1p970, 0x1p970),
9243     TEST_fff_f (fma, 0x1.0000000000001p-1022, 0x1.0000000000001p-55, -0x1p970, -0x0.fffffffffffff8p970),
9244     TEST_fff_f (fma, 0x1.0000000000001p-1022, -0x1.0000000000001p-55, -0x1p970, -0x1p970),
9245 #endif
9246 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 64
9247     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000004p-1L, 0x1p-16384L, 0x1.c000000000000008p-16383L, UNDERFLOW_EXCEPTION),
9248     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000004p-1L, -0x1p-16384L, -0x1.c000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9249     TEST_fff_f (fma, 0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, 0x1p-16445L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9250     TEST_fff_f (fma, -0x1.fffffffffffffff8p-16382L, 0x1.0000000000000002p-1L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9251     TEST_fff_f (fma, 0x1p-16445L, 0x1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9252     TEST_fff_f (fma, -0x1p-16445L, 0x1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9253     TEST_fff_f (fma, 0x1p-16445L, 0x1.1p-1L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9254     TEST_fff_f (fma, -0x1p-16445L, 0x1.1p-1L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9255     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p16383L, 0x1.0000000000000002p16383L),
9256     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p16383L, 0x1p16383L),
9257     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9258     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p16383L, -0x1p16383L),
9259     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16382L, 0x1.0000000000000002p-16382L),
9260     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9261     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9262     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16382L, -0x1p-16382L),
9263     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9264     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x0.fffffffffffffffep-16382L, 0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9265     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffcp-16382L, UNDERFLOW_EXCEPTION),
9266     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x0.fffffffffffffffep-16382L, -0x0.fffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9267     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, 0x1p-16445L, 0x1p-16444L, UNDERFLOW_EXCEPTION),
9268     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, 0x1p-16445L, 0x1p-16445L, UNDERFLOW_EXCEPTION),
9269     TEST_fff_f (fma, 0x1p-16445L, 0x1p-16445L, -0x1p-16445L, minus_zero, UNDERFLOW_EXCEPTION),
9270     TEST_fff_f (fma, 0x1p-16445L, -0x1p-16445L, -0x1p-16445L, -0x1p-16445L, UNDERFLOW_EXCEPTION),
9271     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9272     TEST_fff_f (fma, 0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9273     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffffffep0L, -0x1p-128L),
9274     TEST_fff_f (fma, -0x0.ffffffffffffffffp0L, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffffffep0L, 0x1p-128L),
9275     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16383L, 0x1.0000000000000002p16383L),
9276     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16383L, 0x1p16383L),
9277     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16383L, -0x0.ffffffffffffffffp16383L),
9278     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16383L, -0x1p16383L),
9279     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, 0x1p16319L, 0x1.0000000000000002p16319L),
9280     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, 0x1p16319L, 0x1p16319L),
9281     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, 0x1.0000000000000002p-66L, -0x1p16319L, -0x0.ffffffffffffffffp16319L),
9282     TEST_fff_f (fma, 0x1.0000000000000002p-16382L, -0x1.0000000000000002p-66L, -0x1p16319L, -0x1p16319L),
9283 #endif
9284 #if defined (TEST_LDOUBLE) && LDBL_MANT_DIG == 113
9285     TEST_fff_f (fma, 0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, 0x1p-16384L, 0x1.c000000000000000000000000004p-16383L, UNDERFLOW_EXCEPTION),
9286     TEST_fff_f (fma, -0x1.4p-16382L, 0x1.0000000000000000000000000002p-1L, -0x1p-16384L, -0x1.c000000000000000000000000002p-16383L, UNDERFLOW_EXCEPTION),
9287     TEST_fff_f (fma, 0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, 0x1p-16494L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9288     TEST_fff_f (fma, -0x1.fffffffffffffffffffffffffffcp-16382L, 0x1.0000000000000000000000000001p-1L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9289     TEST_fff_f (fma, 0x1p-16494L, 0x1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9290     TEST_fff_f (fma, -0x1p-16494L, 0x1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9291     TEST_fff_f (fma, 0x1p-16494L, 0x1.1p-1L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9292     TEST_fff_f (fma, -0x1p-16494L, 0x1.1p-1L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9293     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9294     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p16383L, 0x1p16383L),
9295     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9296     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p16383L, -0x1p16383L),
9297     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16382L, 0x1.0000000000000000000000000001p-16382L),
9298     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION_BEFORE_ROUNDING),
9299     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9300     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16382L, -0x1p-16382L),
9301     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x1p-16382L, UNDERFLOW_EXCEPTION),
9302     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x0.ffffffffffffffffffffffffffffp-16382L, 0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9303     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.fffffffffffffffffffffffffffep-16382L, UNDERFLOW_EXCEPTION),
9304     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x0.ffffffffffffffffffffffffffffp-16382L, -0x0.ffffffffffffffffffffffffffffp-16382L, UNDERFLOW_EXCEPTION),
9305     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, 0x1p-16494L, 0x1p-16493L, UNDERFLOW_EXCEPTION),
9306     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, 0x1p-16494L, 0x1p-16494L, UNDERFLOW_EXCEPTION),
9307     TEST_fff_f (fma, 0x1p-16494L, 0x1p-16494L, -0x1p-16494L, minus_zero, UNDERFLOW_EXCEPTION),
9308     TEST_fff_f (fma, 0x1p-16494L, -0x1p-16494L, -0x1p-16494L, -0x1p-16494L, UNDERFLOW_EXCEPTION),
9309     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9310     TEST_fff_f (fma, 0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9311     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffffffffffffffffffffffffp0L, -0x1p-226L),
9312     TEST_fff_f (fma, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffffffffffffffffffffffffp0L, 0x1p-226L),
9313     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1.0000000000000000000000000001p16383L),
9314     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16383L, 0x1p16383L),
9315     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x0.ffffffffffffffffffffffffffff8p16383L),
9316     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16383L, -0x1p16383L),
9317     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1.0000000000000000000000000001p16319L),
9318     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, 0x1p16319L, 0x1p16319L),
9319     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, 0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x0.ffffffffffffffffffffffffffff8p16319L),
9320     TEST_fff_f (fma, 0x1.0000000000000000000000000001p-16382L, -0x1.0000000000000000000000000001p-66L, -0x1p16319L, -0x1p16319L),
9321 #endif
9322     END_DATA (fma_upward)
9323   };
9324
9325 static void
9326 fma_test_upward (void)
9327 {
9328   START (fma_upward);
9329   RUN_TEST_LOOP_fff_f (fma, fma_upward_test_data, FE_UPWARD);
9330   END (fma_upward);
9331 }
9332
9333
9334 static const struct test_ff_f_data fmax_test_data[] =
9335   {
9336     START_DATA (fmax),
9337     TEST_ff_f (fmax, 0, 0, 0),
9338     TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero),
9339     TEST_ff_f (fmax, 9, 0, 9),
9340     TEST_ff_f (fmax, 0, 9, 9),
9341     TEST_ff_f (fmax, -9, 0, 0),
9342     TEST_ff_f (fmax, 0, -9, 0),
9343
9344     TEST_ff_f (fmax, plus_infty, 9, plus_infty),
9345     TEST_ff_f (fmax, 0, plus_infty, plus_infty),
9346     TEST_ff_f (fmax, -9, plus_infty, plus_infty),
9347     TEST_ff_f (fmax, plus_infty, -9, plus_infty),
9348
9349     TEST_ff_f (fmax, minus_infty, 9, 9),
9350     TEST_ff_f (fmax, minus_infty, -9, -9),
9351     TEST_ff_f (fmax, 9, minus_infty, 9),
9352     TEST_ff_f (fmax, -9, minus_infty, -9),
9353
9354     TEST_ff_f (fmax, 0, qnan_value, 0),
9355     TEST_ff_f (fmax, 9, qnan_value, 9),
9356     TEST_ff_f (fmax, -9, qnan_value, -9),
9357     TEST_ff_f (fmax, qnan_value, 0, 0),
9358     TEST_ff_f (fmax, qnan_value, 9, 9),
9359     TEST_ff_f (fmax, qnan_value, -9, -9),
9360     TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty),
9361     TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty),
9362     TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty),
9363     TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty),
9364     TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value),
9365     END_DATA (fmax)
9366   };
9367
9368 static void
9369 fmax_test (void)
9370 {
9371   START (fmax);
9372   RUN_TEST_LOOP_ff_f (fmax, fmax_test_data, );
9373   END (fmax);
9374 }
9375
9376
9377 static const struct test_ff_f_data fmin_test_data[] =
9378   {
9379     START_DATA (fmin),
9380     TEST_ff_f (fmin, 0, 0, 0),
9381     TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero),
9382     TEST_ff_f (fmin, 9, 0, 0),
9383     TEST_ff_f (fmin, 0, 9, 0),
9384     TEST_ff_f (fmin, -9, 0, -9),
9385     TEST_ff_f (fmin, 0, -9, -9),
9386
9387     TEST_ff_f (fmin, plus_infty, 9, 9),
9388     TEST_ff_f (fmin, 9, plus_infty, 9),
9389     TEST_ff_f (fmin, plus_infty, -9, -9),
9390     TEST_ff_f (fmin, -9, plus_infty, -9),
9391     TEST_ff_f (fmin, minus_infty, 9, minus_infty),
9392     TEST_ff_f (fmin, minus_infty, -9, minus_infty),
9393     TEST_ff_f (fmin, 9, minus_infty, minus_infty),
9394     TEST_ff_f (fmin, -9, minus_infty, minus_infty),
9395
9396     TEST_ff_f (fmin, 0, qnan_value, 0),
9397     TEST_ff_f (fmin, 9, qnan_value, 9),
9398     TEST_ff_f (fmin, -9, qnan_value, -9),
9399     TEST_ff_f (fmin, qnan_value, 0, 0),
9400     TEST_ff_f (fmin, qnan_value, 9, 9),
9401     TEST_ff_f (fmin, qnan_value, -9, -9),
9402     TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty),
9403     TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty),
9404     TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty),
9405     TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty),
9406     TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value),
9407     END_DATA (fmin)
9408   };
9409
9410 static void
9411 fmin_test (void)
9412 {
9413   START (fmin);
9414   RUN_TEST_LOOP_ff_f (fmin, fmin_test_data, );
9415   END (fmin);
9416 }
9417
9418
9419 static const struct test_ff_f_data fmod_test_data[] =
9420   {
9421     START_DATA (fmod),
9422     /* fmod (+0, y) == +0 for y != 0.  */
9423     TEST_ff_f (fmod, 0, 3, 0),
9424
9425     /* fmod (-0, y) == -0 for y != 0.  */
9426     TEST_ff_f (fmod, minus_zero, 3, minus_zero),
9427
9428     /* fmod (+inf, y) == qNaN plus invalid exception.  */
9429     TEST_ff_f (fmod, plus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9430     /* fmod (-inf, y) == qNaN plus invalid exception.  */
9431     TEST_ff_f (fmod, minus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9432     /* fmod (x, +0) == qNaN plus invalid exception.  */
9433     TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
9434     /* fmod (x, -0) == qNaN plus invalid exception.  */
9435     TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION),
9436
9437     /* fmod (x, +inf) == x for x not infinite.  */
9438     TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
9439     /* fmod (x, -inf) == x for x not infinite.  */
9440     TEST_ff_f (fmod, 3.0, minus_infty, 3.0),
9441
9442     TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value),
9443
9444     TEST_ff_f (fmod, 6.5, 2.25L, 2.0L),
9445     TEST_ff_f (fmod, -6.5, 2.25L, -2.0L),
9446     TEST_ff_f (fmod, 6.5, -2.25L, 2.0L),
9447     TEST_ff_f (fmod, -6.5, -2.25L, -2.0L),
9448
9449     TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero),
9450 #ifndef TEST_FLOAT
9451     TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero),
9452 #endif
9453 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
9454     TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero),
9455 #endif
9456     END_DATA (fmod)
9457   };
9458
9459 static void
9460 fmod_test (void)
9461 {
9462   errno = 0;
9463   FUNC(fmod) (6.5, 2.3L);
9464   if (errno == ENOSYS)
9465     /* Function not implemented.  */
9466     return;
9467
9468   START (fmod);
9469   RUN_TEST_LOOP_ff_f (fmod, fmod_test_data, );
9470   END (fmod);
9471 }
9472
9473
9474 static void
9475 fpclassify_test (void)
9476 {
9477   START (fpclassify);
9478
9479   TEST_f_i (fpclassify, qnan_value, FP_NAN);
9480   TEST_f_i (fpclassify, plus_infty, FP_INFINITE);
9481   TEST_f_i (fpclassify, minus_infty, FP_INFINITE);
9482   TEST_f_i (fpclassify, plus_zero, FP_ZERO);
9483   TEST_f_i (fpclassify, minus_zero, FP_ZERO);
9484   TEST_f_i (fpclassify, 1000, FP_NORMAL);
9485   TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL);
9486
9487   END (fpclassify);
9488 }
9489
9490
9491 static void
9492 frexp_test (void)
9493 {
9494   int x;
9495
9496   START (frexp);
9497
9498   TEST_fI_f1 (frexp, plus_infty, plus_infty, IGNORE);
9499   TEST_fI_f1 (frexp, minus_infty, minus_infty, IGNORE);
9500   TEST_fI_f1 (frexp, qnan_value, qnan_value, IGNORE);
9501
9502   TEST_fI_f1 (frexp, 0.0, 0.0, 0.0);
9503   TEST_fI_f1 (frexp, minus_zero, minus_zero, 0.0);
9504
9505   TEST_fI_f1 (frexp, 12.8L, 0.8L, 4);
9506   TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5);
9507
9508   END (frexp);
9509 }
9510
9511
9512 static void
9513 gamma_test (void)
9514 {
9515   errno = 0;
9516   FUNC(gamma) (1);
9517
9518   if (errno == ENOSYS)
9519     /* Function not implemented.  */
9520     return;
9521
9522   START (gamma);
9523
9524   TEST_f_f1 (gamma, plus_infty, plus_infty, 1);
9525   TEST_f_f1 (gamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
9526   TEST_f_f1 (gamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
9527   TEST_f_f1 (gamma, minus_infty, plus_infty, IGNORE);
9528   TEST_f_f1 (gamma, qnan_value, qnan_value, IGNORE);
9529
9530   TEST_f_f1 (gamma, 1, 0, 1);
9531   TEST_f_f1 (gamma, 3, M_LN2l, 1);
9532
9533   TEST_f_f1 (gamma, 0.5, M_LOG_SQRT_PIl, 1);
9534   TEST_f_f1 (gamma, -0.5, M_LOG_2_SQRT_PIl, -1);
9535
9536   END (gamma);
9537 }
9538
9539 static const struct test_ff_f_data hypot_test_data[] =
9540   {
9541     START_DATA (hypot),
9542     TEST_ff_f (hypot, plus_infty, 1, plus_infty),
9543     TEST_ff_f (hypot, minus_infty, 1, plus_infty),
9544
9545 #ifndef TEST_INLINE
9546     TEST_ff_f (hypot, plus_infty, qnan_value, plus_infty),
9547     TEST_ff_f (hypot, minus_infty, qnan_value, plus_infty),
9548     TEST_ff_f (hypot, qnan_value, plus_infty, plus_infty),
9549     TEST_ff_f (hypot, qnan_value, minus_infty, plus_infty),
9550 #endif
9551
9552     TEST_ff_f (hypot, qnan_value, qnan_value, qnan_value),
9553
9554     /* hypot (x,y) == hypot (+-x, +-y)  */
9555     TEST_ff_f (hypot, 0.7L, 12.4L, 12.419742348374220601176836866763271L),
9556     TEST_ff_f (hypot, -0.7L, 12.4L, 12.419742348374220601176836866763271L),
9557     TEST_ff_f (hypot, 0.7L, -12.4L, 12.419742348374220601176836866763271L),
9558     TEST_ff_f (hypot, -0.7L, -12.4L, 12.419742348374220601176836866763271L),
9559     TEST_ff_f (hypot, 12.4L, 0.7L, 12.419742348374220601176836866763271L),
9560     TEST_ff_f (hypot, -12.4L, 0.7L, 12.419742348374220601176836866763271L),
9561     TEST_ff_f (hypot, 12.4L, -0.7L, 12.419742348374220601176836866763271L),
9562     TEST_ff_f (hypot, -12.4L, -0.7L, 12.419742348374220601176836866763271L),
9563
9564     /*  hypot (x,0) == fabs (x)  */
9565     TEST_ff_f (hypot, 0.75L, 0, 0.75L),
9566     TEST_ff_f (hypot, -0.75L, 0, 0.75L),
9567     TEST_ff_f (hypot, -5.7e7, 0, 5.7e7L),
9568
9569     TEST_ff_f (hypot, 0.75L, 1.25L, 1.45773797371132511771853821938639577L),
9570
9571     TEST_ff_f (hypot, 1.0L, 0x1p-61L, 1.0L),
9572     TEST_ff_f (hypot, 0x1p+0L, 0x1.fp-129L, 0x1p+0L),
9573 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
9574     TEST_ff_f (hypot, 0x1.23456789abcdef0123456789ab8p-500L, 0x1.23456789abcdef0123456789ab8p-500L, 4.9155782399407039128612180934736799735113e-151L),
9575 #endif
9576
9577 #if !(defined TEST_FLOAT && defined TEST_INLINE)
9578     TEST_ff_f (hypot, 0x3p125L, 0x4p125L, 0x5p125L),
9579     TEST_ff_f (hypot, 0x1.234566p-126L, 0x1.234566p-126L, 1.891441686191081936598531534017449451173e-38L),
9580 #endif
9581
9582 #if !defined TEST_FLOAT && !(defined TEST_DOUBLE && defined TEST_INLINE)
9583     TEST_ff_f (hypot, 0x3p1021L, 0x4p1021L, 0x5p1021L),
9584     TEST_ff_f (hypot, 0x1p+0L, 0x0.3ep-1022L, 0x1p+0L),
9585 #endif
9586
9587 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 && !defined TEST_INLINE
9588     TEST_ff_f (hypot, 0x3p16381L, 0x4p16381L, 0x5p16381L),
9589 #endif
9590     END_DATA (hypot)
9591   };
9592
9593 static void
9594 hypot_test (void)
9595 {
9596   errno = 0;
9597   FUNC(hypot) (0.7L, 12.4L);
9598   if (errno == ENOSYS)
9599     /* Function not implemented.  */
9600     return;
9601
9602   START (hypot);
9603   RUN_TEST_LOOP_ff_f (hypot, hypot_test_data, );
9604   END (hypot);
9605 }
9606
9607
9608 static void
9609 ilogb_test (void)
9610 {
9611   START (ilogb);
9612
9613   TEST_f_i (ilogb, 1, 0);
9614   TEST_f_i (ilogb, M_El, 1);
9615   TEST_f_i (ilogb, 1024, 10);
9616   TEST_f_i (ilogb, -2000, 10);
9617
9618   /* ilogb (0.0) == FP_ILOGB0 plus invalid exception  */
9619   TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION|ERRNO_EDOM);
9620   /* ilogb (qNaN) == FP_ILOGBNAN plus invalid exception  */
9621   TEST_f_i (ilogb, qnan_value, FP_ILOGBNAN, INVALID_EXCEPTION|ERRNO_EDOM);
9622   /* ilogb (inf) == INT_MAX plus invalid exception  */
9623   TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
9624   /* ilogb (-inf) == INT_MAX plus invalid exception  */
9625   TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION|ERRNO_EDOM);
9626
9627   END (ilogb);
9628 }
9629
9630 static void
9631 isfinite_test (void)
9632 {
9633   START (isfinite);
9634
9635   TEST_f_b (isfinite, 0, 1);
9636   TEST_f_b (isfinite, minus_zero, 1);
9637   TEST_f_b (isfinite, 10, 1);
9638   TEST_f_b (isfinite, min_subnorm_value, 1);
9639   TEST_f_b (isfinite, plus_infty, 0);
9640   TEST_f_b (isfinite, minus_infty, 0);
9641   TEST_f_b (isfinite, qnan_value, 0);
9642
9643   END (isfinite);
9644 }
9645
9646 static void
9647 isgreater_test (void)
9648 {
9649   START (isgreater);
9650
9651   TEST_ff_i (isgreater, minus_zero, minus_zero, 0);
9652   TEST_ff_i (isgreater, minus_zero, plus_zero, 0);
9653   TEST_ff_i (isgreater, minus_zero, (FLOAT) 1, 0);
9654   TEST_ff_i (isgreater, minus_zero, qnan_value, 0);
9655   TEST_ff_i (isgreater, plus_zero, minus_zero, 0);
9656   TEST_ff_i (isgreater, plus_zero, plus_zero, 0);
9657   TEST_ff_i (isgreater, plus_zero, (FLOAT) 1, 0);
9658   TEST_ff_i (isgreater, plus_zero, qnan_value, 0);
9659   TEST_ff_i (isgreater, (FLOAT) 1, minus_zero, 1);
9660   TEST_ff_i (isgreater, (FLOAT) 1, plus_zero, 1);
9661   TEST_ff_i (isgreater, (FLOAT) 1, (FLOAT) 1, 0);
9662   TEST_ff_i (isgreater, (FLOAT) 1, qnan_value, 0);
9663   TEST_ff_i (isgreater, qnan_value, minus_zero, 0);
9664   TEST_ff_i (isgreater, qnan_value, plus_zero, 0);
9665   TEST_ff_i (isgreater, qnan_value, (FLOAT) 1, 0);
9666   TEST_ff_i (isgreater, qnan_value, qnan_value, 0);
9667
9668   END (isgreater);
9669 }
9670
9671 static void
9672 isgreaterequal_test (void)
9673 {
9674   START (isgreaterequal);
9675
9676   TEST_ff_i (isgreaterequal, minus_zero, minus_zero, 1);
9677   TEST_ff_i (isgreaterequal, minus_zero, plus_zero, 1);
9678   TEST_ff_i (isgreaterequal, minus_zero, (FLOAT) 1, 0);
9679   TEST_ff_i (isgreaterequal, minus_zero, qnan_value, 0);
9680   TEST_ff_i (isgreaterequal, plus_zero, minus_zero, 1);
9681   TEST_ff_i (isgreaterequal, plus_zero, plus_zero, 1);
9682   TEST_ff_i (isgreaterequal, plus_zero, (FLOAT) 1, 0);
9683   TEST_ff_i (isgreaterequal, plus_zero, qnan_value, 0);
9684   TEST_ff_i (isgreaterequal, (FLOAT) 1, minus_zero, 1);
9685   TEST_ff_i (isgreaterequal, (FLOAT) 1, plus_zero, 1);
9686   TEST_ff_i (isgreaterequal, (FLOAT) 1, (FLOAT) 1, 1);
9687   TEST_ff_i (isgreaterequal, (FLOAT) 1, qnan_value, 0);
9688   TEST_ff_i (isgreaterequal, qnan_value, minus_zero, 0);
9689   TEST_ff_i (isgreaterequal, qnan_value, plus_zero, 0);
9690   TEST_ff_i (isgreaterequal, qnan_value, (FLOAT) 1, 0);
9691   TEST_ff_i (isgreaterequal, qnan_value, qnan_value, 0);
9692
9693   END (isgreaterequal);
9694 }
9695
9696 static void
9697 isinf_test (void)
9698 {
9699   START (isinf);
9700
9701   TEST_f_b (isinf, 0, 0);
9702   TEST_f_b (isinf, minus_zero, 0);
9703   TEST_f_b (isinf, 10, 0);
9704   TEST_f_b (isinf, min_subnorm_value, 0);
9705   TEST_f_b (isinf, plus_infty, 1);
9706   TEST_f_b (isinf, minus_infty, 1);
9707   TEST_f_b (isinf, qnan_value, 0);
9708
9709   END (isinf);
9710 }
9711
9712 static void
9713 isless_test (void)
9714 {
9715   START (isless);
9716
9717   TEST_ff_i (isless, minus_zero, minus_zero, 0);
9718   TEST_ff_i (isless, minus_zero, plus_zero, 0);
9719   TEST_ff_i (isless, minus_zero, (FLOAT) 1, 1);
9720   TEST_ff_i (isless, minus_zero, qnan_value, 0);
9721   TEST_ff_i (isless, plus_zero, minus_zero, 0);
9722   TEST_ff_i (isless, plus_zero, plus_zero, 0);
9723   TEST_ff_i (isless, plus_zero, (FLOAT) 1, 1);
9724   TEST_ff_i (isless, plus_zero, qnan_value, 0);
9725   TEST_ff_i (isless, (FLOAT) 1, minus_zero, 0);
9726   TEST_ff_i (isless, (FLOAT) 1, plus_zero, 0);
9727   TEST_ff_i (isless, (FLOAT) 1, (FLOAT) 1, 0);
9728   TEST_ff_i (isless, (FLOAT) 1, qnan_value, 0);
9729   TEST_ff_i (isless, qnan_value, minus_zero, 0);
9730   TEST_ff_i (isless, qnan_value, plus_zero, 0);
9731   TEST_ff_i (isless, qnan_value, (FLOAT) 1, 0);
9732   TEST_ff_i (isless, qnan_value, qnan_value, 0);
9733
9734   END (isless);
9735 }
9736
9737 static void
9738 islessequal_test (void)
9739 {
9740   START (islessequal);
9741
9742   TEST_ff_i (islessequal, minus_zero, minus_zero, 1);
9743   TEST_ff_i (islessequal, minus_zero, plus_zero, 1);
9744   TEST_ff_i (islessequal, minus_zero, (FLOAT) 1, 1);
9745   TEST_ff_i (islessequal, minus_zero, qnan_value, 0);
9746   TEST_ff_i (islessequal, plus_zero, minus_zero, 1);
9747   TEST_ff_i (islessequal, plus_zero, plus_zero, 1);
9748   TEST_ff_i (islessequal, plus_zero, (FLOAT) 1, 1);
9749   TEST_ff_i (islessequal, plus_zero, qnan_value, 0);
9750   TEST_ff_i (islessequal, (FLOAT) 1, minus_zero, 0);
9751   TEST_ff_i (islessequal, (FLOAT) 1, plus_zero, 0);
9752   TEST_ff_i (islessequal, (FLOAT) 1, (FLOAT) 1, 1);
9753   TEST_ff_i (islessequal, (FLOAT) 1, qnan_value, 0);
9754   TEST_ff_i (islessequal, qnan_value, minus_zero, 0);
9755   TEST_ff_i (islessequal, qnan_value, plus_zero, 0);
9756   TEST_ff_i (islessequal, qnan_value, (FLOAT) 1, 0);
9757   TEST_ff_i (islessequal, qnan_value, qnan_value, 0);
9758
9759   END (islessequal);
9760 }
9761
9762 static void
9763 islessgreater_test (void)
9764 {
9765   START (islessgreater);
9766
9767   TEST_ff_i (islessgreater, minus_zero, minus_zero, 0);
9768   TEST_ff_i (islessgreater, minus_zero, plus_zero, 0);
9769   TEST_ff_i (islessgreater, minus_zero, (FLOAT) 1, 1);
9770   TEST_ff_i (islessgreater, minus_zero, qnan_value, 0);
9771   TEST_ff_i (islessgreater, plus_zero, minus_zero, 0);
9772   TEST_ff_i (islessgreater, plus_zero, plus_zero, 0);
9773   TEST_ff_i (islessgreater, plus_zero, (FLOAT) 1, 1);
9774   TEST_ff_i (islessgreater, plus_zero, qnan_value, 0);
9775   TEST_ff_i (islessgreater, (FLOAT) 1, minus_zero, 1);
9776   TEST_ff_i (islessgreater, (FLOAT) 1, plus_zero, 1);
9777   TEST_ff_i (islessgreater, (FLOAT) 1, (FLOAT) 1, 0);
9778   TEST_ff_i (islessgreater, (FLOAT) 1, qnan_value, 0);
9779   TEST_ff_i (islessgreater, qnan_value, minus_zero, 0);
9780   TEST_ff_i (islessgreater, qnan_value, plus_zero, 0);
9781   TEST_ff_i (islessgreater, qnan_value, (FLOAT) 1, 0);
9782   TEST_ff_i (islessgreater, qnan_value, qnan_value, 0);
9783
9784   END (islessgreater);
9785 }
9786
9787 static void
9788 isnan_test (void)
9789 {
9790   START (isnan);
9791
9792   TEST_f_b (isnan, 0, 0);
9793   TEST_f_b (isnan, minus_zero, 0);
9794   TEST_f_b (isnan, 10, 0);
9795   TEST_f_b (isnan, min_subnorm_value, 0);
9796   TEST_f_b (isnan, plus_infty, 0);
9797   TEST_f_b (isnan, minus_infty, 0);
9798   TEST_f_b (isnan, qnan_value, 1);
9799
9800   END (isnan);
9801 }
9802
9803 static void
9804 isnormal_test (void)
9805 {
9806   START (isnormal);
9807
9808   TEST_f_b (isnormal, 0, 0);
9809   TEST_f_b (isnormal, minus_zero, 0);
9810   TEST_f_b (isnormal, 10, 1);
9811   TEST_f_b (isnormal, min_subnorm_value, 0);
9812   TEST_f_b (isnormal, plus_infty, 0);
9813   TEST_f_b (isnormal, minus_infty, 0);
9814   TEST_f_b (isnormal, qnan_value, 0);
9815
9816   END (isnormal);
9817 }
9818
9819 static void
9820 issignaling_test (void)
9821 {
9822   START (issignaling);
9823
9824   TEST_f_b (issignaling, 0, 0);
9825   TEST_f_b (issignaling, minus_zero, 0);
9826   TEST_f_b (issignaling, 10, 0);
9827   TEST_f_b (issignaling, min_subnorm_value, 0);
9828   TEST_f_b (issignaling, plus_infty, 0);
9829   TEST_f_b (issignaling, minus_infty, 0);
9830   TEST_f_b (issignaling, qnan_value, 0);
9831
9832   END (issignaling);
9833 }
9834
9835 static void
9836 isunordered_test (void)
9837 {
9838   START (isunordered);
9839
9840   TEST_ff_i (isunordered, minus_zero, minus_zero, 0);
9841   TEST_ff_i (isunordered, minus_zero, plus_zero, 0);
9842   TEST_ff_i (isunordered, minus_zero, (FLOAT) 1, 0);
9843   TEST_ff_i (isunordered, minus_zero, qnan_value, 1);
9844   TEST_ff_i (isunordered, plus_zero, minus_zero, 0);
9845   TEST_ff_i (isunordered, plus_zero, plus_zero, 0);
9846   TEST_ff_i (isunordered, plus_zero, (FLOAT) 1, 0);
9847   TEST_ff_i (isunordered, plus_zero, qnan_value, 1);
9848   TEST_ff_i (isunordered, (FLOAT) 1, minus_zero, 0);
9849   TEST_ff_i (isunordered, (FLOAT) 1, plus_zero, 0);
9850   TEST_ff_i (isunordered, (FLOAT) 1, (FLOAT) 1, 0);
9851   TEST_ff_i (isunordered, (FLOAT) 1, qnan_value, 1);
9852   TEST_ff_i (isunordered, qnan_value, minus_zero, 1);
9853   TEST_ff_i (isunordered, qnan_value, plus_zero, 1);
9854   TEST_ff_i (isunordered, qnan_value, (FLOAT) 1, 1);
9855   TEST_ff_i (isunordered, qnan_value, qnan_value, 1);
9856
9857   END (isunordered);
9858 }
9859
9860 static const struct test_f_f_data j0_test_data[] =
9861   {
9862     START_DATA (j0),
9863     /* j0 is the Bessel function of the first kind of order 0 */
9864     TEST_f_f (j0, qnan_value, qnan_value),
9865     TEST_f_f (j0, plus_infty, 0),
9866     TEST_f_f (j0, -1.0, 0.765197686557966551449717526102663221L),
9867     TEST_f_f (j0, 0.0, 1.0),
9868     TEST_f_f (j0, 0.125L, 0.996097563041985204620768999453174712L),
9869     TEST_f_f (j0, 0.75L, 0.864242275166648623555731103820923211L),
9870     TEST_f_f (j0, 1.0, 0.765197686557966551449717526102663221L),
9871     TEST_f_f (j0, 1.5, 0.511827671735918128749051744283411720L),
9872     TEST_f_f (j0, 2.0, 0.223890779141235668051827454649948626L),
9873     TEST_f_f (j0, 8.0, 0.171650807137553906090869407851972001L),
9874     TEST_f_f (j0, 10.0, -0.245935764451348335197760862485328754L),
9875     TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
9876     TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
9877
9878     TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L),
9879
9880 #ifndef TEST_FLOAT
9881     TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L),
9882     TEST_f_f (j0, 0x1p1023L, -1.5665258060609012834424478437196679802783e-155L),
9883 #endif
9884
9885 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9886     TEST_f_f (j0, 0x1p16382L, -1.2193782500509000574176799046642541129387e-2466L),
9887     TEST_f_f (j0, 0x1p16383L, 9.5859502826270374691362975419147645151233e-2467L),
9888 #endif
9889     END_DATA (j0)
9890   };
9891
9892 static void
9893 j0_test (void)
9894 {
9895   FLOAT s, c;
9896   errno = 0;
9897   FUNC (sincos) (0, &s, &c);
9898   if (errno == ENOSYS)
9899     /* Required function not implemented.  */
9900     return;
9901   FUNC(j0) (0);
9902   if (errno == ENOSYS)
9903     /* Function not implemented.  */
9904     return;
9905
9906   START (j0);
9907   RUN_TEST_LOOP_f_f (j0, j0_test_data, );
9908   END (j0);
9909 }
9910
9911
9912 static const struct test_f_f_data j1_test_data[] =
9913   {
9914     START_DATA (j1),
9915     /* j1 is the Bessel function of the first kind of order 1 */
9916     TEST_f_f (j1, qnan_value, qnan_value),
9917     TEST_f_f (j1, plus_infty, 0),
9918
9919     TEST_f_f (j1, -1.0, -0.440050585744933515959682203718914913L),
9920     TEST_f_f (j1, 0.0, 0.0),
9921     TEST_f_f (j1, 0.125L, 0.0623780091344946810942311355879361177L),
9922     TEST_f_f (j1, 0.75L, 0.349243602174862192523281016426251335L),
9923     TEST_f_f (j1, 1.0, 0.440050585744933515959682203718914913L),
9924     TEST_f_f (j1, 1.5, 0.557936507910099641990121213156089400L),
9925     TEST_f_f (j1, 2.0, 0.576724807756873387202448242269137087L),
9926     TEST_f_f (j1, 8.0, 0.234636346853914624381276651590454612L),
9927     TEST_f_f (j1, 10.0, 0.0434727461688614366697487680258592883L),
9928
9929     TEST_f_f (j1, 0x1.3ffp+74L, 1.818984347516051243459364437186082741567e-12L),
9930
9931 #ifndef TEST_FLOAT
9932     TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
9933     TEST_f_f (j1, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
9934 #endif
9935
9936 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
9937     TEST_f_f (j1, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
9938     TEST_f_f (j1, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
9939 #endif
9940     END_DATA (j1)
9941   };
9942
9943 static void
9944 j1_test (void)
9945 {
9946   FLOAT s, c;
9947   errno = 0;
9948   FUNC (sincos) (0, &s, &c);
9949   if (errno == ENOSYS)
9950     /* Required function not implemented.  */
9951     return;
9952   FUNC(j1) (0);
9953   if (errno == ENOSYS)
9954     /* Function not implemented.  */
9955     return;
9956
9957   START (j1);
9958   RUN_TEST_LOOP_f_f (j1, j1_test_data, );
9959   END (j1);
9960 }
9961
9962 static const struct test_if_f_data jn_test_data[] =
9963   {
9964     START_DATA (jn),
9965     /* jn is the Bessel function of the first kind of order n.  */
9966     /* jn (0, x) == j0 (x)  */
9967     TEST_if_f (jn, 0, qnan_value, qnan_value),
9968     TEST_if_f (jn, 0, plus_infty, 0),
9969     TEST_if_f (jn, 0, -1.0, 0.765197686557966551449717526102663221L),
9970     TEST_if_f (jn, 0, 0.0, 1.0),
9971     TEST_if_f (jn, 0, 0.125L, 0.996097563041985204620768999453174712L),
9972     TEST_if_f (jn, 0, 0.75L, 0.864242275166648623555731103820923211L),
9973     TEST_if_f (jn, 0, 1.0, 0.765197686557966551449717526102663221L),
9974     TEST_if_f (jn, 0, 1.5, 0.511827671735918128749051744283411720L),
9975     TEST_if_f (jn, 0, 2.0, 0.223890779141235668051827454649948626L),
9976     TEST_if_f (jn, 0, 8.0, 0.171650807137553906090869407851972001L),
9977     TEST_if_f (jn, 0, 10.0, -0.245935764451348335197760862485328754L),
9978     TEST_if_f (jn, 0, 4.0, -3.9714980986384737228659076845169804197562E-1L),
9979     TEST_if_f (jn, 0, -4.0, -3.9714980986384737228659076845169804197562E-1L),
9980
9981     /* jn (1, x) == j1 (x)  */
9982     TEST_if_f (jn, 1, qnan_value, qnan_value),
9983     TEST_if_f (jn, 1, plus_infty, 0),
9984     TEST_if_f (jn, 1, -1.0, -0.440050585744933515959682203718914913L),
9985     TEST_if_f (jn, 1, 0.0, 0.0),
9986     TEST_if_f (jn, 1, 0.125L, 0.0623780091344946810942311355879361177L),
9987     TEST_if_f (jn, 1, 0.75L, 0.349243602174862192523281016426251335L),
9988     TEST_if_f (jn, 1, 1.0, 0.440050585744933515959682203718914913L),
9989     TEST_if_f (jn, 1, 1.5, 0.557936507910099641990121213156089400L),
9990     TEST_if_f (jn, 1, 2.0, 0.576724807756873387202448242269137087L),
9991     TEST_if_f (jn, 1, 8.0, 0.234636346853914624381276651590454612L),
9992     TEST_if_f (jn, 1, 10.0, 0.0434727461688614366697487680258592883L),
9993
9994     /* jn (3, x)  */
9995     TEST_if_f (jn, 3, qnan_value, qnan_value),
9996     TEST_if_f (jn, 3, plus_infty, 0),
9997
9998     TEST_if_f (jn, 3, -1.0, -0.0195633539826684059189053216217515083L),
9999     TEST_if_f (jn, 3, 0.0, 0.0),
10000     TEST_if_f (jn, 3, 0.125L, 0.406503832554912875023029337653442868e-4L),
10001     TEST_if_f (jn, 3, 0.75L, 0.848438342327410884392755236884386804e-2L),
10002     TEST_if_f (jn, 3, 1.0, 0.0195633539826684059189053216217515083L),
10003     TEST_if_f (jn, 3, 2.0, 0.128943249474402051098793332969239835L),
10004     TEST_if_f (jn, 3, 10.0, 0.0583793793051868123429354784103409563L),
10005
10006     /*  jn (10, x)  */
10007     TEST_if_f (jn, 10, qnan_value, qnan_value),
10008     TEST_if_f (jn, 10, plus_infty, 0),
10009
10010     TEST_if_f (jn, 10, -1.0, 0.263061512368745320699785368779050294e-9L),
10011     TEST_if_f (jn, 10, 0.0, 0.0),
10012     TEST_if_f (jn, 10, 0.125L, 0.250543369809369890173993791865771547e-18L),
10013     TEST_if_f (jn, 10, 0.75L, 0.149621713117596814698712483621682835e-10L),
10014     TEST_if_f (jn, 10, 1.0, 0.263061512368745320699785368779050294e-9L),
10015     TEST_if_f (jn, 10, 2.0, 0.251538628271673670963516093751820639e-6L),
10016     TEST_if_f (jn, 10, 10.0, 0.207486106633358857697278723518753428L),
10017
10018     /* BZ #11589 .*/
10019     TEST_if_f (jn, 2, 2.4048255576957729L, 0.43175480701968038399746111312430703L),
10020     TEST_if_f (jn, 3, 2.4048255576957729L, 0.19899990535769083404042146764530813L),
10021     TEST_if_f (jn, 4, 2.4048255576957729L, 0.647466661641779720084932282551219891E-1L),
10022     TEST_if_f (jn, 5, 2.4048255576957729L, 0.163892432048058525099230549946147698E-1L),
10023     TEST_if_f (jn, 6, 2.4048255576957729L, 0.34048184720278336646673682895929161E-2L),
10024     TEST_if_f (jn, 7, 2.4048255576957729L, 0.60068836573295394221291569249883076E-3L),
10025     TEST_if_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L),
10026     TEST_if_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L),
10027
10028     /* Bug 14155: spurious exception may occur.  */
10029     TEST_if_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L, UNDERFLOW_EXCEPTION_OK),
10030     END_DATA (jn)
10031   };
10032
10033 static void
10034 jn_test (void)
10035 {
10036   FLOAT s, c;
10037   errno = 0;
10038   FUNC (sincos) (0, &s, &c);
10039   if (errno == ENOSYS)
10040     /* Required function not implemented.  */
10041     return;
10042   FUNC(jn) (1, 1);
10043   if (errno == ENOSYS)
10044     /* Function not implemented.  */
10045     return;
10046
10047   START (jn);
10048   RUN_TEST_LOOP_if_f (jn, jn_test_data, );
10049   END (jn);
10050 }
10051
10052
10053 static const struct test_fi_f_data ldexp_test_data[] =
10054   {
10055     START_DATA (ldexp),
10056     TEST_fi_f (ldexp, 0, 0, 0),
10057     TEST_fi_f (ldexp, minus_zero, 0, minus_zero),
10058
10059     TEST_fi_f (ldexp, plus_infty, 1, plus_infty),
10060     TEST_fi_f (ldexp, minus_infty, 1, minus_infty),
10061     TEST_fi_f (ldexp, qnan_value, 1, qnan_value),
10062
10063     TEST_fi_f (ldexp, 0.8L, 4, 12.8L),
10064     TEST_fi_f (ldexp, -0.854375L, 5, -27.34L),
10065
10066     /* ldexp (x, 0) == x.  */
10067     TEST_fi_f (ldexp, 1.0L, 0L, 1.0L),
10068     END_DATA (ldexp)
10069   };
10070
10071 static void
10072 ldexp_test (void)
10073 {
10074   START (ldexp);
10075   RUN_TEST_LOOP_fi_f (ldexp, ldexp_test_data, );
10076   END (ldexp);
10077 }
10078
10079
10080 static void
10081 lgamma_test (void)
10082 {
10083   errno = 0;
10084   FUNC(lgamma) (0);
10085   if (errno == ENOSYS)
10086     /* Function not implemented.  */
10087     return;
10088
10089   START (lgamma);
10090
10091   TEST_f_f1 (lgamma, plus_infty, plus_infty, 1);
10092   TEST_f_f1 (lgamma, 0, plus_infty, 1, DIVIDE_BY_ZERO_EXCEPTION);
10093   TEST_f_f1 (lgamma, minus_zero, plus_infty, -1, DIVIDE_BY_ZERO_EXCEPTION);
10094   TEST_f_f1 (lgamma, qnan_value, qnan_value, IGNORE);
10095
10096   /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0.  */
10097   TEST_f_f1 (lgamma, -3, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE);
10098   TEST_f_f1 (lgamma, minus_infty, plus_infty, IGNORE);
10099   TEST_f_f1 (lgamma, -max_value, plus_infty, IGNORE, DIVIDE_BY_ZERO_EXCEPTION);
10100   TEST_f_f1 (lgamma, max_value, plus_infty, 1, OVERFLOW_EXCEPTION);
10101
10102   TEST_f_f1 (lgamma, 1, 0, 1);
10103
10104   TEST_f_f1 (lgamma, 3, M_LN2l, 1);
10105
10106   TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
10107   TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
10108   TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1);
10109   TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1);
10110
10111   END (lgamma);
10112 }
10113
10114
10115 static void
10116 lrint_test (void)
10117 {
10118   /* XXX this test is incomplete.  We need to have a way to specifiy
10119      the rounding method and test the critical cases.  So far, only
10120      unproblematic numbers are tested.  */
10121   /* TODO: missing +/-Inf as well as qNaN tests.  */
10122
10123   START (lrint);
10124
10125   TEST_f_l (lrint, 0.0, 0);
10126   TEST_f_l (lrint, minus_zero, 0);
10127   TEST_f_l (lrint, 0.2L, 0);
10128   TEST_f_l (lrint, -0.2L, 0);
10129
10130   TEST_f_l (lrint, 1.4L, 1);
10131   TEST_f_l (lrint, -1.4L, -1);
10132
10133   TEST_f_l (lrint, 8388600.3L, 8388600);
10134   TEST_f_l (lrint, -8388600.3L, -8388600);
10135
10136   TEST_f_l (lrint, 1071930.0008, 1071930);
10137 #ifndef TEST_FLOAT
10138   TEST_f_l (lrint, 1073741824.01, 1073741824);
10139 # if LONG_MAX > 281474976710656
10140   TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10141 # endif
10142 #endif
10143
10144   END (lrint);
10145 }
10146
10147
10148 static void
10149 lrint_test_tonearest (void)
10150 {
10151   int save_round_mode;
10152   START (lrint_tonearest);
10153
10154   save_round_mode = fegetround ();
10155
10156   if (!fesetround (FE_TONEAREST))
10157     {
10158       TEST_f_l (lrint, 0.0, 0);
10159       TEST_f_l (lrint, minus_zero, 0);
10160       TEST_f_l (lrint, 0.2L, 0);
10161       TEST_f_l (lrint, -0.2L, 0);
10162       TEST_f_l (lrint, 0.5L, 0);
10163       TEST_f_l (lrint, -0.5L, 0);
10164       TEST_f_l (lrint, 0.8L, 1);
10165       TEST_f_l (lrint, -0.8L, -1);
10166
10167       TEST_f_l (lrint, 1.4L, 1);
10168       TEST_f_l (lrint, -1.4L, -1);
10169
10170       TEST_f_l (lrint, 8388600.3L, 8388600);
10171       TEST_f_l (lrint, -8388600.3L, -8388600);
10172
10173       TEST_f_l (lrint, 1071930.0008, 1071930);
10174 #ifndef TEST_FLOAT
10175       TEST_f_l (lrint, 1073741824.01, 1073741824);
10176 # if LONG_MAX > 281474976710656
10177       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10178 # endif
10179 #endif
10180     }
10181
10182   fesetround (save_round_mode);
10183
10184   END (lrint_tonearest);
10185 }
10186
10187
10188 static void
10189 lrint_test_towardzero (void)
10190 {
10191   int save_round_mode;
10192   START (lrint_towardzero);
10193
10194   save_round_mode = fegetround ();
10195
10196   if (!fesetround (FE_TOWARDZERO))
10197     {
10198       TEST_f_l (lrint, 0.0, 0);
10199       TEST_f_l (lrint, minus_zero, 0);
10200       TEST_f_l (lrint, 0.2L, 0);
10201       TEST_f_l (lrint, -0.2L, 0);
10202       TEST_f_l (lrint, 0.5L, 0);
10203       TEST_f_l (lrint, -0.5L, 0);
10204       TEST_f_l (lrint, 0.8L, 0);
10205       TEST_f_l (lrint, -0.8L, 0);
10206
10207       TEST_f_l (lrint, 1.4L, 1);
10208       TEST_f_l (lrint, -1.4L, -1);
10209
10210       TEST_f_l (lrint, 8388600.3L, 8388600);
10211       TEST_f_l (lrint, -8388600.3L, -8388600);
10212
10213       TEST_f_l (lrint, 1071930.0008, 1071930);
10214 #ifndef TEST_FLOAT
10215       TEST_f_l (lrint, 1073741824.01, 1073741824);
10216 # if LONG_MAX > 281474976710656
10217       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10218 # endif
10219 #endif
10220     }
10221
10222   fesetround (save_round_mode);
10223
10224   END (lrint_towardzero);
10225 }
10226
10227
10228 static void
10229 lrint_test_downward (void)
10230 {
10231   int save_round_mode;
10232   START (lrint_downward);
10233
10234   save_round_mode = fegetround ();
10235
10236   if (!fesetround (FE_DOWNWARD))
10237     {
10238       TEST_f_l (lrint, 0.0, 0);
10239       TEST_f_l (lrint, minus_zero, 0);
10240       TEST_f_l (lrint, 0.2L, 0);
10241       TEST_f_l (lrint, -0.2L, -1);
10242       TEST_f_l (lrint, 0.5L, 0);
10243       TEST_f_l (lrint, -0.5L, -1);
10244       TEST_f_l (lrint, 0.8L, 0);
10245       TEST_f_l (lrint, -0.8L, -1);
10246
10247       TEST_f_l (lrint, 1.4L, 1);
10248       TEST_f_l (lrint, -1.4L, -2);
10249
10250       TEST_f_l (lrint, 8388600.3L, 8388600);
10251       TEST_f_l (lrint, -8388600.3L, -8388601);
10252
10253       TEST_f_l (lrint, 1071930.0008, 1071930);
10254 #ifndef TEST_FLOAT
10255       TEST_f_l (lrint, 1073741824.01, 1073741824);
10256 # if LONG_MAX > 281474976710656
10257       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10258 # endif
10259 #endif
10260     }
10261
10262   fesetround (save_round_mode);
10263
10264   END (lrint_downward);
10265 }
10266
10267
10268 static void
10269 lrint_test_upward (void)
10270 {
10271   int save_round_mode;
10272   START (lrint_upward);
10273
10274   save_round_mode = fegetround ();
10275
10276   if (!fesetround (FE_UPWARD))
10277     {
10278       TEST_f_l (lrint, 0.0, 0);
10279       TEST_f_l (lrint, minus_zero, 0);
10280       TEST_f_l (lrint, 0.2L, 1);
10281       TEST_f_l (lrint, -0.2L, 0);
10282       TEST_f_l (lrint, 0.5L, 1);
10283       TEST_f_l (lrint, -0.5L, 0);
10284       TEST_f_l (lrint, 0.8L, 1);
10285       TEST_f_l (lrint, -0.8L, 0);
10286
10287       TEST_f_l (lrint, 1.4L, 2);
10288       TEST_f_l (lrint, -1.4L, -1);
10289
10290       TEST_f_l (lrint, 8388600.3L, 8388601);
10291       TEST_f_l (lrint, -8388600.3L, -8388600);
10292
10293 #ifndef TEST_FLOAT
10294       TEST_f_l (lrint, 1071930.0008, 1071931);
10295       TEST_f_l (lrint, 1073741824.01, 1073741825);
10296 # if LONG_MAX > 281474976710656 && defined (TEST_LDOUBLE)
10297       TEST_f_l (lrint, 281474976710656.025, 281474976710656);
10298 # endif
10299 #endif
10300     }
10301
10302   fesetround (save_round_mode);
10303
10304   END (lrint_upward);
10305 }
10306
10307
10308 static void
10309 llrint_test (void)
10310 {
10311   /* XXX this test is incomplete.  We need to have a way to specifiy
10312      the rounding method and test the critical cases.  So far, only
10313      unproblematic numbers are tested.  */
10314   /* TODO: missing +/-Inf as well as qNaN tests.  */
10315
10316   START (llrint);
10317
10318   TEST_f_L (llrint, 0.0, 0);
10319   TEST_f_L (llrint, minus_zero, 0);
10320   TEST_f_L (llrint, 0.2L, 0);
10321   TEST_f_L (llrint, -0.2L, 0);
10322
10323   TEST_f_L (llrint, 1.4L, 1);
10324   TEST_f_L (llrint, -1.4L, -1);
10325
10326   TEST_f_L (llrint, 8388600.3L, 8388600);
10327   TEST_f_L (llrint, -8388600.3L, -8388600);
10328
10329   TEST_f_l (llrint, 1071930.0008, 1071930);
10330
10331   /* Test boundary conditions.  */
10332   /* 0x1FFFFF */
10333   TEST_f_L (llrint, 2097151.0,2097151LL);
10334   /* 0x800000 */
10335   TEST_f_L (llrint, 8388608.0, 8388608LL);
10336   /* 0x1000000 */
10337   TEST_f_L (llrint, 16777216.0, 16777216LL);
10338   /* 0x20000000000 */
10339   TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10340   /* 0x40000000000 */
10341   TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10342   /* 0x1000000000000 */
10343   TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10344   /* 0x10000000000000 */
10345   TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10346   /* 0x10000080000000 */
10347   TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10348   /* 0x20000000000000 */
10349   TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10350   /* 0x80000000000000 */
10351   TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10352   /* 0x100000000000000 */
10353   TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10354 #ifdef TEST_LDOUBLE
10355   /* The input can only be represented in long double.  */
10356   TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10357   TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10358   TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10359   TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10360   TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10361
10362   TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10363   TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10364   TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10365   TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10366   TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10367
10368 # if LDBL_MANT_DIG > 100
10369   TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10370   TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10371   TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10372   TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10373   TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10374   TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10375
10376   TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10377   TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10378   TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10379   TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10380   TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10381   TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10382 #endif
10383
10384   TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10385   TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10386   TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10387   TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10388   TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10389
10390   TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10391   TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10392   TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10393   TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10394   TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10395
10396 # if LDBL_MANT_DIG > 100
10397   TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10398   TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10399   TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10400   TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10401   TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10402   TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10403
10404   TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10405   TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10406   TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10407   TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10408   TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10409   TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10410 #endif
10411
10412   TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10413   TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10414   TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10415   TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10416   TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10417
10418   TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10419   TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10420   TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10421   TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10422   TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10423
10424 # if LDBL_MANT_DIG > 100
10425   TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10426   TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10427   TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10428   TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10429   TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10430   TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10431   TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10432   TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10433   TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10434   TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10435   TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10436   TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10437 # endif
10438 #endif
10439
10440   END (llrint);
10441 }
10442
10443 static void
10444 llrint_test_tonearest (void)
10445 {
10446   int save_round_mode;
10447   START (llrint_tonearest);
10448
10449   save_round_mode = fegetround ();
10450
10451   if (!fesetround (FE_TONEAREST))
10452     {
10453       TEST_f_L (llrint, 0.0, 0);
10454       TEST_f_L (llrint, minus_zero, 0);
10455       TEST_f_L (llrint, 0.2L, 0);
10456       TEST_f_L (llrint, -0.2L, 0);
10457
10458       TEST_f_L (llrint, 1.4L, 1);
10459       TEST_f_L (llrint, -1.4L, -1);
10460
10461       TEST_f_L (llrint, 8388600.3L, 8388600);
10462       TEST_f_L (llrint, -8388600.3L, -8388600);
10463
10464       TEST_f_l (llrint, 1071930.0008, 1071930);
10465
10466       /* Test boundary conditions.  */
10467       /* 0x1FFFFF */
10468       TEST_f_L (llrint, 2097151.0,2097151LL);
10469       /* 0x800000 */
10470       TEST_f_L (llrint, 8388608.0, 8388608LL);
10471       /* 0x1000000 */
10472       TEST_f_L (llrint, 16777216.0, 16777216LL);
10473       /* 0x20000000000 */
10474       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10475       /* 0x40000000000 */
10476       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10477       /* 0x1000000000000 */
10478       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10479       /* 0x10000000000000 */
10480       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10481       /* 0x10000080000000 */
10482       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10483       /* 0x20000000000000 */
10484       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10485       /* 0x80000000000000 */
10486       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10487       /* 0x100000000000000 */
10488       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10489 #ifdef TEST_LDOUBLE
10490       /* The input can only be represented in long double.  */
10491       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10492       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10493       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10494       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10495       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10496
10497       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10498       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10499       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10500       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10501       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10502
10503 # if LDBL_MANT_DIG > 100
10504       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10505       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10506       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10507       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10508       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10509       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10510
10511       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10512       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10513       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10514       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10515       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10516       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10517 #endif
10518
10519       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10520       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10521       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10522       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10523       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10524
10525       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10526       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10527       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10528       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10529       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10530
10531 # if LDBL_MANT_DIG > 100
10532       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10533       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10534       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10535       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10536       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10537       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10538
10539       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10540       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10541       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10542       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10543       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10544       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10545 #endif
10546
10547       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10548       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10549       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10550       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10551       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10552
10553       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10554       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10555       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10556       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10557       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10558
10559 # if LDBL_MANT_DIG > 100
10560       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10561       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10562       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10563       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10564       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10565       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10566       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10567       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10568       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10569       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10570       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10571       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10572 # endif
10573 #endif
10574     }
10575
10576   fesetround (save_round_mode);
10577
10578   END (llrint_tonearest);
10579 }
10580
10581 static void
10582 llrint_test_towardzero (void)
10583 {
10584   int save_round_mode;
10585   START (llrint_towardzero);
10586
10587   save_round_mode = fegetround ();
10588
10589   if (!fesetround (FE_TOWARDZERO))
10590     {
10591       TEST_f_L (llrint, 0.0, 0);
10592       TEST_f_L (llrint, minus_zero, 0);
10593       TEST_f_L (llrint, 0.2L, 0);
10594       TEST_f_L (llrint, -0.2L, 0);
10595
10596       TEST_f_L (llrint, 1.4L, 1);
10597       TEST_f_L (llrint, -1.4L, -1);
10598
10599       TEST_f_L (llrint, 8388600.3L, 8388600);
10600       TEST_f_L (llrint, -8388600.3L, -8388600);
10601
10602       TEST_f_l (llrint, 1071930.0008, 1071930);
10603
10604       /* Test boundary conditions.  */
10605       /* 0x1FFFFF */
10606       TEST_f_L (llrint, 2097151.0,2097151LL);
10607       /* 0x800000 */
10608       TEST_f_L (llrint, 8388608.0, 8388608LL);
10609       /* 0x1000000 */
10610       TEST_f_L (llrint, 16777216.0, 16777216LL);
10611       /* 0x20000000000 */
10612       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10613       /* 0x40000000000 */
10614       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10615       /* 0x1000000000000 */
10616       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10617       /* 0x10000000000000 */
10618       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10619       /* 0x10000080000000 */
10620       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10621       /* 0x20000000000000 */
10622       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10623       /* 0x80000000000000 */
10624       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10625       /* 0x100000000000000 */
10626       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10627 #ifdef TEST_LDOUBLE
10628       /* The input can only be represented in long double.  */
10629       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10630       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10631       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10632       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10633       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10634
10635       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10636       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10637       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10638       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10639       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10640
10641 # if LDBL_MANT_DIG > 100
10642       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10643       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10644       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10645       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10646       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10647       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10648
10649       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10650       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10651       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10652       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10653       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10654       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10655 #endif
10656
10657       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10658       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10659       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10660       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10661       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10662
10663       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10664       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10665       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10666       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10667       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10668
10669 # if LDBL_MANT_DIG > 100
10670       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10671       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10672       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10673       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10674       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10675       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10676
10677       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10678       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10679       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10680       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10681       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10682       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10683 #endif
10684
10685       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10686       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10687       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10688       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10689       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10690
10691       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10692       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10693       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10694       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10695       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10696
10697 # if LDBL_MANT_DIG > 100
10698       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10699       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10700       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10701       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10702       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10703       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10704       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10705       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10706       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10707       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10708       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10709       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10710 # endif
10711 #endif
10712     }
10713
10714   fesetround (save_round_mode);
10715
10716   END (llrint_towardzero);
10717 }
10718
10719 static void
10720 llrint_test_downward (void)
10721 {
10722   int save_round_mode;
10723   START (llrint_downward);
10724
10725   save_round_mode = fegetround ();
10726
10727   if (!fesetround (FE_DOWNWARD))
10728     {
10729       TEST_f_L (llrint, 0.0, 0);
10730       TEST_f_L (llrint, minus_zero, 0);
10731       TEST_f_L (llrint, 0.2L, 0);
10732       TEST_f_L (llrint, -0.2L, -1);
10733
10734       TEST_f_L (llrint, 1.4L, 1);
10735       TEST_f_L (llrint, -1.4L, -2);
10736
10737       TEST_f_L (llrint, 8388600.3L, 8388600);
10738       TEST_f_L (llrint, -8388600.3L, -8388601);
10739
10740       TEST_f_l (llrint, 1071930.0008, 1071930);
10741
10742       /* Test boundary conditions.  */
10743       /* 0x1FFFFF */
10744       TEST_f_L (llrint, 2097151.0,2097151LL);
10745       /* 0x800000 */
10746       TEST_f_L (llrint, 8388608.0, 8388608LL);
10747       /* 0x1000000 */
10748       TEST_f_L (llrint, 16777216.0, 16777216LL);
10749       /* 0x20000000000 */
10750       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10751       /* 0x40000000000 */
10752       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10753       /* 0x1000000000000 */
10754       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10755       /* 0x10000000000000 */
10756       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10757       /* 0x10000080000000 */
10758       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10759       /* 0x20000000000000 */
10760       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10761       /* 0x80000000000000 */
10762       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10763       /* 0x100000000000000 */
10764       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10765 #ifdef TEST_LDOUBLE
10766       /* The input can only be represented in long double.  */
10767       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL);
10768       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL);
10769       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL);
10770       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL);
10771       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL);
10772
10773       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL);
10774       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL);
10775       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL);
10776       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL);
10777       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL);
10778       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL);
10779
10780       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL);
10781       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370497LL);
10782       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370497LL);
10783       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL);
10784       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL);
10785
10786       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370496LL);
10787       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370497LL);
10788       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370498LL);
10789       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL);
10790       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL);
10791       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL);
10792
10793       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL);
10794       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL);
10795       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL);
10796       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL);
10797       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL);
10798
10799       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL);
10800       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL);
10801       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL);
10802       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL);
10803       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL);
10804       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL);
10805
10806       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL);
10807       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740993LL);
10808       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740993LL);
10809       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL);
10810       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL);
10811
10812       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740992LL);
10813       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740993LL);
10814       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740994LL);
10815       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL);
10816       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL);
10817       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL);
10818
10819       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL);
10820       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL);
10821       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL);
10822       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL);
10823       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL);
10824
10825       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL);
10826       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927937LL);
10827       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927937LL);
10828       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL);
10829       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL);
10830
10831 # if LDBL_MANT_DIG > 100
10832       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL);
10833       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL);
10834       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10835       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10836       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL);
10837       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775807LL);
10838       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L);
10839       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775807LL);
10840       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL);
10841       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL);
10842       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10843       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10844 # endif
10845 #endif
10846     }
10847
10848   fesetround (save_round_mode);
10849
10850   END (llrint_downward);
10851 }
10852
10853 static void
10854 llrint_test_upward (void)
10855 {
10856   int save_round_mode;
10857   START (llrint_upward);
10858
10859   save_round_mode = fegetround ();
10860
10861   if (!fesetround (FE_UPWARD))
10862     {
10863       TEST_f_L (llrint, 0.0, 0);
10864       TEST_f_L (llrint, minus_zero, 0);
10865       TEST_f_L (llrint, 0.2L, 1);
10866       TEST_f_L (llrint, -0.2L, 0);
10867
10868       TEST_f_L (llrint, 1.4L, 2);
10869       TEST_f_L (llrint, -1.4L, -1);
10870
10871       TEST_f_L (llrint, 8388600.3L, 8388601);
10872       TEST_f_L (llrint, -8388600.3L, -8388600);
10873 #ifndef TEST_FLOAT
10874       TEST_f_l (llrint, 1071930.0008, 1071931);
10875 #endif
10876       /* Test boundary conditions.  */
10877       /* 0x1FFFFF */
10878       TEST_f_L (llrint, 2097151.0,2097151LL);
10879       /* 0x800000 */
10880       TEST_f_L (llrint, 8388608.0, 8388608LL);
10881       /* 0x1000000 */
10882       TEST_f_L (llrint, 16777216.0, 16777216LL);
10883       /* 0x20000000000 */
10884       TEST_f_L (llrint, 2199023255552.0, 2199023255552LL);
10885       /* 0x40000000000 */
10886       TEST_f_L (llrint, 4398046511104.0, 4398046511104LL);
10887       /* 0x1000000000000 */
10888       TEST_f_L (llrint, 281474976710656.0, 281474976710656LL);
10889       /* 0x10000000000000 */
10890       TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL);
10891       /* 0x10000080000000 */
10892       TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL);
10893       /* 0x20000000000000 */
10894       TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL);
10895       /* 0x80000000000000 */
10896       TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL);
10897       /* 0x100000000000000 */
10898       TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL);
10899 #ifdef TEST_LDOUBLE
10900       /* The input can only be represented in long double.  */
10901       TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL);
10902       TEST_f_L (llrint, 4503599627370496.25L, 4503599627370497LL);
10903       TEST_f_L (llrint, 4503599627370496.5L, 4503599627370497LL);
10904       TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL);
10905       TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL);
10906
10907       TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370496LL);
10908       TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370497LL);
10909       TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370498LL);
10910       TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL);
10911       TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL);
10912       TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL);
10913
10914       TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL);
10915       TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL);
10916       TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL);
10917       TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL);
10918       TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL);
10919
10920       TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL);
10921       TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL);
10922       TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL);
10923       TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL);
10924       TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL);
10925       TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL);
10926
10927       TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL);
10928       TEST_f_L (llrint, 9007199254740992.25L, 9007199254740993LL);
10929       TEST_f_L (llrint, 9007199254740992.5L, 9007199254740993LL);
10930       TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL);
10931       TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL);
10932
10933       TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740992LL);
10934       TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740993LL);
10935       TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740994LL);
10936       TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL);
10937       TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL);
10938       TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL);
10939
10940       TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL);
10941       TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL);
10942       TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL);
10943       TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL);
10944       TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL);
10945
10946       TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL);
10947       TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL);
10948       TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL);
10949       TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL);
10950       TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL);
10951       TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL);
10952
10953       TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL);
10954       TEST_f_L (llrint, 72057594037927936.25L, 72057594037927937LL);
10955       TEST_f_L (llrint, 72057594037927936.5L, 72057594037927937LL);
10956       TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL);
10957       TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL);
10958
10959       TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL);
10960       TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL);
10961       TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL);
10962       TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL);
10963       TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL);
10964
10965 # if LDBL_MANT_DIG > 100
10966       TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL);
10967       TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL);
10968       TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL);
10969       TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL);
10970       TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775807LL);
10971       TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL);
10972       TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775807L);
10973       TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL);
10974       TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL);
10975       TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL);
10976       TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL);
10977       TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL);
10978 # endif
10979 #endif
10980     }
10981
10982   fesetround (save_round_mode);
10983
10984   END (llrint_upward);
10985 }
10986
10987
10988 static const struct test_f_f_data log_test_data[] =
10989   {
10990     START_DATA (log),
10991     TEST_f_f (log, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
10992     TEST_f_f (log, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
10993
10994     TEST_f_f (log, 1, 0),
10995
10996     TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION),
10997     TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION),
10998     TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION),
10999     TEST_f_f (log, plus_infty, plus_infty),
11000     TEST_f_f (log, qnan_value, qnan_value),
11001
11002     TEST_f_f (log, M_El, 1),
11003     TEST_f_f (log, M_1_DIV_El, -1),
11004     TEST_f_f (log, 2, M_LN2l),
11005     TEST_f_f (log, 10, M_LN10l),
11006     TEST_f_f (log, 0.75L, -0.287682072451780927439219005993827432L),
11007     END_DATA (log)
11008   };
11009
11010 static void
11011 log_test (void)
11012 {
11013   errno = 0;
11014   FUNC(log) (1);
11015   if (errno == ENOSYS)
11016     /* Function not implemented.  */
11017     return;
11018   START (log);
11019   RUN_TEST_LOOP_f_f (log, log_test_data, );
11020   END (log);
11021 }
11022
11023
11024 static const struct test_f_f_data log10_test_data[] =
11025   {
11026     START_DATA (log10),
11027     TEST_f_f (log10, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11028     TEST_f_f (log10, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11029
11030     TEST_f_f (log10, 1, 0),
11031
11032     /* log10 (x) == qNaN plus invalid exception if x < 0.  */
11033     TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION),
11034     TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION),
11035     TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION),
11036
11037     TEST_f_f (log10, plus_infty, plus_infty),
11038     TEST_f_f (log10, qnan_value, qnan_value),
11039
11040     TEST_f_f (log10, 0.1L, -1),
11041     TEST_f_f (log10, 10.0, 1),
11042     TEST_f_f (log10, 100.0, 2),
11043     TEST_f_f (log10, 10000.0, 4),
11044     TEST_f_f (log10, M_El, M_LOG10El),
11045     TEST_f_f (log10, 0.75L, -0.124938736608299953132449886193870744L),
11046     END_DATA (log10)
11047   };
11048
11049 static void
11050 log10_test (void)
11051 {
11052   errno = 0;
11053   FUNC(log10) (1);
11054   if (errno == ENOSYS)
11055     /* Function not implemented.  */
11056     return;
11057
11058   START (log10);
11059   RUN_TEST_LOOP_f_f (log10, log10_test_data, );
11060   END (log10);
11061 }
11062
11063
11064 static const struct test_f_f_data log1p_test_data[] =
11065   {
11066     START_DATA (log1p),
11067     TEST_f_f (log1p, 0, 0),
11068     TEST_f_f (log1p, minus_zero, minus_zero),
11069
11070     TEST_f_f (log1p, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11071     TEST_f_f (log1p, -2, qnan_value, INVALID_EXCEPTION),
11072     TEST_f_f (log1p, -max_value, qnan_value, INVALID_EXCEPTION),
11073     TEST_f_f (log1p, minus_infty, qnan_value, INVALID_EXCEPTION),
11074
11075     TEST_f_f (log1p, plus_infty, plus_infty),
11076     TEST_f_f (log1p, qnan_value, qnan_value),
11077
11078     TEST_f_f (log1p, M_El - 1.0, 1),
11079
11080     TEST_f_f (log1p, -0.25L, -0.287682072451780927439219005993827432L),
11081     TEST_f_f (log1p, -0.875, -2.07944154167983592825169636437452970L),
11082     END_DATA (log1p)
11083   };
11084
11085 static void
11086 log1p_test (void)
11087 {
11088   errno = 0;
11089   FUNC(log1p) (0);
11090   if (errno == ENOSYS)
11091     /* Function not implemented.  */
11092     return;
11093
11094   START (log1p);
11095   RUN_TEST_LOOP_f_f (log1p, log1p_test_data, );
11096   END (log1p);
11097 }
11098
11099
11100 static const struct test_f_f_data log2_test_data[] =
11101   {
11102     START_DATA (log2),
11103     TEST_f_f (log2, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11104     TEST_f_f (log2, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11105
11106     TEST_f_f (log2, 1, 0),
11107
11108     TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION),
11109     TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION),
11110     TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION),
11111
11112     TEST_f_f (log2, plus_infty, plus_infty),
11113     TEST_f_f (log2, qnan_value, qnan_value),
11114
11115     TEST_f_f (log2, M_El, M_LOG2El),
11116     TEST_f_f (log2, 2.0, 1),
11117     TEST_f_f (log2, 16.0, 4),
11118     TEST_f_f (log2, 256.0, 8),
11119     TEST_f_f (log2, 0.75L, -.415037499278843818546261056052183492L),
11120     END_DATA (log2)
11121   };
11122
11123 static void
11124 log2_test (void)
11125 {
11126   errno = 0;
11127   FUNC(log2) (1);
11128   if (errno == ENOSYS)
11129     /* Function not implemented.  */
11130     return;
11131
11132   START (log2);
11133   RUN_TEST_LOOP_f_f (log2, log2_test_data, );
11134   END (log2);
11135 }
11136
11137
11138 static const struct test_f_f_data logb_test_data[] =
11139   {
11140     START_DATA (logb),
11141     TEST_f_f (logb, plus_infty, plus_infty),
11142     TEST_f_f (logb, minus_infty, plus_infty),
11143
11144     TEST_f_f (logb, 0, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11145
11146     TEST_f_f (logb, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
11147     TEST_f_f (logb, qnan_value, qnan_value),
11148
11149     TEST_f_f (logb, 1, 0),
11150     TEST_f_f (logb, M_El, 1),
11151     TEST_f_f (logb, 1024, 10),
11152     TEST_f_f (logb, -2000, 10),
11153
11154     TEST_f_f (logb, 0x0.1p-127, -131),
11155     TEST_f_f (logb, 0x0.01p-127, -135),
11156     TEST_f_f (logb, 0x0.011p-127, -135),
11157 #ifndef TEST_FLOAT
11158     TEST_f_f (logb, 0x0.8p-1022, -1023),
11159     TEST_f_f (logb, 0x0.1p-1022, -1026),
11160     TEST_f_f (logb, 0x0.00111p-1022, -1034),
11161     TEST_f_f (logb, 0x0.00001p-1022, -1042),
11162     TEST_f_f (logb, 0x0.000011p-1022, -1042),
11163     TEST_f_f (logb, 0x0.0000000000001p-1022, -1074),
11164 #endif
11165 #if defined TEST_LDOUBLE && LDBL_MIN_EXP - LDBL_MANT_DIG <= -16400
11166     TEST_f_f (logb, 0x1p-16400L, -16400),
11167     TEST_f_f (logb, 0x.00000000001p-16382L, -16426),
11168 #endif
11169     END_DATA (logb)
11170   };
11171
11172 static void
11173 logb_test (void)
11174 {
11175   START (logb);
11176   RUN_TEST_LOOP_f_f (logb, logb_test_data, );
11177   END (logb);
11178 }
11179
11180 static const struct test_f_f_data logb_downward_test_data[] =
11181   {
11182     START_DATA (logb_downward),
11183     /* IEEE 754-2008 says (section 5.3.3) that "logB(1) is +0.".  Libm
11184        should not return -0 from logb in any rounding mode.  PowerPC32 has
11185        failed with this test for power4 logb (and logbl on all PowerPC
11186        platforms) in the past due to instruction selection.  GCC PR 52775
11187        provides the availability of the fcfid insn in 32-bit mode which
11188        eliminates the use of fsub in this instance and prevents the negative
11189        signed 0.0.  */
11190
11191     /* BZ #887  */
11192     TEST_f_f (logb, 1.000e+0, plus_zero),
11193     END_DATA (logb_downward)
11194   };
11195
11196 static void
11197 logb_test_downward (void)
11198 {
11199   errno = 0;
11200
11201   FUNC(logb) (0);
11202   if (errno == ENOSYS)
11203     /* Function not implemented.  */
11204     return;
11205
11206   START (logb_downward);
11207   RUN_TEST_LOOP_f_f (logb, logb_downward_test_data, FE_DOWNWARD);
11208   END (logb_downward);
11209 }
11210
11211 static void
11212 lround_test (void)
11213 {
11214   /* TODO: missing +/-Inf as well as qNaN tests.  */
11215
11216   START (lround);
11217
11218   TEST_f_l (lround, 0, 0);
11219   TEST_f_l (lround, minus_zero, 0);
11220   TEST_f_l (lround, 0.2L, 0.0);
11221   TEST_f_l (lround, -0.2L, 0);
11222   TEST_f_l (lround, 0.5, 1);
11223   TEST_f_l (lround, -0.5, -1);
11224   TEST_f_l (lround, 0.8L, 1);
11225   TEST_f_l (lround, -0.8L, -1);
11226   TEST_f_l (lround, 1.5, 2);
11227   TEST_f_l (lround, -1.5, -2);
11228   TEST_f_l (lround, 22514.5, 22515);
11229   TEST_f_l (lround, -22514.5, -22515);
11230   TEST_f_l (lround, 1071930.0008, 1071930);
11231 #ifndef TEST_FLOAT
11232   TEST_f_l (lround, 1073741824.01, 1073741824);
11233 # if LONG_MAX > 281474976710656
11234   TEST_f_l (lround, 281474976710656.025, 281474976710656);
11235   TEST_f_l (lround, 18014398509481974, 18014398509481974);
11236 # endif
11237   TEST_f_l (lround, 2097152.5, 2097153);
11238   TEST_f_l (lround, -2097152.5, -2097153);
11239   /* nextafter(0.5,-1)  */
11240   TEST_f_l (lround, 0x1.fffffffffffffp-2, 0);
11241   /* nextafter(-0.5,1)  */
11242   TEST_f_l (lround, -0x1.fffffffffffffp-2, 0);
11243 #else
11244   /* nextafter(0.5,-1)  */
11245   TEST_f_l (lround, 0x1.fffffp-2, 0);
11246   /* nextafter(-0.5,1)  */
11247   TEST_f_l (lround, -0x1.fffffp-2, 0);
11248   TEST_f_l (lround, 0x1.fffffep+23, 16777215);
11249   TEST_f_l (lround, -0x1.fffffep+23, -16777215);
11250 #endif
11251   END (lround);
11252 }
11253
11254
11255 static void
11256 llround_test (void)
11257 {
11258   /* TODO: missing +/-Inf as well as qNaN tests.  */
11259
11260   START (llround);
11261
11262   TEST_f_L (llround, 0, 0);
11263   TEST_f_L (llround, minus_zero, 0);
11264   TEST_f_L (llround, 0.2L, 0.0);
11265   TEST_f_L (llround, -0.2L, 0);
11266   TEST_f_L (llround, 0.5, 1);
11267   TEST_f_L (llround, -0.5, -1);
11268   TEST_f_L (llround, 0.8L, 1);
11269   TEST_f_L (llround, -0.8L, -1);
11270   TEST_f_L (llround, 1.5, 2);
11271   TEST_f_L (llround, -1.5, -2);
11272   TEST_f_L (llround, 22514.5, 22515);
11273   TEST_f_L (llround, -22514.5, -22515);
11274   TEST_f_l (llround, 1071930.0008, 1071930);
11275 #ifndef TEST_FLOAT
11276   TEST_f_L (llround, 2097152.5, 2097153);
11277   TEST_f_L (llround, -2097152.5, -2097153);
11278   TEST_f_L (llround, 34359738368.5, 34359738369ll);
11279   TEST_f_L (llround, -34359738368.5, -34359738369ll);
11280   TEST_f_L (llround, -3.65309740835E17, -365309740835000000LL);
11281 #endif
11282
11283   /* Test boundary conditions.  */
11284   /* 0x1FFFFF */
11285   TEST_f_L (llround, 2097151.0, 2097151LL);
11286   /* 0x800000 */
11287   TEST_f_L (llround, 8388608.0, 8388608LL);
11288   /* 0x1000000 */
11289   TEST_f_L (llround, 16777216.0, 16777216LL);
11290   /* 0x20000000000 */
11291   TEST_f_L (llround, 2199023255552.0, 2199023255552LL);
11292   /* 0x40000000000 */
11293   TEST_f_L (llround, 4398046511104.0, 4398046511104LL);
11294   /* 0x1000000000000 */
11295   TEST_f_L (llround, 281474976710656.0, 281474976710656LL);
11296   /* 0x10000000000000 */
11297   TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL);
11298   /* 0x10000080000000 */
11299   TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL);
11300   /* 0x20000000000000 */
11301   TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL);
11302   /* 0x80000000000000 */
11303   TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL);
11304   /* 0x100000000000000 */
11305   TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL);
11306
11307 #ifndef TEST_FLOAT
11308   /* 0x100000000 */
11309   TEST_f_L (llround, 4294967295.5, 4294967296LL);
11310   /* 0x200000000 */
11311   TEST_f_L (llround, 8589934591.5, 8589934592LL);
11312
11313   /* nextafter(0.5,-1)  */
11314   TEST_f_L (llround, 0x1.fffffffffffffp-2, 0);
11315   /* nextafter(-0.5,1)  */
11316   TEST_f_L (llround, -0x1.fffffffffffffp-2, 0);
11317   /* On PowerPC an exponent of '52' is the largest incrementally
11318    * representable sequence of whole-numbers in the 'double' range.  We test
11319    * lround to make sure that a guard bit set during the lround operation
11320    * hasn't forced an erroneous shift giving us an incorrect result.  The odd
11321    * numbers between +-(2^52+1 and 2^53-1) are affected since they have the
11322    * rightmost bit set.  */
11323   /* +-(2^52+1)  */
11324   TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL);
11325   TEST_f_L (llround, -0x1.0000000000001p+52,-4503599627370497LL);
11326   /* +-(2^53-1): Input is the last (positive and negative) incrementally
11327    * representable whole-number in the 'double' range that might round
11328    * erroneously.  */
11329   TEST_f_L (llround, 0x1.fffffffffffffp+52, 9007199254740991LL);
11330   TEST_f_L (llround, -0x1.fffffffffffffp+52, -9007199254740991LL);
11331 #else
11332   /* nextafter(0.5,-1)  */
11333   TEST_f_L (llround, 0x1.fffffep-2, 0);
11334   /* nextafter(-0.5,1)  */
11335   TEST_f_L (llround, -0x1.fffffep-2, 0);
11336   /* As above, on PowerPC an exponent of '23' is the largest incrementally
11337    * representable sequence of whole-numbers in the 'float' range.
11338    * Likewise, numbers between +-(2^23+1 and 2^24-1) are affected.  */
11339   TEST_f_L (llround, 0x1.000002p+23,8388609);
11340   TEST_f_L (llround, -0x1.000002p+23,-8388609);
11341   TEST_f_L (llround, 0x1.fffffep+23, 16777215);
11342   TEST_f_L (llround, -0x1.fffffep+23, -16777215);
11343 #endif
11344
11345
11346 #ifdef TEST_LDOUBLE
11347   /* The input can only be represented in long double.  */
11348   TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL);
11349   TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL);
11350   TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL);
11351   TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL);
11352   TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL);
11353
11354 # if LDBL_MANT_DIG > 100
11355   TEST_f_L (llround, 4503599627370495.4999999999999L, 4503599627370495LL);
11356   TEST_f_L (llround, 4503599627370496.4999999999999L, 4503599627370496LL);
11357   TEST_f_L (llround, 4503599627370497.4999999999999L, 4503599627370497LL);
11358   TEST_f_L (llround, 4503599627370494.5000000000001L, 4503599627370495LL);
11359   TEST_f_L (llround, 4503599627370495.5000000000001L, 4503599627370496LL);
11360   TEST_f_L (llround, 4503599627370496.5000000000001L, 4503599627370497LL);
11361
11362   TEST_f_L (llround, -4503599627370495.4999999999999L, -4503599627370495LL);
11363   TEST_f_L (llround, -4503599627370496.4999999999999L, -4503599627370496LL);
11364   TEST_f_L (llround, -4503599627370497.4999999999999L, -4503599627370497LL);
11365   TEST_f_L (llround, -4503599627370494.5000000000001L, -4503599627370495LL);
11366   TEST_f_L (llround, -4503599627370495.5000000000001L, -4503599627370496LL);
11367   TEST_f_L (llround, -4503599627370496.5000000000001L, -4503599627370497LL);
11368 # endif
11369
11370   TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL);
11371   TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL);
11372   TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL);
11373   TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL);
11374   TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL);
11375
11376   TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL);
11377   TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL);
11378   TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL);
11379   TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL);
11380   TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL);
11381
11382 # if LDBL_MANT_DIG > 100
11383   TEST_f_L (llround, 9007199254740991.4999999999999L, 9007199254740991LL);
11384   TEST_f_L (llround, 9007199254740992.4999999999999L, 9007199254740992LL);
11385   TEST_f_L (llround, 9007199254740993.4999999999999L, 9007199254740993LL);
11386   TEST_f_L (llround, 9007199254740991.5000000000001L, 9007199254740992LL);
11387   TEST_f_L (llround, 9007199254740992.5000000000001L, 9007199254740993LL);
11388   TEST_f_L (llround, 9007199254740993.5000000000001L, 9007199254740994LL);
11389
11390   TEST_f_L (llround, -9007199254740991.4999999999999L, -9007199254740991LL);
11391   TEST_f_L (llround, -9007199254740992.4999999999999L, -9007199254740992LL);
11392   TEST_f_L (llround, -9007199254740993.4999999999999L, -9007199254740993LL);
11393   TEST_f_L (llround, -9007199254740991.5000000000001L, -9007199254740992LL);
11394   TEST_f_L (llround, -9007199254740992.5000000000001L, -9007199254740993LL);
11395   TEST_f_L (llround, -9007199254740993.5000000000001L, -9007199254740994LL);
11396 # endif
11397
11398   TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL);
11399   TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL);
11400   TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL);
11401   TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL);
11402   TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL);
11403
11404   TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL);
11405   TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL);
11406   TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL);
11407   TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL);
11408   TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL);
11409
11410   TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL);
11411   TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL);
11412   TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL);
11413   TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL);
11414   TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL);
11415
11416   TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL);
11417   TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL);
11418   TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL);
11419   TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL);
11420   TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL);
11421   TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL);
11422 #endif
11423
11424   END (llround);
11425 }
11426
11427 static void
11428 modf_test (void)
11429 {
11430   FLOAT x;
11431
11432   START (modf);
11433
11434   TEST_fF_f1 (modf, plus_infty, 0, plus_infty);
11435   TEST_fF_f1 (modf, minus_infty, minus_zero, minus_infty);
11436   TEST_fF_f1 (modf, qnan_value, qnan_value, qnan_value);
11437   TEST_fF_f1 (modf, 0, 0, 0);
11438   TEST_fF_f1 (modf, 1.5, 0.5, 1);
11439   TEST_fF_f1 (modf, 2.5, 0.5, 2);
11440   TEST_fF_f1 (modf, -2.5, -0.5, -2);
11441   TEST_fF_f1 (modf, 20, 0, 20);
11442   TEST_fF_f1 (modf, 21, 0, 21);
11443   TEST_fF_f1 (modf, 89.5, 0.5, 89);
11444
11445   END (modf);
11446 }
11447
11448
11449 static const struct test_f_f_data nearbyint_test_data[] =
11450   {
11451     START_DATA (nearbyint),
11452
11453     TEST_f_f (nearbyint, 0.0, 0.0),
11454     TEST_f_f (nearbyint, minus_zero, minus_zero),
11455     TEST_f_f (nearbyint, plus_infty, plus_infty),
11456     TEST_f_f (nearbyint, minus_infty, minus_infty),
11457     TEST_f_f (nearbyint, qnan_value, qnan_value),
11458
11459     /* Subnormal values */
11460     TEST_f_f (nearbyint, -8.98847e+307, -8.98847e+307),
11461     TEST_f_f (nearbyint, -4.45015e-308, minus_zero),
11462
11463     /* Default rounding mode is round to nearest.  */
11464     TEST_f_f (nearbyint, 0.5, 0.0),
11465     TEST_f_f (nearbyint, 1.5, 2.0),
11466     TEST_f_f (nearbyint, -0.5, minus_zero),
11467     TEST_f_f (nearbyint, -1.5, -2.0),
11468
11469     TEST_f_f (nearbyint, 262144.75, 262145.0),
11470     TEST_f_f (nearbyint, 262142.75, 262143.0),
11471     TEST_f_f (nearbyint, 524286.75, 524287.0),
11472     TEST_f_f (nearbyint, 524288.75, 524289.0),
11473
11474     TEST_f_f (nearbyint, 1048576.75, 1048577.0),
11475     TEST_f_f (nearbyint, 2097152.75, 2097153.0),
11476     TEST_f_f (nearbyint, 2492472.75, 2492473.0),
11477     TEST_f_f (nearbyint, 2886220.75, 2886221.0),
11478     TEST_f_f (nearbyint, 3058792.75, 3058793.0),
11479     TEST_f_f (nearbyint, -1048576.75, -1048577.0),
11480     TEST_f_f (nearbyint, -2097152.75, -2097153.0),
11481     TEST_f_f (nearbyint, -2492472.75, -2492473.0),
11482     TEST_f_f (nearbyint, -2886220.75, -2886221.0),
11483     TEST_f_f (nearbyint, -3058792.75, -3058793.0),
11484 #ifndef TEST_FLOAT
11485     TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0),
11486     TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0),
11487     TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0),
11488     TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0),
11489     TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0),
11490     TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0),
11491     TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0),
11492     TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0),
11493     TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0),
11494     TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0),
11495 #endif
11496
11497     END_DATA (nearbyint)
11498   };
11499
11500 static void
11501 nearbyint_test (void)
11502 {
11503   START (nearbyint);
11504   RUN_TEST_LOOP_f_f (nearbyint, nearbyint_test_data, );
11505   END (nearbyint);
11506 }
11507
11508 static const struct test_ff_f_data nextafter_test_data[] =
11509   {
11510     START_DATA (nextafter),
11511
11512     TEST_ff_f (nextafter, 0, 0, 0),
11513     TEST_ff_f (nextafter, minus_zero, 0, 0),
11514     TEST_ff_f (nextafter, 0, minus_zero, minus_zero),
11515     TEST_ff_f (nextafter, minus_zero, minus_zero, minus_zero),
11516
11517     TEST_ff_f (nextafter, 9, 9, 9),
11518     TEST_ff_f (nextafter, -9, -9, -9),
11519     TEST_ff_f (nextafter, plus_infty, plus_infty, plus_infty),
11520     TEST_ff_f (nextafter, minus_infty, minus_infty, minus_infty),
11521
11522     TEST_ff_f (nextafter, qnan_value, 1.1L, qnan_value),
11523     TEST_ff_f (nextafter, 1.1L, qnan_value, qnan_value),
11524     TEST_ff_f (nextafter, qnan_value, qnan_value, qnan_value),
11525
11526     TEST_ff_f (nextafter, max_value, plus_infty, plus_infty, OVERFLOW_EXCEPTION),
11527     TEST_ff_f (nextafter, -max_value, minus_infty, minus_infty, OVERFLOW_EXCEPTION),
11528
11529 #ifdef TEST_LDOUBLE
11530     // XXX Enable once gcc is fixed.
11531     //TEST_ff_f (nextafter, 0x0.00000040000000000000p-16385L, -0.1L, 0x0.0000003ffffffff00000p-16385L),
11532 #endif
11533
11534     /* XXX We need the hexadecimal FP number representation here for further
11535        tests.  */
11536     END_DATA (nextafter)
11537   };
11538
11539 static void
11540 nextafter_test (void)
11541 {
11542
11543   START (nextafter);
11544   RUN_TEST_LOOP_ff_f (nextafter, nextafter_test_data, );
11545   END (nextafter);
11546 }
11547
11548
11549 static const struct test_ff_f_data_nexttoward nexttoward_test_data[] =
11550   {
11551     START_DATA (nexttoward),
11552     TEST_ff_f (nexttoward, 0, 0, 0),
11553     TEST_ff_f (nexttoward, minus_zero, 0, 0),
11554     TEST_ff_f (nexttoward, 0, minus_zero, minus_zero),
11555     TEST_ff_f (nexttoward, minus_zero, minus_zero, minus_zero),
11556
11557     TEST_ff_f (nexttoward, 9, 9, 9),
11558     TEST_ff_f (nexttoward, -9, -9, -9),
11559     TEST_ff_f (nexttoward, plus_infty, plus_infty, plus_infty),
11560     TEST_ff_f (nexttoward, minus_infty, minus_infty, minus_infty),
11561
11562     TEST_ff_f (nexttoward, qnan_value, 1.1L, qnan_value),
11563     TEST_ff_f (nexttoward, 1.1L, qnan_value, qnan_value),
11564     TEST_ff_f (nexttoward, qnan_value, qnan_value, qnan_value),
11565
11566 #ifdef TEST_FLOAT
11567     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.000002p0),
11568     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.000002p0),
11569     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.000002p0),
11570     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.ffffffp0),
11571     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.ffffffp0),
11572     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.ffffffp0),
11573     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.000002p0),
11574     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.000002p0),
11575     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.000002p0),
11576     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.ffffffp0),
11577     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.ffffffp0),
11578     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.ffffffp0),
11579     TEST_ff_f (nexttoward, -0x1.3p-145, -0xap-148L, -0x1.4p-145, UNDERFLOW_EXCEPTION),
11580 # if LDBL_MANT_DIG >= 64
11581     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.000002p0),
11582     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.ffffffp0),
11583     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.000002p0),
11584     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.ffffffp0),
11585 # endif
11586 # if LDBL_MANT_DIG >= 106
11587     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.000002p0),
11588     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.ffffffp0),
11589     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.000002p0),
11590     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.ffffffp0),
11591 # endif
11592 # if LDBL_MANT_DIG >= 113
11593     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.000002p0),
11594     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.ffffffp0),
11595     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.000002p0),
11596     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.ffffffp0),
11597 # endif
11598 #endif
11599 #ifdef TEST_DOUBLE
11600     TEST_ff_f (nexttoward, 1.0, 1.1L, 0x1.0000000000001p0),
11601     TEST_ff_f (nexttoward, 1.0, LDBL_MAX, 0x1.0000000000001p0),
11602     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000001p0, 0x1.0000000000001p0),
11603     TEST_ff_f (nexttoward, 1.0, 0.9L, 0x0.fffffffffffff8p0),
11604     TEST_ff_f (nexttoward, 1.0, -LDBL_MAX, 0x0.fffffffffffff8p0),
11605     TEST_ff_f (nexttoward, 1.0, 0x0.fffffffffffff8p0, 0x0.fffffffffffff8p0),
11606     TEST_ff_f (nexttoward, -1.0, -1.1L, -0x1.0000000000001p0),
11607     TEST_ff_f (nexttoward, -1.0, -LDBL_MAX, -0x1.0000000000001p0),
11608     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000001p0, -0x1.0000000000001p0),
11609     TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.fffffffffffff8p0),
11610     TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.fffffffffffff8p0),
11611     TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0),
11612     TEST_ff_f (nexttoward, -1.0, -0x8.00346dc5d6388p-3L, -0x1.0000000000001p0),
11613     TEST_ff_f (nexttoward, 0x1p-1074, 0x1p-1073L, 0x1p-1073, UNDERFLOW_EXCEPTION),
11614 # if LDBL_MANT_DIG >= 64
11615     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.0000000000001p0),
11616     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffff8p0),
11617     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000002p0L, -0x1.0000000000001p0),
11618     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffp0L, -0x0.fffffffffffff8p0),
11619 # endif
11620 # if LDBL_MANT_DIG >= 106
11621     TEST_ff_f (nexttoward, 1.0, 0x1.000000000000000000000000008p0L, 0x1.0000000000001p0),
11622     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffcp0L, 0x0.fffffffffffff8p0),
11623     TEST_ff_f (nexttoward, -1.0, -0x1.000000000000000000000000008p0L, -0x1.0000000000001p0),
11624     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffcp0L, -0x0.fffffffffffff8p0),
11625 # endif
11626 # if LDBL_MANT_DIG >= 113
11627     TEST_ff_f (nexttoward, 1.0, 0x1.0000000000000000000000000001p0L, 0x1.0000000000001p0),
11628     TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffffffffffffff8p0L, 0x0.fffffffffffff8p0),
11629     TEST_ff_f (nexttoward, -1.0, -0x1.0000000000000000000000000001p0L, -0x1.0000000000001p0),
11630     TEST_ff_f (nexttoward, -1.0, -0x0.ffffffffffffffffffffffffffff8p0L, -0x0.fffffffffffff8p0),
11631 # endif
11632 #endif
11633     END_DATA (nexttoward)
11634   };
11635
11636 static void
11637 nexttoward_test (void)
11638 {
11639   START (nexttoward);
11640   RUN_TEST_LOOP_ff_f (nexttoward, nexttoward_test_data, );
11641   END (nexttoward);
11642 }
11643
11644
11645 static const struct test_ff_f_data pow_test_data[] =
11646   {
11647     START_DATA (pow),
11648     TEST_ff_f (pow, 0, 0, 1),
11649     TEST_ff_f (pow, 0, minus_zero, 1),
11650     TEST_ff_f (pow, minus_zero, 0, 1),
11651     TEST_ff_f (pow, minus_zero, minus_zero, 1),
11652
11653     TEST_ff_f (pow, 10, 0, 1),
11654     TEST_ff_f (pow, 10, minus_zero, 1),
11655     TEST_ff_f (pow, -10, 0, 1),
11656     TEST_ff_f (pow, -10, minus_zero, 1),
11657
11658     TEST_ff_f (pow, qnan_value, 0, 1),
11659     TEST_ff_f (pow, qnan_value, minus_zero, 1),
11660
11661 #ifndef TEST_INLINE
11662     TEST_ff_f (pow, 1.1L, plus_infty, plus_infty),
11663     TEST_ff_f (pow, plus_infty, plus_infty, plus_infty),
11664     TEST_ff_f (pow, -1.1L, plus_infty, plus_infty),
11665     TEST_ff_f (pow, minus_infty, plus_infty, plus_infty),
11666
11667     TEST_ff_f (pow, 0.9L, plus_infty, 0),
11668     TEST_ff_f (pow, 1e-7L, plus_infty, 0),
11669     TEST_ff_f (pow, -0.9L, plus_infty, 0),
11670     TEST_ff_f (pow, -1e-7L, plus_infty, 0),
11671
11672     TEST_ff_f (pow, 1.1L, minus_infty, 0),
11673     TEST_ff_f (pow, plus_infty, minus_infty, 0),
11674     TEST_ff_f (pow, -1.1L, minus_infty, 0),
11675     TEST_ff_f (pow, minus_infty, minus_infty, 0),
11676
11677     TEST_ff_f (pow, 0.9L, minus_infty, plus_infty),
11678     TEST_ff_f (pow, 1e-7L, minus_infty, plus_infty),
11679     TEST_ff_f (pow, -0.9L, minus_infty, plus_infty),
11680     TEST_ff_f (pow, -1e-7L, minus_infty, plus_infty),
11681
11682     TEST_ff_f (pow, plus_infty, 1e-7L, plus_infty),
11683     TEST_ff_f (pow, plus_infty, 1, plus_infty),
11684     TEST_ff_f (pow, plus_infty, 1e7L, plus_infty),
11685     TEST_ff_f (pow, plus_infty, min_subnorm_value, plus_infty),
11686
11687     TEST_ff_f (pow, plus_infty, -1e-7L, 0),
11688     TEST_ff_f (pow, plus_infty, -1, 0),
11689     TEST_ff_f (pow, plus_infty, -1e7L, 0),
11690     TEST_ff_f (pow, plus_infty, -min_subnorm_value, 0),
11691
11692     TEST_ff_f (pow, minus_infty, 1, minus_infty),
11693     TEST_ff_f (pow, minus_infty, 11, minus_infty),
11694     TEST_ff_f (pow, minus_infty, 1001, minus_infty),
11695
11696     TEST_ff_f (pow, minus_infty, 2, plus_infty),
11697     TEST_ff_f (pow, minus_infty, 12, plus_infty),
11698     TEST_ff_f (pow, minus_infty, 1002, plus_infty),
11699     TEST_ff_f (pow, minus_infty, 0.1L, plus_infty),
11700     TEST_ff_f (pow, minus_infty, 1.1L, plus_infty),
11701     TEST_ff_f (pow, minus_infty, 11.1L, plus_infty),
11702     TEST_ff_f (pow, minus_infty, 1001.1L, plus_infty),
11703     TEST_ff_f (pow, minus_infty, min_subnorm_value, plus_infty),
11704
11705     TEST_ff_f (pow, minus_infty, -1, minus_zero),
11706     TEST_ff_f (pow, minus_infty, -11, minus_zero),
11707     TEST_ff_f (pow, minus_infty, -1001, minus_zero),
11708
11709     TEST_ff_f (pow, minus_infty, -2, 0),
11710     TEST_ff_f (pow, minus_infty, -12, 0),
11711     TEST_ff_f (pow, minus_infty, -1002, 0),
11712     TEST_ff_f (pow, minus_infty, -0.1L, 0),
11713     TEST_ff_f (pow, minus_infty, -1.1L, 0),
11714     TEST_ff_f (pow, minus_infty, -11.1L, 0),
11715     TEST_ff_f (pow, minus_infty, -1001.1L, 0),
11716     TEST_ff_f (pow, minus_infty, -min_subnorm_value, 0),
11717 #endif
11718
11719     TEST_ff_f (pow, qnan_value, qnan_value, qnan_value),
11720     TEST_ff_f (pow, 0, qnan_value, qnan_value),
11721     TEST_ff_f (pow, 1, qnan_value, 1),
11722     TEST_ff_f (pow, -1, qnan_value, qnan_value),
11723     TEST_ff_f (pow, qnan_value, 1, qnan_value),
11724     TEST_ff_f (pow, qnan_value, -1, qnan_value),
11725
11726     /* pow (x, qNaN) == qNaN.  */
11727     TEST_ff_f (pow, 3.0, qnan_value, qnan_value),
11728     TEST_ff_f (pow, minus_zero, qnan_value, qnan_value),
11729     TEST_ff_f (pow, plus_infty, qnan_value, qnan_value),
11730     TEST_ff_f (pow, -3.0, qnan_value, qnan_value),
11731     TEST_ff_f (pow, minus_infty, qnan_value, qnan_value),
11732
11733     TEST_ff_f (pow, qnan_value, 3.0, qnan_value),
11734     TEST_ff_f (pow, qnan_value, -3.0, qnan_value),
11735     TEST_ff_f (pow, qnan_value, plus_infty, qnan_value),
11736     TEST_ff_f (pow, qnan_value, minus_infty, qnan_value),
11737     TEST_ff_f (pow, qnan_value, 2.5, qnan_value),
11738     TEST_ff_f (pow, qnan_value, -2.5, qnan_value),
11739     TEST_ff_f (pow, qnan_value, min_subnorm_value, qnan_value),
11740     TEST_ff_f (pow, qnan_value, -min_subnorm_value, qnan_value),
11741
11742     TEST_ff_f (pow, 1, plus_infty, 1),
11743     TEST_ff_f (pow, -1, plus_infty, 1),
11744     TEST_ff_f (pow, 1, minus_infty, 1),
11745     TEST_ff_f (pow, -1, minus_infty, 1),
11746     TEST_ff_f (pow, 1, 1, 1),
11747     TEST_ff_f (pow, 1, -1, 1),
11748     TEST_ff_f (pow, 1, 1.25, 1),
11749     TEST_ff_f (pow, 1, -1.25, 1),
11750     TEST_ff_f (pow, 1, 0x1p62L, 1),
11751     TEST_ff_f (pow, 1, 0x1p63L, 1),
11752     TEST_ff_f (pow, 1, 0x1p64L, 1),
11753     TEST_ff_f (pow, 1, 0x1p72L, 1),
11754     TEST_ff_f (pow, 1, min_subnorm_value, 1),
11755     TEST_ff_f (pow, 1, -min_subnorm_value, 1),
11756
11757     /* pow (x, +-0) == 1.  */
11758     TEST_ff_f (pow, plus_infty, 0, 1),
11759     TEST_ff_f (pow, plus_infty, minus_zero, 1),
11760     TEST_ff_f (pow, minus_infty, 0, 1),
11761     TEST_ff_f (pow, minus_infty, minus_zero, 1),
11762     TEST_ff_f (pow, 32.75L, 0, 1),
11763     TEST_ff_f (pow, 32.75L, minus_zero, 1),
11764     TEST_ff_f (pow, -32.75L, 0, 1),
11765     TEST_ff_f (pow, -32.75L, minus_zero, 1),
11766     TEST_ff_f (pow, 0x1p72L, 0, 1),
11767     TEST_ff_f (pow, 0x1p72L, minus_zero, 1),
11768     TEST_ff_f (pow, 0x1p-72L, 0, 1),
11769     TEST_ff_f (pow, 0x1p-72L, minus_zero, 1),
11770
11771     TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11772     TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11773     TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
11774     TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
11775     TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11776     TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11777     TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11778     TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
11779
11780     TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11781     TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11782     TEST_ff_f (pow, 0, -0xffffff, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11783 #ifndef TEST_FLOAT
11784     TEST_ff_f (pow, 0, -0x1.fffffffffffffp+52L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11785 #endif
11786 #ifdef TEST_LDOUBLE
11787 # if LDBL_MANT_DIG >= 64
11788     TEST_ff_f (pow, 0, -0x1.fffffffffffffffep+63L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11789 # endif
11790 # if LDBL_MANT_DIG >= 106
11791     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffff8p+105L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11792 # endif
11793 # if LDBL_MANT_DIG >= 113
11794     TEST_ff_f (pow, 0, -0x1.ffffffffffffffffffffffffffffp+112L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11795 # endif
11796 #endif
11797     TEST_ff_f (pow, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11798     TEST_ff_f (pow, minus_zero, -11L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11799     TEST_ff_f (pow, minus_zero, -0xffffff, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11800     TEST_ff_f (pow, minus_zero, -0x1fffffe, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11801 #ifndef TEST_FLOAT
11802     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+52L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11803     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffp+53L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11804 #endif
11805 #ifdef TEST_LDOUBLE
11806 # if LDBL_MANT_DIG >= 64
11807     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+63L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11808     TEST_ff_f (pow, minus_zero, -0x1.fffffffffffffffep+64L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11809 # endif
11810 # if LDBL_MANT_DIG >= 106
11811     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11812     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11813 # endif
11814 # if LDBL_MANT_DIG >= 113
11815     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11816     TEST_ff_f (pow, minus_zero, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11817 # endif
11818 #endif
11819
11820     TEST_ff_f (pow, 0, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11821     TEST_ff_f (pow, 0, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11822     TEST_ff_f (pow, 0, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11823     TEST_ff_f (pow, 0, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11824     TEST_ff_f (pow, 0, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11825     TEST_ff_f (pow, 0, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11826     TEST_ff_f (pow, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11827     TEST_ff_f (pow, minus_zero, -11.1L, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11828     TEST_ff_f (pow, minus_zero, -min_subnorm_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11829     TEST_ff_f (pow, minus_zero, -0x1p24, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11830     TEST_ff_f (pow, minus_zero, -0x1p127, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11831     TEST_ff_f (pow, minus_zero, -max_value, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
11832
11833     TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty, OVERFLOW_EXCEPTION),
11834     TEST_ff_f (pow, 10, -0x1p72L, 0, UNDERFLOW_EXCEPTION),
11835     TEST_ff_f (pow, max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
11836     TEST_ff_f (pow, 10, -max_value, 0, UNDERFLOW_EXCEPTION),
11837
11838     TEST_ff_f (pow, 0, 1, 0),
11839     TEST_ff_f (pow, 0, 11, 0),
11840
11841     TEST_ff_f (pow, minus_zero, 1, minus_zero),
11842     TEST_ff_f (pow, minus_zero, 11, minus_zero),
11843
11844     TEST_ff_f (pow, 0, 2, 0),
11845     TEST_ff_f (pow, 0, 11.1L, 0),
11846
11847     TEST_ff_f (pow, minus_zero, 2, 0),
11848     TEST_ff_f (pow, minus_zero, 11.1L, 0),
11849     TEST_ff_f (pow, 0, plus_infty, 0),
11850     TEST_ff_f (pow, minus_zero, plus_infty, 0),
11851     TEST_ff_f (pow, 0, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11852     TEST_ff_f (pow, minus_zero, minus_infty, plus_infty, DIVIDE_BY_ZERO_EXCEPTION_OK),
11853
11854 #ifndef TEST_INLINE
11855     /* pow (x, +inf) == +inf for |x| > 1.  */
11856     TEST_ff_f (pow, 1.5, plus_infty, plus_infty),
11857
11858     /* pow (x, +inf) == +0 for |x| < 1.  */
11859     TEST_ff_f (pow, 0.5, plus_infty, 0.0),
11860
11861     /* pow (x, -inf) == +0 for |x| > 1.  */
11862     TEST_ff_f (pow, 1.5, minus_infty, 0.0),
11863
11864     /* pow (x, -inf) == +inf for |x| < 1.  */
11865     TEST_ff_f (pow, 0.5, minus_infty, plus_infty),
11866 #endif
11867
11868     /* pow (+inf, y) == +inf for y > 0.  */
11869     TEST_ff_f (pow, plus_infty, 2, plus_infty),
11870     TEST_ff_f (pow, plus_infty, 0xffffff, plus_infty),
11871 #ifndef TEST_FLOAT
11872     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffp+52L, plus_infty),
11873 #endif
11874 #ifdef TEST_LDOUBLE
11875 # if LDBL_MANT_DIG >= 64
11876     TEST_ff_f (pow, plus_infty, 0x1.fffffffffffffffep+63L, plus_infty),
11877 # endif
11878 # if LDBL_MANT_DIG >= 106
11879     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, plus_infty),
11880 # endif
11881 # if LDBL_MANT_DIG >= 113
11882     TEST_ff_f (pow, plus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, plus_infty),
11883 # endif
11884 #endif
11885     TEST_ff_f (pow, plus_infty, 0x1p24, plus_infty),
11886     TEST_ff_f (pow, plus_infty, 0x1p127, plus_infty),
11887     TEST_ff_f (pow, plus_infty, max_value, plus_infty),
11888
11889     /* pow (+inf, y) == +0 for y < 0.  */
11890     TEST_ff_f (pow, plus_infty, -1, 0.0),
11891     TEST_ff_f (pow, plus_infty, -0xffffff, 0.0),
11892 #ifndef TEST_FLOAT
11893     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffp+52L, 0.0),
11894 #endif
11895 #ifdef TEST_LDOUBLE
11896 # if LDBL_MANT_DIG >= 64
11897     TEST_ff_f (pow, plus_infty, -0x1.fffffffffffffffep+63L, 0.0),
11898 # endif
11899 # if LDBL_MANT_DIG >= 106
11900     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
11901 # endif
11902 # if LDBL_MANT_DIG >= 113
11903     TEST_ff_f (pow, plus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
11904 # endif
11905 #endif
11906     TEST_ff_f (pow, plus_infty, -0x1p24, 0.0),
11907     TEST_ff_f (pow, plus_infty, -0x1p127, 0.0),
11908     TEST_ff_f (pow, plus_infty, -max_value, 0.0),
11909
11910     /* pow (-inf, y) == -inf for y an odd integer > 0.  */
11911     TEST_ff_f (pow, minus_infty, 27, minus_infty),
11912     TEST_ff_f (pow, minus_infty, 0xffffff, minus_infty),
11913     TEST_ff_f (pow, minus_infty, 0x1fffffe, plus_infty),
11914 #ifndef TEST_FLOAT
11915     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+52L, minus_infty),
11916     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffp+53L, plus_infty),
11917 #endif
11918 #ifdef TEST_LDOUBLE
11919 # if LDBL_MANT_DIG >= 64
11920     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+63L, minus_infty),
11921     TEST_ff_f (pow, minus_infty, 0x1.fffffffffffffffep+64L, plus_infty),
11922 # endif
11923 # if LDBL_MANT_DIG >= 106
11924     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty),
11925     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty),
11926 # endif
11927 # if LDBL_MANT_DIG >= 113
11928     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty),
11929     TEST_ff_f (pow, minus_infty, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty),
11930 # endif
11931 #endif
11932
11933     /* pow (-inf, y) == +inf for y > 0 and not an odd integer.  */
11934     TEST_ff_f (pow, minus_infty, 28, plus_infty),
11935     TEST_ff_f (pow, minus_infty, 0x1p24, plus_infty),
11936     TEST_ff_f (pow, minus_infty, 0x1p127, plus_infty),
11937     TEST_ff_f (pow, minus_infty, max_value, plus_infty),
11938
11939     /* pow (-inf, y) == -0 for y an odd integer < 0. */
11940     TEST_ff_f (pow, minus_infty, -3, minus_zero),
11941     TEST_ff_f (pow, minus_infty, -0xffffff, minus_zero),
11942     TEST_ff_f (pow, minus_infty, -0x1fffffe, plus_zero),
11943 #ifndef TEST_FLOAT
11944     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+52L, minus_zero),
11945     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffp+53L, plus_zero),
11946 #endif
11947 #ifdef TEST_LDOUBLE
11948 # if LDBL_MANT_DIG >= 64
11949     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+63L, minus_zero),
11950     TEST_ff_f (pow, minus_infty, -0x1.fffffffffffffffep+64L, plus_zero),
11951 # endif
11952 # if LDBL_MANT_DIG >= 106
11953     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
11954     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
11955 # endif
11956 # if LDBL_MANT_DIG >= 113
11957     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
11958     TEST_ff_f (pow, minus_infty, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
11959 # endif
11960 #endif
11961     /* pow (-inf, y) == +0 for y < 0 and not an odd integer.  */
11962     TEST_ff_f (pow, minus_infty, -2.0, 0.0),
11963     TEST_ff_f (pow, minus_infty, -0x1p24, 0.0),
11964     TEST_ff_f (pow, minus_infty, -0x1p127, 0.0),
11965     TEST_ff_f (pow, minus_infty, -max_value, 0.0),
11966
11967     /* pow (+0, y) == +0 for y an odd integer > 0.  */
11968     TEST_ff_f (pow, 0.0, 27, 0.0),
11969     TEST_ff_f (pow, 0.0, 0xffffff, 0.0),
11970 #ifndef TEST_FLOAT
11971     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffp+52L, 0.0),
11972 #endif
11973 #ifdef TEST_LDOUBLE
11974 # if LDBL_MANT_DIG >= 64
11975     TEST_ff_f (pow, 0.0, 0x1.fffffffffffffffep+63L, 0.0),
11976 # endif
11977 # if LDBL_MANT_DIG >= 106
11978     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffff8p+105L, 0.0),
11979 # endif
11980 # if LDBL_MANT_DIG >= 113
11981     TEST_ff_f (pow, 0.0, 0x1.ffffffffffffffffffffffffffffp+112L, 0.0),
11982 # endif
11983 #endif
11984
11985     /* pow (-0, y) == -0 for y an odd integer > 0.  */
11986     TEST_ff_f (pow, minus_zero, 27, minus_zero),
11987     TEST_ff_f (pow, minus_zero, 0xffffff, minus_zero),
11988     TEST_ff_f (pow, minus_zero, 0x1fffffe, plus_zero),
11989 #ifndef TEST_FLOAT
11990     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+52L, minus_zero),
11991     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffp+53L, plus_zero),
11992 #endif
11993 #ifdef TEST_LDOUBLE
11994 # if LDBL_MANT_DIG >= 64
11995     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+63L, minus_zero),
11996     TEST_ff_f (pow, minus_zero, 0x1.fffffffffffffffep+64L, plus_zero),
11997 # endif
11998 # if LDBL_MANT_DIG >= 106
11999     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero),
12000     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero),
12001 # endif
12002 # if LDBL_MANT_DIG >= 113
12003     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero),
12004     TEST_ff_f (pow, minus_zero, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero),
12005 # endif
12006 #endif
12007
12008     /* pow (+0, y) == +0 for y > 0 and not an odd integer.  */
12009     TEST_ff_f (pow, 0.0, 4, 0.0),
12010     TEST_ff_f (pow, 0.0, 0x1p24, 0.0),
12011     TEST_ff_f (pow, 0.0, 0x1p127, 0.0),
12012     TEST_ff_f (pow, 0.0, max_value, 0.0),
12013     TEST_ff_f (pow, 0.0, min_subnorm_value, 0.0),
12014
12015     /* pow (-0, y) == +0 for y > 0 and not an odd integer.  */
12016     TEST_ff_f (pow, minus_zero, 4, 0.0),
12017     TEST_ff_f (pow, minus_zero, 0x1p24, 0.0),
12018     TEST_ff_f (pow, minus_zero, 0x1p127, 0.0),
12019     TEST_ff_f (pow, minus_zero, max_value, 0.0),
12020     TEST_ff_f (pow, minus_zero, min_subnorm_value, 0.0),
12021
12022     TEST_ff_f (pow, 16, 0.25L, 2),
12023     TEST_ff_f (pow, 0x1p64L, 0.125L, 256),
12024     TEST_ff_f (pow, 2, 4, 16),
12025     TEST_ff_f (pow, 256, 8, 0x1p64L),
12026
12027     TEST_ff_f (pow, 0.75L, 1.25L, 0.697953644326574699205914060237425566L),
12028
12029 #if defined TEST_DOUBLE || defined TEST_LDOUBLE
12030     TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0, UNDERFLOW_EXCEPTION),
12031 #endif
12032
12033     TEST_ff_f (pow, -1.0, -0xffffff, -1.0),
12034     TEST_ff_f (pow, -1.0, -0x1fffffe, 1.0),
12035 #ifndef TEST_FLOAT
12036     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+52L, -1.0),
12037     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffp+53L, 1.0),
12038 #endif
12039 #ifdef TEST_LDOUBLE
12040 # if LDBL_MANT_DIG >= 64
12041     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+63L, -1.0),
12042     TEST_ff_f (pow, -1.0, -0x1.fffffffffffffffep+64L, 1.0),
12043 # endif
12044 # if LDBL_MANT_DIG >= 106
12045     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
12046     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
12047 # endif
12048 # if LDBL_MANT_DIG >= 113
12049     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
12050     TEST_ff_f (pow, -1.0, -0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
12051 # endif
12052 #endif
12053     TEST_ff_f (pow, -1.0, -max_value, 1.0),
12054
12055     TEST_ff_f (pow, -1.0, 0xffffff, -1.0),
12056     TEST_ff_f (pow, -1.0, 0x1fffffe, 1.0),
12057 #ifndef TEST_FLOAT
12058     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+52L, -1.0),
12059     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffp+53L, 1.0),
12060 #endif
12061 #ifdef TEST_LDOUBLE
12062 # if LDBL_MANT_DIG >= 64
12063     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+63L, -1.0),
12064     TEST_ff_f (pow, -1.0, 0x1.fffffffffffffffep+64L, 1.0),
12065 # endif
12066 # if LDBL_MANT_DIG >= 106
12067     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+105L, -1.0),
12068     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffff8p+106L, 1.0),
12069 # endif
12070 # if LDBL_MANT_DIG >= 113
12071     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+112L, -1.0),
12072     TEST_ff_f (pow, -1.0, 0x1.ffffffffffffffffffffffffffffp+113L, 1.0),
12073 # endif
12074 #endif
12075     TEST_ff_f (pow, -1.0, max_value, 1.0),
12076
12077     TEST_ff_f (pow, -2.0, 126, 0x1p126),
12078     TEST_ff_f (pow, -2.0, 127, -0x1p127),
12079     /* Allow inexact results for float to be considered to underflow.  */
12080     TEST_ff_f (pow, -2.0, -126, 0x1p-126, UNDERFLOW_EXCEPTION_OK_FLOAT),
12081     TEST_ff_f (pow, -2.0, -127, -0x1p-127, UNDERFLOW_EXCEPTION_OK_FLOAT),
12082
12083     TEST_ff_f (pow, -2.0, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12084     TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12085 #ifndef TEST_FLOAT
12086     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12087     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12088 #endif
12089 #ifdef TEST_LDOUBLE
12090 # if LDBL_MANT_DIG >= 64
12091     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12092     TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12093 # endif
12094 # if LDBL_MANT_DIG >= 106
12095     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12096     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12097 # endif
12098 # if LDBL_MANT_DIG >= 113
12099     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12100     TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12101 # endif
12102 #endif
12103     TEST_ff_f (pow, -2.0, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12104
12105     TEST_ff_f (pow, -2.0, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12106     TEST_ff_f (pow, -2.0, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12107 #ifndef TEST_FLOAT
12108     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12109     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12110 #endif
12111 #ifdef TEST_LDOUBLE
12112 # if LDBL_MANT_DIG >= 64
12113     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12114     TEST_ff_f (pow, -2.0, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12115 # endif
12116 # if LDBL_MANT_DIG >= 106
12117     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12118     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12119 # endif
12120 # if LDBL_MANT_DIG >= 113
12121     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12122     TEST_ff_f (pow, -2.0, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12123 # endif
12124 #endif
12125     TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION),
12126
12127     TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION),
12128     TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION),
12129     TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12130     TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION),
12131     TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION),
12132     TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION),
12133     TEST_ff_f (pow, -max_value, 3, minus_infty, OVERFLOW_EXCEPTION),
12134
12135     TEST_ff_f (pow, -max_value, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12136     TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12137 #ifndef TEST_FLOAT
12138     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12139     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12140 #endif
12141 #ifdef TEST_LDOUBLE
12142 # if LDBL_MANT_DIG >= 64
12143     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12144     TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12145 # endif
12146 # if LDBL_MANT_DIG >= 106
12147     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12148     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12149 # endif
12150 # if LDBL_MANT_DIG >= 113
12151     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12152     TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12153 # endif
12154 #endif
12155     TEST_ff_f (pow, -max_value, -max_value, plus_zero, UNDERFLOW_EXCEPTION),
12156
12157     TEST_ff_f (pow, -max_value, 0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12158     TEST_ff_f (pow, -max_value, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12159 #ifndef TEST_FLOAT
12160     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12161     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12162 #endif
12163 #ifdef TEST_LDOUBLE
12164 # if LDBL_MANT_DIG >= 64
12165     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12166     TEST_ff_f (pow, -max_value, 0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12167 # endif
12168 # if LDBL_MANT_DIG >= 106
12169     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12170     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12171 # endif
12172 # if LDBL_MANT_DIG >= 113
12173     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12174     TEST_ff_f (pow, -max_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12175 # endif
12176 #endif
12177     TEST_ff_f (pow, -max_value, max_value, plus_infty, OVERFLOW_EXCEPTION),
12178
12179     TEST_ff_f (pow, -0.5, 126, 0x1p-126),
12180     TEST_ff_f (pow, -0.5, 127, -0x1p-127),
12181     TEST_ff_f (pow, -0.5, -126, 0x1p126),
12182     TEST_ff_f (pow, -0.5, -127, -0x1p127),
12183
12184     TEST_ff_f (pow, -0.5, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12185     TEST_ff_f (pow, -0.5, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12186 #ifndef TEST_FLOAT
12187     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12188     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12189 #endif
12190 #ifdef TEST_LDOUBLE
12191 # if LDBL_MANT_DIG >= 64
12192     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12193     TEST_ff_f (pow, -0.5, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12194 # endif
12195 # if LDBL_MANT_DIG >= 106
12196     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12197     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12198 # endif
12199 # if LDBL_MANT_DIG >= 113
12200     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12201     TEST_ff_f (pow, -0.5, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12202 # endif
12203 #endif
12204     TEST_ff_f (pow, -0.5, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12205
12206     TEST_ff_f (pow, -0.5, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12207     TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12208 #ifndef TEST_FLOAT
12209     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12210     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12211 #endif
12212 #ifdef TEST_LDOUBLE
12213 # if LDBL_MANT_DIG >= 64
12214     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12215     TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12216 # endif
12217 # if LDBL_MANT_DIG >= 106
12218     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12219     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12220 # endif
12221 # if LDBL_MANT_DIG >= 113
12222     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12223     TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12224 # endif
12225 #endif
12226     TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12227
12228     TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION),
12229     TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION),
12230     TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION),
12231     TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION),
12232     TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION),
12233     /* Allow inexact results to be considered to underflow.  */
12234     TEST_ff_f (pow, -min_value, 1, -min_value, UNDERFLOW_EXCEPTION_OK),
12235     TEST_ff_f (pow, -min_value, 2, plus_zero, UNDERFLOW_EXCEPTION),
12236     TEST_ff_f (pow, -min_value, 3, minus_zero, UNDERFLOW_EXCEPTION),
12237
12238     TEST_ff_f (pow, -min_value, -0xffffff, minus_infty, OVERFLOW_EXCEPTION),
12239     TEST_ff_f (pow, -min_value, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION),
12240 #ifndef TEST_FLOAT
12241     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+52L, minus_infty, OVERFLOW_EXCEPTION),
12242     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffp+53L, plus_infty, OVERFLOW_EXCEPTION),
12243 #endif
12244 #ifdef TEST_LDOUBLE
12245 # if LDBL_MANT_DIG >= 64
12246     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+63L, minus_infty, OVERFLOW_EXCEPTION),
12247     TEST_ff_f (pow, -min_value, -0x1.fffffffffffffffep+64L, plus_infty, OVERFLOW_EXCEPTION),
12248 # endif
12249 # if LDBL_MANT_DIG >= 106
12250     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_infty, OVERFLOW_EXCEPTION),
12251     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_infty, OVERFLOW_EXCEPTION),
12252 # endif
12253 # if LDBL_MANT_DIG >= 113
12254     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_infty, OVERFLOW_EXCEPTION),
12255     TEST_ff_f (pow, -min_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_infty, OVERFLOW_EXCEPTION),
12256 # endif
12257 #endif
12258     TEST_ff_f (pow, -min_value, -max_value, plus_infty, OVERFLOW_EXCEPTION),
12259
12260     TEST_ff_f (pow, -min_value, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION),
12261     TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION),
12262 #ifndef TEST_FLOAT
12263     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION),
12264     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION),
12265 #endif
12266 #ifdef TEST_LDOUBLE
12267 # if LDBL_MANT_DIG >= 64
12268     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION),
12269     TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION),
12270 # endif
12271 # if LDBL_MANT_DIG >= 106
12272     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION),
12273     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION),
12274 # endif
12275 # if LDBL_MANT_DIG >= 113
12276     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION),
12277     TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION),
12278 # endif
12279 #endif
12280     TEST_ff_f (pow, -min_value, max_value, plus_zero, UNDERFLOW_EXCEPTION),
12281
12282     TEST_ff_f (pow, 0x0.ffffffp0, 10, 0.999999403953712118183885036774764444747L),
12283     TEST_ff_f (pow, 0x0.ffffffp0, 100, 0.999994039553108359406305079606228341585L),
12284     TEST_ff_f (pow, 0x0.ffffffp0, 1000, 0.9999403971297699052276650144650733772182L),
12285     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p24, 0.3678794302077803437135155590023422899744L),
12286     TEST_ff_f (pow, 0x0.ffffffp0, 0x1p30, 1.603807831524924233828134753069728224044e-28L),
12287     TEST_ff_f (pow, 0x0.ffffffp0, 0x1.234566p30, 2.374884712135295099971443365381007297732e-32L),
12288     TEST_ff_f (pow, 0x0.ffffffp0, -10, 1.000000596046643153205170848674671339688L),
12289     TEST_ff_f (pow, 0x0.ffffffp0, -100, 1.000005960482418779499387594989252621451L),
12290     TEST_ff_f (pow, 0x0.ffffffp0, -1000, 1.000059606422943986382898964231519867906L),
12291     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p24, 2.7182819094701610539628664526874952929416L),
12292     TEST_ff_f (pow, 0x0.ffffffp0, -0x1p30, 6.2351609734265057988914412331288163636075e+27L),
12293     TEST_ff_f (pow, 0x0.ffffffp0, -0x1.234566p30, 4.2107307141696353498921307077142537353515e+31L),
12294     TEST_ff_f (pow, 0x1.000002p0, 0x1p24, 7.3890552180866447284268641248075832310141L),
12295     TEST_ff_f (pow, 0x1.000002p0, 0x1.234566p29, 4.2107033006507495188536371520637025716256e+31L),
12296     TEST_ff_f (pow, 0x1.000002p0, -0x1.234566p29, 2.3749001736727769098946062325205705312166e-32L),
12297
12298 #if !defined TEST_FLOAT
12299     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, 0x1.23456789abcdfp62L, 1.0118762747827252817436395051178295138220e-253L),
12300     TEST_ff_f (pow, 0x0.fffffffffffff8p0L, -0x1.23456789abcdfp62L, 9.8826311568054561811190162420900667121992e+252L),
12301     TEST_ff_f (pow, 0x1.0000000000001p0L, 0x1.23456789abcdfp61L, 9.8826311568044974397135026217687399395481e+252L),
12302     TEST_ff_f (pow, 0x1.0000000000001p0L, -0x1.23456789abcdfp61L, 1.0118762747828234466621210689458255908670e-253L),
12303 #endif
12304
12305 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64 && LDBL_MAX_EXP >= 16384
12306     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, 0x1.23456789abcdef0ep77L, 1.2079212226420368189981778807634890018840e-4048L),
12307     TEST_ff_f (pow, 0x0.ffffffffffffffffp0L, -0x1.23456789abcdef0ep77L, 8.2786855736563746280496724205839522148001e+4047L),
12308     TEST_ff_f (pow, 0x1.0000000000000002p0L, 0x1.23456789abcdef0ep76L, 8.2786855736563683535324500168799315131570e+4047L),
12309     TEST_ff_f (pow, 0x1.0000000000000002p0L, -0x1.23456789abcdef0ep76L, 1.2079212226420377344964713407722652880280e-4048L),
12310 #endif
12311
12312 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 113
12313     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, 0x1.23456789abcdef0123456789abcdp126L, 1.2079212226420440237790185999151440179953e-4048L),
12314     TEST_ff_f (pow, 0x0.ffffffffffffffffffffffffffff8p0L, -0x1.23456789abcdef0123456789abcdp126L, 8.2786855736563252489063231915535105363602e+4047L),
12315     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, 0x1.23456789abcdef0123456789abcdp125L, 8.2786855736563252489063231915423647547782e+4047L),
12316     TEST_ff_f (pow, 0x1.0000000000000000000000000001p0L, -0x1.23456789abcdef0123456789abcdp125L, 1.2079212226420440237790185999167702696503e-4048L),
12317 #endif
12318
12319 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
12320     TEST_ff_f (pow, 1e4932L, 0.75L, 1e3699L),
12321     TEST_ff_f (pow, 1e4928L, 0.75L, 1e3696L),
12322     TEST_ff_f (pow, 1e4924L, 0.75L, 1e3693L),
12323     TEST_ff_f (pow, 1e4920L, 0.75L, 1e3690L),
12324     TEST_ff_f (pow, 10.0L, 4932.0L, 1e4932L),
12325     TEST_ff_f (pow, 10.0L, 4931.0L, 1e4931L),
12326     TEST_ff_f (pow, 10.0L, 4930.0L, 1e4930L),
12327     TEST_ff_f (pow, 10.0L, 4929.0L, 1e4929L),
12328     TEST_ff_f (pow, 10.0L, -4931.0L, 1e-4931L),
12329     TEST_ff_f (pow, 10.0L, -4930.0L, 1e-4930L),
12330     TEST_ff_f (pow, 10.0L, -4929.0L, 1e-4929L),
12331     TEST_ff_f (pow, 1e27L, 182.0L, 1e4914L),
12332     TEST_ff_f (pow, 1e27L, -182.0L, 1e-4914L),
12333 #endif
12334
12335     TEST_ff_f (pow, min_subnorm_value, min_subnorm_value, 1.0L),
12336     TEST_ff_f (pow, min_subnorm_value, -min_subnorm_value, 1.0L),
12337     TEST_ff_f (pow, max_value, min_subnorm_value, 1.0L),
12338     TEST_ff_f (pow, max_value, -min_subnorm_value, 1.0L),
12339     TEST_ff_f (pow, 0.99L, min_subnorm_value, 1.0L),
12340     TEST_ff_f (pow, 0.99L, -min_subnorm_value, 1.0L),
12341     TEST_ff_f (pow, 1.01L, min_subnorm_value, 1.0L),
12342     TEST_ff_f (pow, 1.01L, -min_subnorm_value, 1.0L),
12343
12344     TEST_ff_f (pow, 2.0L, -100000.0L, plus_zero, UNDERFLOW_EXCEPTION),
12345     END_DATA (pow)
12346   };
12347
12348 static void
12349 pow_test (void)
12350 {
12351
12352   errno = 0;
12353   FUNC(pow) (0, 0);
12354   if (errno == ENOSYS)
12355     /* Function not implemented.  */
12356     return;
12357
12358   START (pow);
12359   RUN_TEST_LOOP_ff_f (pow, pow_test_data, );
12360   END (pow);
12361 }
12362
12363
12364 static const struct test_ff_f_data pow_tonearest_test_data[] =
12365   {
12366     START_DATA (pow_tonearest),
12367     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12368     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12369     END_DATA (pow_tonearest)
12370   };
12371
12372 static void
12373 pow_test_tonearest (void)
12374 {
12375   errno = 0;
12376   FUNC(pow) (0, 0);
12377   if (errno == ENOSYS)
12378     /* Function not implemented.  */
12379     return;
12380
12381   START (pow_tonearest);
12382   RUN_TEST_LOOP_ff_f (pow, pow_tonearest_test_data, FE_TONEAREST);
12383   END (pow_tonearest);
12384 }
12385
12386
12387 static const struct test_ff_f_data pow_towardzero_test_data[] =
12388   {
12389     START_DATA (pow_towardzero),
12390     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12391     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12392     END_DATA (pow_towardzero)
12393   };
12394
12395 static void
12396 pow_test_towardzero (void)
12397 {
12398   errno = 0;
12399   FUNC(pow) (0, 0);
12400   if (errno == ENOSYS)
12401     /* Function not implemented.  */
12402     return;
12403
12404   START (pow_towardzero);
12405   RUN_TEST_LOOP_ff_f (pow, pow_towardzero_test_data, FE_TOWARDZERO);
12406   END (pow_towardzero);
12407 }
12408
12409
12410 static const struct test_ff_f_data pow_downward_test_data[] =
12411   {
12412     START_DATA (pow_downward),
12413     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12414     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12415     END_DATA (pow_downward)
12416   };
12417
12418 static void
12419 pow_test_downward (void)
12420 {
12421   errno = 0;
12422   FUNC(pow) (0, 0);
12423   if (errno == ENOSYS)
12424     /* Function not implemented.  */
12425     return;
12426
12427   START (pow_downward);
12428   RUN_TEST_LOOP_ff_f (pow, pow_downward_test_data, FE_DOWNWARD);
12429   END (pow_downward);
12430 }
12431
12432
12433 static const struct test_ff_f_data pow_upward_test_data[] =
12434   {
12435     START_DATA (pow_upward),
12436     TEST_ff_f (pow, 1.0625L, 1.125L, 1.070582293028761362162622578677070098674L),
12437     TEST_ff_f (pow, 1.5L, 1.03125L, 1.519127098714743184071644334163037684948L),
12438     END_DATA (pow_upward)
12439   };
12440
12441 static void
12442 pow_test_upward (void)
12443 {
12444   errno = 0;
12445   FUNC(pow) (0, 0);
12446   if (errno == ENOSYS)
12447     /* Function not implemented.  */
12448     return;
12449
12450   START (pow_upward);
12451   RUN_TEST_LOOP_ff_f (pow, pow_upward_test_data, FE_UPWARD);
12452   END (pow_upward);
12453 }
12454
12455
12456 static const struct test_ff_f_data remainder_test_data[] =
12457   {
12458     START_DATA (remainder),
12459     TEST_ff_f (remainder, 1, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12460     TEST_ff_f (remainder, 1, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12461     TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12462     TEST_ff_f (remainder, plus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12463     TEST_ff_f (remainder, plus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12464     TEST_ff_f (remainder, plus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12465     TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12466     TEST_ff_f (remainder, minus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12467     TEST_ff_f (remainder, minus_infty, 1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12468     TEST_ff_f (remainder, minus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
12469     TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, ERRNO_UNCHANGED),
12470     TEST_ff_f (remainder, 0, qnan_value, qnan_value, ERRNO_UNCHANGED),
12471     TEST_ff_f (remainder, qnan_value, 0, qnan_value, ERRNO_UNCHANGED),
12472
12473     TEST_ff_f (remainder, 7.0, plus_infty, 7.0, ERRNO_UNCHANGED),
12474     TEST_ff_f (remainder, 7.0, minus_infty, 7.0, ERRNO_UNCHANGED),
12475
12476     TEST_ff_f (remainder, 1.625, 1.0, -0.375),
12477     TEST_ff_f (remainder, -1.625, 1.0, 0.375),
12478     TEST_ff_f (remainder, 1.625, -1.0, -0.375),
12479     TEST_ff_f (remainder, -1.625, -1.0, 0.375),
12480     TEST_ff_f (remainder, 5.0, 2.0, 1.0),
12481     TEST_ff_f (remainder, 3.0, 2.0, -1.0),
12482     END_DATA (remainder)
12483   };
12484
12485 static void
12486 remainder_test (void)
12487 {
12488   errno = 0;
12489   FUNC(remainder) (1.625, 1.0);
12490   if (errno == ENOSYS)
12491     /* Function not implemented.  */
12492     return;
12493
12494   START (remainder);
12495   RUN_TEST_LOOP_ff_f (remainder, remainder_test_data, );
12496   END (remainder);
12497 }
12498
12499 static void
12500 remquo_test (void)
12501 {
12502   /* x is needed.  */
12503   int x;
12504
12505   errno = 0;
12506   FUNC(remquo) (1.625, 1.0, &x);
12507   if (errno == ENOSYS)
12508     /* Function not implemented.  */
12509     return;
12510
12511   START (remquo);
12512
12513   TEST_ffI_f1 (remquo, 1, 0, qnan_value, IGNORE, INVALID_EXCEPTION);
12514   TEST_ffI_f1 (remquo, 1, minus_zero, qnan_value, IGNORE, INVALID_EXCEPTION);
12515   TEST_ffI_f1 (remquo, plus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
12516   TEST_ffI_f1 (remquo, minus_infty, 1, qnan_value, IGNORE, INVALID_EXCEPTION);
12517   TEST_ffI_f1 (remquo, qnan_value, qnan_value, qnan_value, IGNORE);
12518
12519   TEST_ffI_f1 (remquo, 1.625, 1.0, -0.375, 2);
12520   TEST_ffI_f1 (remquo, -1.625, 1.0, 0.375, -2);
12521   TEST_ffI_f1 (remquo, 1.625, -1.0, -0.375, -2);
12522   TEST_ffI_f1 (remquo, -1.625, -1.0, 0.375, 2);
12523
12524   TEST_ffI_f1 (remquo, 5, 2, 1, 2);
12525   TEST_ffI_f1 (remquo, 3, 2, -1, 2);
12526
12527   END (remquo);
12528 }
12529
12530 static const struct test_f_f_data rint_test_data[] =
12531   {
12532     START_DATA (rint),
12533     /* TODO: missing qNaN tests.  */
12534
12535     TEST_f_f (rint, 0.0, 0.0),
12536     TEST_f_f (rint, minus_zero, minus_zero),
12537     TEST_f_f (rint, plus_infty, plus_infty),
12538     TEST_f_f (rint, minus_infty, minus_infty),
12539
12540     /* Default rounding mode is round to even.  */
12541     TEST_f_f (rint, 0.5, 0.0),
12542     TEST_f_f (rint, 1.5, 2.0),
12543     TEST_f_f (rint, 2.5, 2.0),
12544     TEST_f_f (rint, 3.5, 4.0),
12545     TEST_f_f (rint, 4.5, 4.0),
12546     TEST_f_f (rint, -0.5, -0.0),
12547     TEST_f_f (rint, -1.5, -2.0),
12548     TEST_f_f (rint, -2.5, -2.0),
12549     TEST_f_f (rint, -3.5, -4.0),
12550     TEST_f_f (rint, -4.5, -4.0),
12551     TEST_f_f (rint, 0.1, 0.0),
12552     TEST_f_f (rint, 0.25, 0.0),
12553     TEST_f_f (rint, 0.625, 1.0),
12554     TEST_f_f (rint, -0.1, -0.0),
12555     TEST_f_f (rint, -0.25, -0.0),
12556     TEST_f_f (rint, -0.625, -1.0),
12557     TEST_f_f (rint, 262144.75, 262145.0),
12558     TEST_f_f (rint, 262142.75, 262143.0),
12559     TEST_f_f (rint, 524286.75, 524287.0),
12560     TEST_f_f (rint, 524288.75, 524289.0),
12561     TEST_f_f (rint, 1048576.75, 1048577.0),
12562     TEST_f_f (rint, 2097152.75, 2097153.0),
12563     TEST_f_f (rint, -1048576.75, -1048577.0),
12564     TEST_f_f (rint, -2097152.75, -2097153.0),
12565 #ifndef TEST_FLOAT
12566     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12567     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12568     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12569     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12570     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12571     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12572     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12573     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12574     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12575     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12576 #endif
12577 #ifdef TEST_LDOUBLE
12578     /* The result can only be represented in long double.  */
12579     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12580     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12581     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12582     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12583     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12584
12585 # if LDBL_MANT_DIG > 100
12586     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12587     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12588     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12589 # endif
12590
12591     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12592     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12593     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12594     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12595     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12596
12597 # if LDBL_MANT_DIG > 100
12598     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12599     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12600     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12601
12602     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12603     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12604     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12605     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12606     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12607     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12608
12609     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12610     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12611     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12612     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12613     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12614     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12615 # endif
12616
12617     TEST_f_f (rint, 9007199254740991.5L, 9007199254740992.0L),
12618     TEST_f_f (rint, 9007199254740992.25L, 9007199254740992.0L),
12619     TEST_f_f (rint, 9007199254740992.5L, 9007199254740992.0L),
12620     TEST_f_f (rint, 9007199254740992.75L, 9007199254740993.0L),
12621     TEST_f_f (rint, 9007199254740993.5L, 9007199254740994.0L),
12622
12623     TEST_f_f (rint, -9007199254740991.5L, -9007199254740992.0L),
12624     TEST_f_f (rint, -9007199254740992.25L, -9007199254740992.0L),
12625     TEST_f_f (rint, -9007199254740992.5L, -9007199254740992.0L),
12626     TEST_f_f (rint, -9007199254740992.75L, -9007199254740993.0L),
12627     TEST_f_f (rint, -9007199254740993.5L, -9007199254740994.0L),
12628
12629     TEST_f_f (rint, 72057594037927935.5L, 72057594037927936.0L),
12630     TEST_f_f (rint, 72057594037927936.25L, 72057594037927936.0L),
12631     TEST_f_f (rint, 72057594037927936.5L, 72057594037927936.0L),
12632     TEST_f_f (rint, 72057594037927936.75L, 72057594037927937.0L),
12633     TEST_f_f (rint, 72057594037927937.5L, 72057594037927938.0L),
12634
12635     TEST_f_f (rint, -72057594037927935.5L, -72057594037927936.0L),
12636     TEST_f_f (rint, -72057594037927936.25L, -72057594037927936.0L),
12637     TEST_f_f (rint, -72057594037927936.5L, -72057594037927936.0L),
12638     TEST_f_f (rint, -72057594037927936.75L, -72057594037927937.0L),
12639     TEST_f_f (rint, -72057594037927937.5L, -72057594037927938.0L),
12640
12641     TEST_f_f (rint, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
12642     TEST_f_f (rint, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
12643     TEST_f_f (rint, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
12644     TEST_f_f (rint, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
12645     TEST_f_f (rint, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
12646 #endif
12647     END_DATA (rint)
12648   };
12649
12650 static void
12651 rint_test (void)
12652 {
12653   START (rint);
12654   RUN_TEST_LOOP_f_f (rint, rint_test_data, );
12655   END (rint);
12656 }
12657
12658 static const struct test_f_f_data rint_tonearest_test_data[] =
12659   {
12660     START_DATA (rint_tonearest),
12661     TEST_f_f (rint, 2.0, 2.0),
12662     TEST_f_f (rint, 1.5, 2.0),
12663     TEST_f_f (rint, 1.0, 1.0),
12664     TEST_f_f (rint, 0.5, 0.0),
12665     TEST_f_f (rint, 0.0, 0.0),
12666     TEST_f_f (rint, minus_zero, minus_zero),
12667     TEST_f_f (rint, -0.5, -0.0),
12668     TEST_f_f (rint, -1.0, -1.0),
12669     TEST_f_f (rint, -1.5, -2.0),
12670     TEST_f_f (rint, -2.0, -2.0),
12671     TEST_f_f (rint, 0.1, 0.0),
12672     TEST_f_f (rint, 0.25, 0.0),
12673     TEST_f_f (rint, 0.625, 1.0),
12674     TEST_f_f (rint, -0.1, -0.0),
12675     TEST_f_f (rint, -0.25, -0.0),
12676     TEST_f_f (rint, -0.625, -1.0),
12677     TEST_f_f (rint, 1048576.75, 1048577.0),
12678     TEST_f_f (rint, 2097152.75, 2097153.0),
12679     TEST_f_f (rint, -1048576.75, -1048577.0),
12680     TEST_f_f (rint, -2097152.75, -2097153.0),
12681 #ifndef TEST_FLOAT
12682     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12683     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12684     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12685     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12686     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12687     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12688     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12689     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12690     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12691     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12692 #endif
12693 #ifdef TEST_LDOUBLE
12694     /* The result can only be represented in long double.  */
12695     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12696     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12697     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12698     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12699     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12700 # if LDBL_MANT_DIG > 100
12701     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12702     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12703     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12704 # endif
12705     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12706     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12707     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12708     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12709     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12710 # if LDBL_MANT_DIG > 100
12711     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12712     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12713     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12714
12715     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12716     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12717     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12718     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12719     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12720     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12721
12722     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12723     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12724     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12725     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12726     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12727     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12728 # endif
12729 #endif
12730     END_DATA (rint_tonearest)
12731   };
12732
12733 static void
12734 rint_test_tonearest (void)
12735 {
12736   START (rint_tonearest);
12737   RUN_TEST_LOOP_f_f (rint, rint_tonearest_test_data, FE_TONEAREST);
12738   END (rint_tonearest);
12739 }
12740
12741 static const struct test_f_f_data rint_towardzero_test_data[] =
12742   {
12743     START_DATA (rint_towardzero),
12744     TEST_f_f (rint, 2.0, 2.0),
12745     TEST_f_f (rint, 1.5, 1.0),
12746     TEST_f_f (rint, 1.0, 1.0),
12747     TEST_f_f (rint, 0.5, 0.0),
12748     TEST_f_f (rint, 0.0, 0.0),
12749     TEST_f_f (rint, minus_zero, minus_zero),
12750     TEST_f_f (rint, -0.5, -0.0),
12751     TEST_f_f (rint, -1.0, -1.0),
12752     TEST_f_f (rint, -1.5, -1.0),
12753     TEST_f_f (rint, -2.0, -2.0),
12754     TEST_f_f (rint, 0.1, 0.0),
12755     TEST_f_f (rint, 0.25, 0.0),
12756     TEST_f_f (rint, 0.625, 0.0),
12757     TEST_f_f (rint, -0.1, -0.0),
12758     TEST_f_f (rint, -0.25, -0.0),
12759     TEST_f_f (rint, -0.625, -0.0),
12760     TEST_f_f (rint, 1048576.75, 1048576.0),
12761     TEST_f_f (rint, 2097152.75, 2097152.0),
12762     TEST_f_f (rint, -1048576.75, -1048576.0),
12763     TEST_f_f (rint, -2097152.75, -2097152.0),
12764 #ifndef TEST_FLOAT
12765     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
12766     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
12767     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
12768     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
12769     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
12770     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
12771     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
12772     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
12773     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
12774     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
12775 #endif
12776 #ifdef TEST_LDOUBLE
12777     /* The result can only be represented in long double.  */
12778     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
12779     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12780     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12781     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
12782     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
12783 # if LDBL_MANT_DIG > 100
12784     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
12785     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
12786     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
12787 # endif
12788     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
12789     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12790     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12791     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
12792     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
12793 # if LDBL_MANT_DIG > 100
12794     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
12795     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
12796     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
12797
12798     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12799     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12800     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12801     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
12802     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
12803     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
12804
12805     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12806     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12807     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12808     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
12809     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
12810     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
12811 # endif
12812 #endif
12813     END_DATA (rint_towardzero)
12814   };
12815
12816 static void
12817 rint_test_towardzero (void)
12818 {
12819   START (rint_towardzero);
12820   RUN_TEST_LOOP_f_f (rint, rint_towardzero_test_data, FE_TOWARDZERO);
12821   END (rint_towardzero);
12822 }
12823
12824 static const struct test_f_f_data rint_downward_test_data[] =
12825   {
12826     START_DATA (rint_downward),
12827     TEST_f_f (rint, 2.0, 2.0),
12828     TEST_f_f (rint, 1.5, 1.0),
12829     TEST_f_f (rint, 1.0, 1.0),
12830     TEST_f_f (rint, 0.5, 0.0),
12831     TEST_f_f (rint, 0.0, 0.0),
12832     TEST_f_f (rint, minus_zero, minus_zero),
12833     TEST_f_f (rint, -0.5, -1.0),
12834     TEST_f_f (rint, -1.0, -1.0),
12835     TEST_f_f (rint, -1.5, -2.0),
12836     TEST_f_f (rint, -2.0, -2.0),
12837     TEST_f_f (rint, 0.1, 0.0),
12838     TEST_f_f (rint, 0.25, 0.0),
12839     TEST_f_f (rint, 0.625, 0.0),
12840     TEST_f_f (rint, -0.1, -1.0),
12841     TEST_f_f (rint, -0.25, -1.0),
12842     TEST_f_f (rint, -0.625, -1.0),
12843     TEST_f_f (rint, 1048576.75, 1048576.0),
12844     TEST_f_f (rint, 2097152.75, 2097152.0),
12845     TEST_f_f (rint, -1048576.75, -1048577.0),
12846     TEST_f_f (rint, -2097152.75, -2097153.0),
12847 #ifndef TEST_FLOAT
12848     TEST_f_f (rint, 70368744177664.75, 70368744177664.0),
12849     TEST_f_f (rint, 140737488355328.75, 140737488355328.0),
12850     TEST_f_f (rint, 281474976710656.75, 281474976710656.0),
12851     TEST_f_f (rint, 562949953421312.75, 562949953421312.0),
12852     TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0),
12853     TEST_f_f (rint, -70368744177664.75, -70368744177665.0),
12854     TEST_f_f (rint, -140737488355328.75, -140737488355329.0),
12855     TEST_f_f (rint, -281474976710656.75, -281474976710657.0),
12856     TEST_f_f (rint, -562949953421312.75, -562949953421313.0),
12857     TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0),
12858 #endif
12859 #ifdef TEST_LDOUBLE
12860     /* The result can only be represented in long double.  */
12861     TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L),
12862     TEST_f_f (rint, 4503599627370496.25L, 4503599627370496.0L),
12863     TEST_f_f (rint, 4503599627370496.5L, 4503599627370496.0L),
12864     TEST_f_f (rint, 4503599627370496.75L, 4503599627370496.0L),
12865     TEST_f_f (rint, 4503599627370497.5L, 4503599627370497.0L),
12866 # if LDBL_MANT_DIG > 100
12867     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370494.0L),
12868     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370495.0L),
12869     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370496.0L),
12870 # endif
12871     TEST_f_f (rint, -4503599627370495.5L, -4503599627370496.0L),
12872     TEST_f_f (rint, -4503599627370496.25L, -4503599627370497.0L),
12873     TEST_f_f (rint, -4503599627370496.5L, -4503599627370497.0L),
12874     TEST_f_f (rint, -4503599627370496.75L, -4503599627370497.0L),
12875     TEST_f_f (rint, -4503599627370497.5L, -4503599627370498.0L),
12876 # if LDBL_MANT_DIG > 100
12877     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370495.0L),
12878     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370496.0L),
12879     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370497.0L),
12880
12881     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740991.0L),
12882     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740992.0L),
12883     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740993.0L),
12884     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740991.0L),
12885     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740992.0L),
12886     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740993.0L),
12887
12888     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740992.0L),
12889     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740993.0L),
12890     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740994.0L),
12891     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740992.0L),
12892     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740993.0L),
12893     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740994.0L),
12894 # endif
12895 #endif
12896     END_DATA (rint_downward)
12897   };
12898
12899 static void
12900 rint_test_downward (void)
12901 {
12902   START (rint_downward);
12903   RUN_TEST_LOOP_f_f (rint, rint_downward_test_data, FE_DOWNWARD);
12904   END (rint_downward);
12905 }
12906
12907 static const struct test_f_f_data rint_upward_test_data[] =
12908   {
12909     START_DATA (rint_upward),
12910     TEST_f_f (rint, 2.0, 2.0),
12911     TEST_f_f (rint, 1.5, 2.0),
12912     TEST_f_f (rint, 1.0, 1.0),
12913     TEST_f_f (rint, 0.5, 1.0),
12914     TEST_f_f (rint, 0.0, 0.0),
12915     TEST_f_f (rint, minus_zero, minus_zero),
12916     TEST_f_f (rint, -0.5, -0.0),
12917     TEST_f_f (rint, -1.0, -1.0),
12918     TEST_f_f (rint, -1.5, -1.0),
12919     TEST_f_f (rint, -2.0, -2.0),
12920     TEST_f_f (rint, 0.1, 1.0),
12921     TEST_f_f (rint, 0.25, 1.0),
12922     TEST_f_f (rint, 0.625, 1.0),
12923     TEST_f_f (rint, -0.1, -0.0),
12924     TEST_f_f (rint, -0.25, -0.0),
12925     TEST_f_f (rint, -0.625, -0.0),
12926     TEST_f_f (rint, 1048576.75, 1048577.0),
12927     TEST_f_f (rint, 2097152.75, 2097153.0),
12928     TEST_f_f (rint, -1048576.75, -1048576.0),
12929     TEST_f_f (rint, -2097152.75, -2097152.0),
12930 #ifndef TEST_FLOAT
12931     TEST_f_f (rint, 70368744177664.75, 70368744177665.0),
12932     TEST_f_f (rint, 140737488355328.75, 140737488355329.0),
12933     TEST_f_f (rint, 281474976710656.75, 281474976710657.0),
12934     TEST_f_f (rint, 562949953421312.75, 562949953421313.0),
12935     TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0),
12936     TEST_f_f (rint, -70368744177664.75, -70368744177664.0),
12937     TEST_f_f (rint, -140737488355328.75, -140737488355328.0),
12938     TEST_f_f (rint, -281474976710656.75, -281474976710656.0),
12939     TEST_f_f (rint, -562949953421312.75, -562949953421312.0),
12940     TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0),
12941 #endif
12942 #ifdef TEST_LDOUBLE
12943     /* The result can only be represented in long double.  */
12944     TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L),
12945     TEST_f_f (rint, 4503599627370496.25L, 4503599627370497.0L),
12946     TEST_f_f (rint, 4503599627370496.5L, 4503599627370497.0L),
12947     TEST_f_f (rint, 4503599627370496.75L, 4503599627370497.0L),
12948     TEST_f_f (rint, 4503599627370497.5L, 4503599627370498.0L),
12949 # if LDBL_MANT_DIG > 100
12950     TEST_f_f (rint, 4503599627370494.5000000000001L, 4503599627370495.0L),
12951     TEST_f_f (rint, 4503599627370495.5000000000001L, 4503599627370496.0L),
12952     TEST_f_f (rint, 4503599627370496.5000000000001L, 4503599627370497.0L),
12953 # endif
12954     TEST_f_f (rint, -4503599627370495.5L, -4503599627370495.0L),
12955     TEST_f_f (rint, -4503599627370496.25L, -4503599627370496.0L),
12956     TEST_f_f (rint, -4503599627370496.5L, -4503599627370496.0L),
12957     TEST_f_f (rint, -4503599627370496.75L, -4503599627370496.0L),
12958     TEST_f_f (rint, -4503599627370497.5L, -4503599627370497.0L),
12959 # if LDBL_MANT_DIG > 100
12960     TEST_f_f (rint, -4503599627370494.5000000000001L, -4503599627370494.0L),
12961     TEST_f_f (rint, -4503599627370495.5000000000001L, -4503599627370495.0L),
12962     TEST_f_f (rint, -4503599627370496.5000000000001L, -4503599627370496.0L),
12963
12964     TEST_f_f (rint, 9007199254740991.0000000000001L, 9007199254740992.0L),
12965     TEST_f_f (rint, 9007199254740992.0000000000001L, 9007199254740993.0L),
12966     TEST_f_f (rint, 9007199254740993.0000000000001L, 9007199254740994.0L),
12967     TEST_f_f (rint, 9007199254740991.5000000000001L, 9007199254740992.0L),
12968     TEST_f_f (rint, 9007199254740992.5000000000001L, 9007199254740993.0L),
12969     TEST_f_f (rint, 9007199254740993.5000000000001L, 9007199254740994.0L),
12970
12971     TEST_f_f (rint, -9007199254740991.0000000000001L, -9007199254740991.0L),
12972     TEST_f_f (rint, -9007199254740992.0000000000001L, -9007199254740992.0L),
12973     TEST_f_f (rint, -9007199254740993.0000000000001L, -9007199254740993.0L),
12974     TEST_f_f (rint, -9007199254740991.5000000000001L, -9007199254740991.0L),
12975     TEST_f_f (rint, -9007199254740992.5000000000001L, -9007199254740992.0L),
12976     TEST_f_f (rint, -9007199254740993.5000000000001L, -9007199254740993.0L),
12977 # endif
12978 #endif
12979     END_DATA (rint_upward)
12980   };
12981
12982 static void
12983 rint_test_upward (void)
12984 {
12985   START (rint_upward);
12986   RUN_TEST_LOOP_f_f (rint, rint_upward_test_data, FE_UPWARD);
12987   END (rint_upward);
12988 }
12989
12990 static const struct test_f_f_data round_test_data[] =
12991   {
12992     START_DATA (round),
12993     /* TODO: missing +/-Inf as well as qNaN tests.  */
12994
12995     TEST_f_f (round, 0, 0),
12996     TEST_f_f (round, minus_zero, minus_zero),
12997     TEST_f_f (round, 0.2L, 0.0),
12998     TEST_f_f (round, -0.2L, minus_zero),
12999     TEST_f_f (round, 0.5, 1.0),
13000     TEST_f_f (round, -0.5, -1.0),
13001     TEST_f_f (round, 0.8L, 1.0),
13002     TEST_f_f (round, -0.8L, -1.0),
13003     TEST_f_f (round, 1.5, 2.0),
13004     TEST_f_f (round, -1.5, -2.0),
13005     TEST_f_f (round, 0.1, 0.0),
13006     TEST_f_f (round, 0.25, 0.0),
13007     TEST_f_f (round, 0.625, 1.0),
13008     TEST_f_f (round, -0.1, -0.0),
13009     TEST_f_f (round, -0.25, -0.0),
13010     TEST_f_f (round, -0.625, -1.0),
13011     TEST_f_f (round, 2097152.5, 2097153),
13012     TEST_f_f (round, -2097152.5, -2097153),
13013
13014 #ifdef TEST_LDOUBLE
13015     /* The result can only be represented in long double.  */
13016     TEST_f_f (round, 4503599627370495.5L, 4503599627370496.0L),
13017     TEST_f_f (round, 4503599627370496.25L, 4503599627370496.0L),
13018     TEST_f_f (round, 4503599627370496.5L, 4503599627370497.0L),
13019     TEST_f_f (round, 4503599627370496.75L, 4503599627370497.0L),
13020     TEST_f_f (round, 4503599627370497.5L, 4503599627370498.0L),
13021 # if LDBL_MANT_DIG > 100
13022     TEST_f_f (round, 4503599627370494.5000000000001L, 4503599627370495.0L),
13023     TEST_f_f (round, 4503599627370495.5000000000001L, 4503599627370496.0L),
13024     TEST_f_f (round, 4503599627370496.5000000000001L, 4503599627370497.0L),
13025 # endif
13026
13027     TEST_f_f (round, -4503599627370495.5L, -4503599627370496.0L),
13028     TEST_f_f (round, -4503599627370496.25L, -4503599627370496.0L),
13029     TEST_f_f (round, -4503599627370496.5L, -4503599627370497.0L),
13030     TEST_f_f (round, -4503599627370496.75L, -4503599627370497.0L),
13031     TEST_f_f (round, -4503599627370497.5L, -4503599627370498.0L),
13032 # if LDBL_MANT_DIG > 100
13033     TEST_f_f (round, -4503599627370494.5000000000001L, -4503599627370495.0L),
13034     TEST_f_f (round, -4503599627370495.5000000000001L, -4503599627370496.0L),
13035     TEST_f_f (round, -4503599627370496.5000000000001L, -4503599627370497.0L),
13036 # endif
13037
13038     TEST_f_f (round, 9007199254740991.5L, 9007199254740992.0L),
13039     TEST_f_f (round, 9007199254740992.25L, 9007199254740992.0L),
13040     TEST_f_f (round, 9007199254740992.5L, 9007199254740993.0L),
13041     TEST_f_f (round, 9007199254740992.75L, 9007199254740993.0L),
13042     TEST_f_f (round, 9007199254740993.5L, 9007199254740994.0L),
13043
13044     TEST_f_f (round, -9007199254740991.5L, -9007199254740992.0L),
13045     TEST_f_f (round, -9007199254740992.25L, -9007199254740992.0L),
13046     TEST_f_f (round, -9007199254740992.5L, -9007199254740993.0L),
13047     TEST_f_f (round, -9007199254740992.75L, -9007199254740993.0L),
13048     TEST_f_f (round, -9007199254740993.5L, -9007199254740994.0L),
13049
13050 # if LDBL_MANT_DIG > 100
13051     TEST_f_f (round, 9007199254740991.0000000000001L, 9007199254740991.0L),
13052     TEST_f_f (round, 9007199254740992.0000000000001L, 9007199254740992.0L),
13053     TEST_f_f (round, 9007199254740993.0000000000001L, 9007199254740993.0L),
13054     TEST_f_f (round, 9007199254740991.5000000000001L, 9007199254740992.0L),
13055     TEST_f_f (round, 9007199254740992.5000000000001L, 9007199254740993.0L),
13056     TEST_f_f (round, 9007199254740993.5000000000001L, 9007199254740994.0L),
13057
13058     TEST_f_f (round, -9007199254740991.0000000000001L, -9007199254740991.0L),
13059     TEST_f_f (round, -9007199254740992.0000000000001L, -9007199254740992.0L),
13060     TEST_f_f (round, -9007199254740993.0000000000001L, -9007199254740993.0L),
13061     TEST_f_f (round, -9007199254740991.5000000000001L, -9007199254740992.0L),
13062     TEST_f_f (round, -9007199254740992.5000000000001L, -9007199254740993.0L),
13063     TEST_f_f (round, -9007199254740993.5000000000001L, -9007199254740994.0L),
13064 # endif
13065
13066     TEST_f_f (round, 72057594037927935.5L, 72057594037927936.0L),
13067     TEST_f_f (round, 72057594037927936.25L, 72057594037927936.0L),
13068     TEST_f_f (round, 72057594037927936.5L, 72057594037927937.0L),
13069     TEST_f_f (round, 72057594037927936.75L, 72057594037927937.0L),
13070     TEST_f_f (round, 72057594037927937.5L, 72057594037927938.0L),
13071
13072     TEST_f_f (round, -72057594037927935.5L, -72057594037927936.0L),
13073     TEST_f_f (round, -72057594037927936.25L, -72057594037927936.0L),
13074     TEST_f_f (round, -72057594037927936.5L, -72057594037927937.0L),
13075     TEST_f_f (round, -72057594037927936.75L, -72057594037927937.0L),
13076     TEST_f_f (round, -72057594037927937.5L, -72057594037927938.0L),
13077
13078     TEST_f_f (round, 10141204801825835211973625643007.5L, 10141204801825835211973625643008.0L),
13079     TEST_f_f (round, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
13080     TEST_f_f (round, 10141204801825835211973625643008.5L, 10141204801825835211973625643009.0L),
13081     TEST_f_f (round, 10141204801825835211973625643008.75L, 10141204801825835211973625643009.0L),
13082     TEST_f_f (round, 10141204801825835211973625643009.5L, 10141204801825835211973625643010.0L),
13083 #endif
13084     END_DATA (round)
13085   };
13086
13087 static void
13088 round_test (void)
13089 {
13090   START (round);
13091   RUN_TEST_LOOP_f_f (round, round_test_data, );
13092   END (round);
13093 }
13094
13095
13096 static const struct test_ff_f_data scalb_test_data[] =
13097   {
13098     START_DATA (scalb),
13099     TEST_ff_f (scalb, 2.0, 0.5, qnan_value, INVALID_EXCEPTION),
13100     TEST_ff_f (scalb, 3.0, -2.5, qnan_value, INVALID_EXCEPTION),
13101
13102     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13103     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13104
13105     TEST_ff_f (scalb, 1, 0, 1),
13106     TEST_ff_f (scalb, -1, 0, -1),
13107
13108     TEST_ff_f (scalb, 0, plus_infty, qnan_value, INVALID_EXCEPTION),
13109     TEST_ff_f (scalb, minus_zero, plus_infty, qnan_value, INVALID_EXCEPTION),
13110
13111     TEST_ff_f (scalb, 0, 2, 0),
13112     TEST_ff_f (scalb, minus_zero, -4, minus_zero),
13113     TEST_ff_f (scalb, 0, 0, 0),
13114     TEST_ff_f (scalb, minus_zero, 0, minus_zero),
13115     TEST_ff_f (scalb, 0, -1, 0),
13116     TEST_ff_f (scalb, minus_zero, -10, minus_zero),
13117     TEST_ff_f (scalb, 0, minus_infty, 0),
13118     TEST_ff_f (scalb, minus_zero, minus_infty, minus_zero),
13119
13120     TEST_ff_f (scalb, plus_infty, -1, plus_infty),
13121     TEST_ff_f (scalb, minus_infty, -10, minus_infty),
13122     TEST_ff_f (scalb, plus_infty, 0, plus_infty),
13123     TEST_ff_f (scalb, minus_infty, 0, minus_infty),
13124     TEST_ff_f (scalb, plus_infty, 2, plus_infty),
13125     TEST_ff_f (scalb, minus_infty, 100, minus_infty),
13126
13127     TEST_ff_f (scalb, 0.1L, minus_infty, 0.0),
13128     TEST_ff_f (scalb, -0.1L, minus_infty, minus_zero),
13129
13130     TEST_ff_f (scalb, 1, plus_infty, plus_infty),
13131     TEST_ff_f (scalb, -1, plus_infty, minus_infty),
13132     TEST_ff_f (scalb, plus_infty, plus_infty, plus_infty),
13133     TEST_ff_f (scalb, minus_infty, plus_infty, minus_infty),
13134
13135     TEST_ff_f (scalb, plus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13136     TEST_ff_f (scalb, minus_infty, minus_infty, qnan_value, INVALID_EXCEPTION),
13137
13138     TEST_ff_f (scalb, qnan_value, 1, qnan_value),
13139     TEST_ff_f (scalb, 1, qnan_value, qnan_value),
13140     TEST_ff_f (scalb, qnan_value, 0, qnan_value),
13141     TEST_ff_f (scalb, 0, qnan_value, qnan_value),
13142     TEST_ff_f (scalb, qnan_value, plus_infty, qnan_value),
13143     TEST_ff_f (scalb, plus_infty, qnan_value, qnan_value),
13144     TEST_ff_f (scalb, qnan_value, qnan_value, qnan_value),
13145
13146     TEST_ff_f (scalb, 0.8L, 4, 12.8L),
13147     TEST_ff_f (scalb, -0.854375L, 5, -27.34L),
13148     END_DATA (scalb)
13149   };
13150
13151 static void
13152 scalb_test (void)
13153 {
13154
13155   START (scalb);
13156   RUN_TEST_LOOP_ff_f (scalb, scalb_test_data, );
13157   END (scalb);
13158 }
13159
13160
13161 static const struct test_fi_f_data scalbn_test_data[] =
13162   {
13163     START_DATA (scalbn),
13164     TEST_fi_f (scalbn, 0, 0, 0),
13165     TEST_fi_f (scalbn, minus_zero, 0, minus_zero),
13166
13167     TEST_fi_f (scalbn, plus_infty, 1, plus_infty),
13168     TEST_fi_f (scalbn, minus_infty, 1, minus_infty),
13169     TEST_fi_f (scalbn, qnan_value, 1, qnan_value),
13170
13171     TEST_fi_f (scalbn, 0.8L, 4, 12.8L),
13172     TEST_fi_f (scalbn, -0.854375L, 5, -27.34L),
13173
13174     TEST_fi_f (scalbn, 1, 0L, 1),
13175
13176     TEST_fi_f (scalbn, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13177     TEST_fi_f (scalbn, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13178     TEST_fi_f (scalbn, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13179     TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13180     TEST_fi_f (scalbn, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13181     TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13182     TEST_fi_f (scalbn, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION),
13183     TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION),
13184     END_DATA (scalbn)
13185   };
13186
13187 static void
13188 scalbn_test (void)
13189 {
13190
13191   START (scalbn);
13192   RUN_TEST_LOOP_fi_f (scalbn, scalbn_test_data, );
13193   END (scalbn);
13194 }
13195
13196
13197 static void
13198 scalbln_test (void)
13199 {
13200
13201   START (scalbln);
13202
13203   TEST_fl_f (scalbln, 0, 0, 0);
13204   TEST_fl_f (scalbln, minus_zero, 0, minus_zero);
13205
13206   TEST_fl_f (scalbln, plus_infty, 1, plus_infty);
13207   TEST_fl_f (scalbln, minus_infty, 1, minus_infty);
13208   TEST_fl_f (scalbln, qnan_value, 1, qnan_value);
13209
13210   TEST_fl_f (scalbln, 0.8L, 4, 12.8L);
13211   TEST_fl_f (scalbln, -0.854375L, 5, -27.34L);
13212
13213   TEST_fl_f (scalbln, 1, 0L, 1);
13214
13215   TEST_fl_f (scalbln, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13216   TEST_fl_f (scalbln, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13217   TEST_fl_f (scalbln, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13218   TEST_fl_f (scalbln, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13219   TEST_fl_f (scalbln, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13220   TEST_fl_f (scalbln, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13221   TEST_fl_f (scalbln, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
13222   TEST_fl_f (scalbln, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13223
13224   TEST_fl_f (scalbln, 1, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13225   TEST_fl_f (scalbln, 1, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13226   TEST_fl_f (scalbln, max_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13227   TEST_fl_f (scalbln, max_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13228   TEST_fl_f (scalbln, min_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13229   TEST_fl_f (scalbln, min_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13230   TEST_fl_f (scalbln, min_value / 4, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
13231   TEST_fl_f (scalbln, min_value / 4, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
13232
13233 #if LONG_MAX >= 0x100000000
13234   TEST_fl_f (scalbln, 1, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13235   TEST_fl_f (scalbln, 1, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13236   TEST_fl_f (scalbln, max_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13237   TEST_fl_f (scalbln, max_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13238   TEST_fl_f (scalbln, min_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13239   TEST_fl_f (scalbln, min_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13240   TEST_fl_f (scalbln, min_value / 4, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
13241   TEST_fl_f (scalbln, min_value / 4, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
13242 #endif
13243
13244   END (scalbn);
13245 }
13246
13247
13248 static void
13249 signbit_test (void)
13250 {
13251   /* TODO: missing qNaN tests.  */
13252
13253   START (signbit);
13254
13255   TEST_f_b (signbit, 0, 0);
13256   TEST_f_b (signbit, minus_zero, 1);
13257   TEST_f_b (signbit, plus_infty, 0);
13258   TEST_f_b (signbit, minus_infty, 1);
13259
13260   /* signbit (x) != 0 for x < 0.  */
13261   TEST_f_b (signbit, -1, 1);
13262   /* signbit (x) == 0 for x >= 0.  */
13263   TEST_f_b (signbit, 1, 0);
13264
13265   END (signbit);
13266 }
13267
13268
13269 static const struct test_f_f_data sin_test_data[] =
13270   {
13271     START_DATA (sin),
13272     TEST_f_f (sin, 0, 0),
13273     TEST_f_f (sin, minus_zero, minus_zero),
13274     TEST_f_f (sin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13275     TEST_f_f (sin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13276     TEST_f_f (sin, qnan_value, qnan_value, ERRNO_UNCHANGED),
13277
13278     TEST_f_f (sin, M_PI_6l, 0.5),
13279     TEST_f_f (sin, -M_PI_6l, -0.5),
13280     TEST_f_f (sin, M_PI_2l, 1),
13281     TEST_f_f (sin, -M_PI_2l, -1),
13282     TEST_f_f (sin, 0.75L, 0.681638760023334166733241952779893935L),
13283
13284     TEST_f_f (sin, 0x1p65, -0.047183876212354673805106149805700013943218L),
13285     TEST_f_f (sin, -0x1p65, 0.047183876212354673805106149805700013943218L),
13286
13287     TEST_f_f (sin, 0x1.7f4134p+103, -6.6703229329788657073304190650534846045235e-08L),
13288
13289 #ifdef TEST_DOUBLE
13290     TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868),
13291     TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1),
13292 #endif
13293
13294 #ifndef TEST_FLOAT
13295     TEST_f_f (sin, 1e22, -0.8522008497671888017727058937530293682618L),
13296     TEST_f_f (sin, 0x1p1023, 0.5631277798508840134529434079444683477104L),
13297 #endif
13298
13299 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13300     TEST_f_f (sin, 0x1p16383L, 0.3893629985894208126948115852610595405563L),
13301 #endif
13302
13303     TEST_f_f (sin, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L),
13304     TEST_f_f (sin, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L),
13305     TEST_f_f (sin, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L),
13306     TEST_f_f (sin, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L),
13307     TEST_f_f (sin, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L),
13308     TEST_f_f (sin, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L),
13309     END_DATA (sin)
13310   };
13311
13312 static void
13313 sin_test (void)
13314 {
13315   errno = 0;
13316   FUNC(sin) (0);
13317   if (errno == ENOSYS)
13318     /* Function not implemented.  */
13319     return;
13320
13321   START (sin);
13322   RUN_TEST_LOOP_f_f (sin, sin_test_data, );
13323   END (sin);
13324 }
13325
13326
13327 static const struct test_f_f_data sin_tonearest_test_data[] =
13328   {
13329     START_DATA (sin_tonearest),
13330     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13331     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13332     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13333     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13334     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13335     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13336     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13337     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13338     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13339     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13340     END_DATA (sin_tonearest)
13341   };
13342
13343 static void
13344 sin_test_tonearest (void)
13345 {
13346   errno = 0;
13347   FUNC(sin) (0);
13348   if (errno == ENOSYS)
13349     /* Function not implemented.  */
13350     return;
13351
13352   START (sin_tonearest);
13353   RUN_TEST_LOOP_f_f (sin, sin_tonearest_test_data, FE_TONEAREST);
13354   END (sin_tonearest);
13355 }
13356
13357
13358 static const struct test_f_f_data sin_towardzero_test_data[] =
13359   {
13360     START_DATA (sin_towardzero),
13361     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13362     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13363     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13364     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13365     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13366     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13367     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13368     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13369     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13370     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13371     END_DATA (sin_towardzero)
13372   };
13373
13374 static void
13375 sin_test_towardzero (void)
13376 {
13377   errno = 0;
13378   FUNC(sin) (0);
13379   if (errno == ENOSYS)
13380     /* Function not implemented.  */
13381     return;
13382
13383   START (sin_towardzero);
13384   RUN_TEST_LOOP_f_f (sin, sin_towardzero_test_data, FE_TOWARDZERO);
13385   END (sin_towardzero);
13386 }
13387
13388
13389 static const struct test_f_f_data sin_downward_test_data[] =
13390   {
13391     START_DATA (sin_downward),
13392     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13393     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13394     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13395     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13396     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13397     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13398     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13399     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13400     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13401     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13402     END_DATA (sin_downward)
13403   };
13404
13405 static void
13406 sin_test_downward (void)
13407 {
13408   errno = 0;
13409   FUNC(sin) (0);
13410   if (errno == ENOSYS)
13411     /* Function not implemented.  */
13412     return;
13413
13414   START (sin_downward);
13415   RUN_TEST_LOOP_f_f (sin, sin_downward_test_data, FE_DOWNWARD);
13416   END (sin_downward);
13417 }
13418
13419
13420 static const struct test_f_f_data sin_upward_test_data[] =
13421   {
13422     START_DATA (sin_upward),
13423     TEST_f_f (sin, 1, 0.8414709848078965066525023216302989996226L),
13424     TEST_f_f (sin, 2, 0.9092974268256816953960198659117448427023L),
13425     TEST_f_f (sin, 3, 0.1411200080598672221007448028081102798469L),
13426     TEST_f_f (sin, 4, -0.7568024953079282513726390945118290941359L),
13427     TEST_f_f (sin, 5, -0.9589242746631384688931544061559939733525L),
13428     TEST_f_f (sin, 6, -0.2794154981989258728115554466118947596280L),
13429     TEST_f_f (sin, 7, 0.6569865987187890903969990915936351779369L),
13430     TEST_f_f (sin, 8, 0.9893582466233817778081235982452886721164L),
13431     TEST_f_f (sin, 9, 0.4121184852417565697562725663524351793439L),
13432     TEST_f_f (sin, 10, -0.5440211108893698134047476618513772816836L),
13433     END_DATA (sin_upward)
13434   };
13435
13436 static void
13437 sin_test_upward (void)
13438 {
13439   errno = 0;
13440   FUNC(sin) (0);
13441   if (errno == ENOSYS)
13442     /* Function not implemented.  */
13443     return;
13444
13445   START (sin_upward);
13446   RUN_TEST_LOOP_f_f (sin, sin_upward_test_data, FE_UPWARD);
13447   END (sin_upward);
13448 }
13449
13450
13451 static void
13452 sincos_test (void)
13453 {
13454   FLOAT sin_res, cos_res;
13455
13456   errno = 0;
13457   FUNC(sincos) (0, &sin_res, &cos_res);
13458   if (errno == ENOSYS)
13459     /* Function not implemented.  */
13460     return;
13461
13462   START (sincos);
13463
13464   /* sincos is treated differently because it returns void.  */
13465   TEST_extra (sincos, 0, 0, 1);
13466
13467   TEST_extra (sincos, minus_zero, minus_zero, 1);
13468   TEST_extra (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13469   TEST_extra (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION);
13470   TEST_extra (sincos, qnan_value, qnan_value, qnan_value);
13471
13472   /* The value of M_PI_2l is never exactly PI/2, and therefore the
13473      answer is never exactly zero. The answer is equal to the error
13474      in rounding PI/2 for the type used.  Thus the answer is unique
13475      to each type.  */
13476 #ifdef TEST_FLOAT
13477   /* 32-bit float.  */
13478   TEST_extra (sincos, M_PI_2l, 1, -0x1.777a5cp-25L);
13479 #endif
13480 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
13481   /* 64-bit double or 64-bit long double.  */
13482   TEST_extra (sincos, M_PI_2l, 1, 0x1.1a62633145c07p-54L);
13483 #endif
13484 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
13485   /* 96-bit long double.  */
13486   TEST_extra (sincos, M_PI_2l, 1, -0xe.ce675d1fc8f8cbbp-69L);
13487 #endif
13488 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
13489   /* 128-bit IBM long double.  */
13490   TEST_extra (sincos, M_PI_2l, 1, 0x1.c1cd129024e088a67cc74020bcp-107L);
13491 #endif
13492 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
13493   /* 128-bit long double.  */
13494   TEST_extra (sincos, M_PI_2l, 1, 0x1.cd129024e088a67cc74020bbea64p-115L);
13495 #endif
13496
13497   TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L);
13498   TEST_extra (sincos, M_PI_6l*2.0, 0.86602540378443864676372317075293616L, 0.5);
13499   TEST_extra (sincos, 0.75L, 0.681638760023334166733241952779893935L, 0.731688868873820886311838753000084544L);
13500
13501   TEST_extra (sincos, 0x1p65, -0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13502   TEST_extra (sincos, -0x1p65, 0.047183876212354673805106149805700013943218L, 0.99888622066058013610642172179340364209972L);
13503
13504 #ifdef TEST_DOUBLE
13505   TEST_extra (sincos, 0.80190127184058835, 0.71867942238767868, 0.69534156199418473);
13506 #endif
13507
13508 #ifndef TEST_FLOAT
13509   TEST_extra (sincos, 1e22, -0.8522008497671888017727058937530293682618L, 0.5232147853951389454975944733847094921409L);
13510   TEST_extra (sincos, 0x1p1023, 0.5631277798508840134529434079444683477104L, -0.826369834614147994500785680811743734805L);
13511 #endif
13512
13513 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13514   TEST_extra (sincos, 0x1p16383L, 0.3893629985894208126948115852610595405563L, 0.9210843909921906206874509522505756251609L);
13515 #endif
13516
13517   TEST_extra (sincos, 0x1p+120, 3.77820109360752022655548470056922991960587e-01L, -9.25879022854837867303861764107414946730833e-01L);
13518   TEST_extra (sincos, 0x1p+127, 6.23385512955870240370428801097126489001833e-01L, 7.81914638714960072263910298466369236613162e-01L);
13519   TEST_extra (sincos, 0x1.fffff8p+127, 4.85786063130487339701113680434728152037092e-02L, 9.98819362551949040703862043664101081064641e-01L);
13520   TEST_extra (sincos, 0x1.fffffep+127, -5.21876523333658540551505357019806722935726e-01L, 8.53021039830304158051791467692161107353094e-01L);
13521   TEST_extra (sincos, 0x1p+50, 4.96396515208940840876821859865411368093356e-01L, 8.68095904660550604334592502063501320395739e-01L);
13522   TEST_extra (sincos, 0x1p+28, -9.86198211836975655703110310527108292055548e-01L, -1.65568979490578758865468278195361551113358e-01L);
13523
13524   END (sincos);
13525 }
13526
13527 static const struct test_f_f_data sinh_test_data[] =
13528   {
13529     START_DATA (sinh),
13530     TEST_f_f (sinh, 0, 0),
13531     TEST_f_f (sinh, minus_zero, minus_zero),
13532
13533 #ifndef TEST_INLINE
13534     TEST_f_f (sinh, plus_infty, plus_infty),
13535     TEST_f_f (sinh, minus_infty, minus_infty),
13536 #endif
13537     TEST_f_f (sinh, qnan_value, qnan_value),
13538
13539     TEST_f_f (sinh, 0.75L, 0.822316731935829980703661634446913849L),
13540     TEST_f_f (sinh, 0x8p-32L, 1.86264514923095703232705808926175479e-9L),
13541     END_DATA (sinh)
13542   };
13543
13544 static void
13545 sinh_test (void)
13546 {
13547   errno = 0;
13548   FUNC(sinh) (0.7L);
13549   if (errno == ENOSYS)
13550     /* Function not implemented.  */
13551     return;
13552
13553   START (sinh);
13554   RUN_TEST_LOOP_f_f (sinh, sinh_test_data, );
13555   END (sinh);
13556 }
13557
13558
13559 static const struct test_f_f_data sinh_tonearest_test_data[] =
13560   {
13561     START_DATA (sinh_tonearest),
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_tonearest)
13566   };
13567
13568 static void
13569 sinh_test_tonearest (void)
13570 {
13571   errno = 0;
13572   FUNC(sinh) (0);
13573   if (errno == ENOSYS)
13574     /* Function not implemented.  */
13575     return;
13576
13577   START (sinh_tonearest);
13578   RUN_TEST_LOOP_f_f (sinh, sinh_tonearest_test_data, FE_TONEAREST);
13579   END (sinh_tonearest);
13580 }
13581
13582
13583 static const struct test_f_f_data sinh_towardzero_test_data[] =
13584   {
13585     START_DATA (sinh_towardzero),
13586     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13587     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13588     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13589     END_DATA (sinh_towardzero)
13590   };
13591
13592 static void
13593 sinh_test_towardzero (void)
13594 {
13595   errno = 0;
13596   FUNC(sinh) (0);
13597   if (errno == ENOSYS)
13598     /* Function not implemented.  */
13599     return;
13600
13601   START (sinh_towardzero);
13602   RUN_TEST_LOOP_f_f (sinh, sinh_towardzero_test_data, FE_TOWARDZERO);
13603   END (sinh_towardzero);
13604 }
13605
13606
13607 static const struct test_f_f_data sinh_downward_test_data[] =
13608   {
13609     START_DATA (sinh_downward),
13610     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13611     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13612     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13613     END_DATA (sinh_downward)
13614   };
13615
13616 static void
13617 sinh_test_downward (void)
13618 {
13619   errno = 0;
13620   FUNC(sinh) (0);
13621   if (errno == ENOSYS)
13622     /* Function not implemented.  */
13623     return;
13624
13625   START (sinh_downward);
13626   RUN_TEST_LOOP_f_f (sinh, sinh_downward_test_data, FE_DOWNWARD);
13627   END (sinh_downward);
13628 }
13629
13630
13631 static const struct test_f_f_data sinh_upward_test_data[] =
13632   {
13633     START_DATA (sinh_upward),
13634     TEST_f_f (sinh, 22, 1792456423.065795780701106568345764104225L),
13635     TEST_f_f (sinh, 23, 4872401723.124451299966006944252978187305L),
13636     TEST_f_f (sinh, 24, 13244561064.92173614705070540368454568168L),
13637     END_DATA (sinh_upward)
13638   };
13639
13640 static void
13641 sinh_test_upward (void)
13642 {
13643   errno = 0;
13644   FUNC(sinh) (0);
13645   if (errno == ENOSYS)
13646     /* Function not implemented.  */
13647     return;
13648
13649   START (sinh_upward);
13650   RUN_TEST_LOOP_f_f (sinh, sinh_upward_test_data, FE_UPWARD);
13651   END (sinh_upward);
13652 }
13653
13654
13655 static const struct test_f_f_data sqrt_test_data[] =
13656   {
13657     START_DATA (sqrt),
13658     TEST_f_f (sqrt, 0, 0),
13659     TEST_f_f (sqrt, qnan_value, qnan_value),
13660     TEST_f_f (sqrt, plus_infty, plus_infty),
13661
13662     TEST_f_f (sqrt, minus_zero, minus_zero),
13663
13664     /* sqrt (x) == qNaN plus invalid exception for x < 0.  */
13665     TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION),
13666     TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION),
13667     TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION),
13668
13669     TEST_f_f (sqrt, 2209, 47),
13670     TEST_f_f (sqrt, 4, 2),
13671     TEST_f_f (sqrt, 2, M_SQRT2l),
13672     TEST_f_f (sqrt, 0.25, 0.5),
13673     TEST_f_f (sqrt, 6642.25, 81.5),
13674     TEST_f_f (sqrt, 15190.5625L, 123.25L),
13675     TEST_f_f (sqrt, 0.75L, 0.866025403784438646763723170752936183L),
13676     END_DATA (sqrt)
13677   };
13678
13679 static void
13680 sqrt_test (void)
13681 {
13682   errno = 0;
13683   FUNC(sqrt) (1);
13684   if (errno == ENOSYS)
13685     /* Function not implemented.  */
13686     return;
13687
13688   START (sqrt);
13689   RUN_TEST_LOOP_f_f (sqrt, sqrt_test_data, );
13690   END (sqrt);
13691 }
13692
13693
13694 static const struct test_f_f_data tan_test_data[] =
13695   {
13696     START_DATA (tan),
13697     TEST_f_f (tan, 0, 0),
13698     TEST_f_f (tan, minus_zero, minus_zero),
13699     TEST_f_f (tan, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13700     TEST_f_f (tan, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13701     TEST_f_f (tan, qnan_value, qnan_value, ERRNO_UNCHANGED),
13702
13703     TEST_f_f (tan, M_PI_4l, 1),
13704     TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L),
13705
13706     TEST_f_f (tan, 0x1p65, -0.0472364872359047946798414219288370688827L),
13707     TEST_f_f (tan, -0x1p65, 0.0472364872359047946798414219288370688827L),
13708
13709     TEST_f_f (tan, 0xc.9p-4, 0.9995162902115457818029468900654150261381L),
13710     TEST_f_f (tan, 0xc.908p-4, 0.9997603425502441410973077452249560802034L),
13711     TEST_f_f (tan, 0xc.90cp-4, 0.9998823910588060302788513970802357770031L),
13712     TEST_f_f (tan, 0xc.90ep-4, 0.9999434208994808753305784795924711152508L),
13713     TEST_f_f (tan, 0xc.90fp-4, 0.9999739372166156702433266059635165160515L),
13714     TEST_f_f (tan, 0xc.90f8p-4, 0.9999891957244072765118898375645469865764L),
13715     TEST_f_f (tan, 0xc.90fcp-4, 0.9999968250656122402859679132395522927393L),
13716     TEST_f_f (tan, 0xc.90fdp-4, 0.9999987324100083358016192309006353329444L),
13717     TEST_f_f (tan, 0xc.90fd8p-4, 0.9999996860835706212861509874451585282616L),
13718     TEST_f_f (tan, 0xc.90fdap-4, 0.9999999245021033010474530133665235922808L),
13719     TEST_f_f (tan, 0xc.ap-4, 1.0073556597407272165371804539701396631519L),
13720     TEST_f_f (tan, 0xc.98p-4, 1.0034282930863044654045449407466962736255L),
13721     TEST_f_f (tan, 0xc.94p-4, 1.0014703786820082237342656561856877993328L),
13722     TEST_f_f (tan, 0xc.92p-4, 1.0004928571392300571266638743539017593717L),
13723     TEST_f_f (tan, 0xc.91p-4, 1.0000044544650244953647966900221905361131L),
13724     TEST_f_f (tan, 0xc.90fep-4, 1.0000006397580424009014454926842136804016L),
13725     TEST_f_f (tan, 0xc.90fdcp-4, 1.0000001629206928242190327320047489394217L),
13726     TEST_f_f (tan, 0xc.90fdbp-4, 1.0000000437113909572052640953950483705005L),
13727
13728     TEST_f_f (tan, -0xc.9p-4, -0.9995162902115457818029468900654150261381L),
13729     TEST_f_f (tan, -0xc.908p-4, -0.9997603425502441410973077452249560802034L),
13730     TEST_f_f (tan, -0xc.90cp-4, -0.9998823910588060302788513970802357770031L),
13731     TEST_f_f (tan, -0xc.90ep-4, -0.9999434208994808753305784795924711152508L),
13732     TEST_f_f (tan, -0xc.90fp-4, -0.9999739372166156702433266059635165160515L),
13733     TEST_f_f (tan, -0xc.90f8p-4, -0.9999891957244072765118898375645469865764L),
13734     TEST_f_f (tan, -0xc.90fcp-4, -0.9999968250656122402859679132395522927393L),
13735     TEST_f_f (tan, -0xc.90fdp-4, -0.9999987324100083358016192309006353329444L),
13736     TEST_f_f (tan, -0xc.90fd8p-4, -0.9999996860835706212861509874451585282616L),
13737     TEST_f_f (tan, -0xc.90fdap-4, -0.9999999245021033010474530133665235922808L),
13738     TEST_f_f (tan, -0xc.ap-4, -1.0073556597407272165371804539701396631519L),
13739     TEST_f_f (tan, -0xc.98p-4, -1.0034282930863044654045449407466962736255L),
13740     TEST_f_f (tan, -0xc.94p-4, -1.0014703786820082237342656561856877993328L),
13741     TEST_f_f (tan, -0xc.92p-4, -1.0004928571392300571266638743539017593717L),
13742     TEST_f_f (tan, -0xc.91p-4, -1.0000044544650244953647966900221905361131L),
13743     TEST_f_f (tan, -0xc.90fep-4, -1.0000006397580424009014454926842136804016L),
13744     TEST_f_f (tan, -0xc.90fdcp-4, -1.0000001629206928242190327320047489394217L),
13745     TEST_f_f (tan, -0xc.90fdbp-4, -1.0000000437113909572052640953950483705005L),
13746
13747 #ifndef TEST_FLOAT
13748     TEST_f_f (tan, 1e22, -1.628778225606898878549375936939548513545L),
13749     TEST_f_f (tan, 0x1p1023, -0.6814476476066215012854144040167365190368L),
13750 #endif
13751
13752 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
13753     TEST_f_f (tan, 0x1p16383L, 0.422722393732022337800504160054440141575L),
13754 #endif
13755     END_DATA (tan)
13756   };
13757
13758 static void
13759 tan_test (void)
13760 {
13761   errno = 0;
13762   FUNC(tan) (0);
13763   if (errno == ENOSYS)
13764     /* Function not implemented.  */
13765     return;
13766
13767   START (tan);
13768   RUN_TEST_LOOP_f_f (tan, tan_test_data, );
13769   END (tan);
13770 }
13771
13772
13773 static const struct test_f_f_data tan_tonearest_test_data[] =
13774   {
13775     START_DATA (tan_tonearest),
13776     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13777     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13778     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13779     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13780     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13781     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13782     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13783     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13784     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13785     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13786     END_DATA (tan_tonearest)
13787   };
13788
13789 static void
13790 tan_test_tonearest (void)
13791 {
13792   errno = 0;
13793   FUNC(tan) (0);
13794   if (errno == ENOSYS)
13795     /* Function not implemented.  */
13796     return;
13797
13798   START (tan_tonearest);
13799   RUN_TEST_LOOP_f_f (tan, tan_tonearest_test_data, FE_TONEAREST);
13800   END (tan_tonearest);
13801 }
13802
13803
13804 static const struct test_f_f_data tan_towardzero_test_data[] =
13805   {
13806     START_DATA (tan_towardzero),
13807     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13808     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13809     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13810     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13811     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13812     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13813     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13814     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13815     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13816     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13817     END_DATA (tan_towardzero)
13818   };
13819
13820 static void
13821 tan_test_towardzero (void)
13822 {
13823   errno = 0;
13824   FUNC(tan) (0);
13825   if (errno == ENOSYS)
13826     /* Function not implemented.  */
13827     return;
13828
13829   START (tan_towardzero);
13830   RUN_TEST_LOOP_f_f (tan, tan_towardzero_test_data, FE_TOWARDZERO);
13831   END (tan_towardzero);
13832 }
13833
13834
13835 static const struct test_f_f_data tan_downward_test_data[] =
13836   {
13837     START_DATA (tan_downward),
13838     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13839     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13840     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13841     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13842     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13843     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13844     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13845     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13846     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13847     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13848     END_DATA (tan_downward)
13849   };
13850
13851 static void
13852 tan_test_downward (void)
13853 {
13854   errno = 0;
13855   FUNC(tan) (0);
13856   if (errno == ENOSYS)
13857     /* Function not implemented.  */
13858     return;
13859
13860   START (tan_downward);
13861   RUN_TEST_LOOP_f_f (tan, tan_downward_test_data, FE_DOWNWARD);
13862   END (tan_downward);
13863 }
13864
13865
13866 static const struct test_f_f_data tan_upward_test_data[] =
13867   {
13868     START_DATA (tan_upward),
13869     TEST_f_f (tan, 1, 1.5574077246549022305069748074583601730873L),
13870     TEST_f_f (tan, 2, -2.1850398632615189916433061023136825434320L),
13871     TEST_f_f (tan, 3, -0.1425465430742778052956354105339134932261L),
13872     TEST_f_f (tan, 4, 1.1578212823495775831373424182673239231198L),
13873     TEST_f_f (tan, 5, -3.3805150062465856369827058794473439087096L),
13874     TEST_f_f (tan, 6, -0.2910061913847491570536995888681755428312L),
13875     TEST_f_f (tan, 7, 0.8714479827243187364564508896003135663222L),
13876     TEST_f_f (tan, 8, -6.7997114552203786999252627596086333648814L),
13877     TEST_f_f (tan, 9, -0.4523156594418098405903708757987855343087L),
13878     TEST_f_f (tan, 10, 0.6483608274590866712591249330098086768169L),
13879     END_DATA (tan_upward)
13880   };
13881
13882 static void
13883 tan_test_upward (void)
13884 {
13885   errno = 0;
13886   FUNC(tan) (0);
13887   if (errno == ENOSYS)
13888     /* Function not implemented.  */
13889     return;
13890
13891   START (tan_upward);
13892   RUN_TEST_LOOP_f_f (tan, tan_upward_test_data, FE_UPWARD);
13893   END (tan_upward);
13894 }
13895
13896
13897 static const struct test_f_f_data tanh_test_data[] =
13898   {
13899     START_DATA (tanh),
13900     TEST_f_f (tanh, 0, 0),
13901     TEST_f_f (tanh, minus_zero, minus_zero),
13902
13903 #ifndef TEST_INLINE
13904     TEST_f_f (tanh, plus_infty, 1),
13905     TEST_f_f (tanh, minus_infty, -1),
13906 #endif
13907     TEST_f_f (tanh, qnan_value, qnan_value),
13908
13909     TEST_f_f (tanh, 0.75L, 0.635148952387287319214434357312496495L),
13910     TEST_f_f (tanh, -0.75L, -0.635148952387287319214434357312496495L),
13911
13912     TEST_f_f (tanh, 1.0L, 0.7615941559557648881194582826047935904L),
13913     TEST_f_f (tanh, -1.0L, -0.7615941559557648881194582826047935904L),
13914
13915     /* 2^-57  */
13916     TEST_f_f (tanh, 0x1p-57L, 6.938893903907228377647697925567626953125e-18L),
13917     END_DATA (tanh)
13918   };
13919
13920 static void
13921 tanh_test (void)
13922 {
13923   errno = 0;
13924   FUNC(tanh) (0.7L);
13925   if (errno == ENOSYS)
13926     /* Function not implemented.  */
13927     return;
13928
13929   START (tanh);
13930   RUN_TEST_LOOP_f_f (tanh, tanh_test_data, );
13931   END (tanh);
13932 }
13933
13934 static const struct test_f_f_data tgamma_test_data[] =
13935   {
13936     START_DATA (tgamma),
13937     TEST_f_f (tgamma, plus_infty, plus_infty),
13938     TEST_f_f (tgamma, max_value, plus_infty, OVERFLOW_EXCEPTION),
13939     TEST_f_f (tgamma, 0, plus_infty, DIVIDE_BY_ZERO_EXCEPTION),
13940     TEST_f_f (tgamma, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION),
13941     /* tgamma (x) == qNaN plus invalid exception for integer x <= 0.  */
13942     TEST_f_f (tgamma, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13943     TEST_f_f (tgamma, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13944     TEST_f_f (tgamma, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
13945     TEST_f_f (tgamma, qnan_value, qnan_value),
13946
13947     TEST_f_f (tgamma, 0.5, M_SQRT_PIl),
13948     TEST_f_f (tgamma, -0.5, -M_2_SQRT_PIl),
13949
13950     TEST_f_f (tgamma, 1, 1),
13951     TEST_f_f (tgamma, 2, 1),
13952     TEST_f_f (tgamma, 3, 2),
13953     TEST_f_f (tgamma, 4, 6),
13954     TEST_f_f (tgamma, 5, 24),
13955     TEST_f_f (tgamma, 6, 120),
13956     TEST_f_f (tgamma, 7, 720),
13957     TEST_f_f (tgamma, 8, 5040),
13958     TEST_f_f (tgamma, 9,  40320),
13959     TEST_f_f (tgamma, 10, 362880),
13960
13961     TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L),
13962     TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L),
13963
13964     TEST_f_f (tgamma, 1.5L, 8.8622692545275801364908374167057259139877e-01L),
13965     TEST_f_f (tgamma, 2.5L, 1.3293403881791370204736256125058588870982e+00L),
13966     TEST_f_f (tgamma, 3.5L, 3.3233509704478425511840640312646472177454e+00L),
13967     TEST_f_f (tgamma, 4.5L, 1.1631728396567448929144224109426265262109e+01L),
13968     TEST_f_f (tgamma, 5.5L, 5.2342777784553520181149008492418193679490e+01L),
13969     TEST_f_f (tgamma, 6.5L, 2.8788527781504436099631954670830006523720e+02L),
13970     TEST_f_f (tgamma, 7.5L, 1.8712543057977883464760770536039504240418e+03L),
13971     TEST_f_f (tgamma, 8.5L, 1.4034407293483412598570577902029628180313e+04L),
13972     TEST_f_f (tgamma, 9.5L, 1.1929246199460900708784991216725183953266e+05L),
13973     TEST_f_f (tgamma, -1.5L, 2.3632718012073547030642233111215269103967e+00L),
13974     TEST_f_f (tgamma, -2.5L, -9.4530872048294188122568932444861076415869e-01L),
13975     TEST_f_f (tgamma, -3.5L, 2.7008820585226910892162552127103164690248e-01L),
13976     TEST_f_f (tgamma, -4.5L, -6.0019601300504246427027893615784810422774e-02L),
13977     TEST_f_f (tgamma, -5.5L, 1.0912654781909862986732344293779056440504e-02L),
13978     TEST_f_f (tgamma, -6.5L, -1.6788699664476712287280529682737009908468e-03L),
13979     TEST_f_f (tgamma, -7.5L, 2.2384932885968949716374039576982679877958e-04L),
13980     TEST_f_f (tgamma, -8.5L, -2.6335215159963470254557693619979623385833e-05L),
13981     TEST_f_f (tgamma, -9.5L, 2.7721279115751021320587045915768024616666e-06L),
13982     TEST_f_f (tgamma, 0x1p-24L, 1.6777215422784394050795179874582764575261e+07L),
13983     TEST_f_f (tgamma, -0x1p-24L, -1.6777216577215723853867349114260580375249e+07L),
13984     TEST_f_f (tgamma, 0x1p-53L, 9.0071992547409914227843350984672492007618e+15L),
13985     TEST_f_f (tgamma, -0x1p-53L, -9.0071992547409925772156649015329704137860e+15L),
13986     TEST_f_f (tgamma, 0x1p-64L, 1.8446744073709551615422784335098467139447e+19L),
13987     TEST_f_f (tgamma, -0x1p-64L, -1.8446744073709551616577215664901532860660e+19L),
13988     TEST_f_f (tgamma, 0x1p-106L, 8.1129638414606681695789005144063422784335e+31L),
13989     TEST_f_f (tgamma, -0x1p-106L, -8.1129638414606681695789005144064577215665e+31L),
13990     TEST_f_f (tgamma, 0x1p-113L, 1.0384593717069655257060992658440191422784e+34L),
13991     TEST_f_f (tgamma, -0x1p-113L, -1.0384593717069655257060992658440192577216e+34L),
13992     TEST_f_f (tgamma, 0x1p-127L, 1.7014118346046923173168730371588410572742e+38L),
13993     TEST_f_f (tgamma, -0x1p-127L, -1.7014118346046923173168730371588410572858e+38L),
13994 #ifdef TEST_FLOAT
13995     TEST_f_f (tgamma, 0x1p-128L, plus_infty, OVERFLOW_EXCEPTION),
13996     TEST_f_f (tgamma, -0x1p-128L, minus_infty, OVERFLOW_EXCEPTION),
13997     TEST_f_f (tgamma, 0x1p-149L, plus_infty, OVERFLOW_EXCEPTION),
13998     TEST_f_f (tgamma, -0x1p-149L, minus_infty, OVERFLOW_EXCEPTION),
13999 #else
14000     TEST_f_f (tgamma, 0x1p-128L, 3.4028236692093846346337460743176821145542e+38L),
14001     TEST_f_f (tgamma, -0x1p-128L, -3.4028236692093846346337460743176821145658e+38L),
14002     TEST_f_f (tgamma, 0x1p-149L, 7.1362384635297994052914298472474756819137e+44L),
14003     TEST_f_f (tgamma, -0x1p-149L, -7.1362384635297994052914298472474756819137e+44L),
14004 #endif
14005 #ifndef TEST_FLOAT
14006     TEST_f_f (tgamma, 0x1p-1023L, 8.9884656743115795386465259539451236680899e+307L),
14007     TEST_f_f (tgamma, -0x1p-1023L, -8.9884656743115795386465259539451236680899e+307L),
14008 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14009     TEST_f_f (tgamma, 0x1p-1024L, plus_infty, OVERFLOW_EXCEPTION),
14010     TEST_f_f (tgamma, -0x1p-1024L, minus_infty, OVERFLOW_EXCEPTION),
14011     TEST_f_f (tgamma, 0x1p-1074L, plus_infty, OVERFLOW_EXCEPTION),
14012     TEST_f_f (tgamma, -0x1p-1074L, minus_infty, OVERFLOW_EXCEPTION),
14013 # else
14014     TEST_f_f (tgamma, 0x1p-1024L, 1.7976931348623159077293051907890247336180e+308L),
14015     TEST_f_f (tgamma, -0x1p-1024L, -1.7976931348623159077293051907890247336180e+308L),
14016     TEST_f_f (tgamma, 0x1p-1074L, 2.0240225330731061835249534671891730704956e+323L),
14017     TEST_f_f (tgamma, -0x1p-1074L, -2.0240225330731061835249534671891730704956e+323L),
14018 # endif
14019 #endif
14020 #if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
14021     TEST_f_f (tgamma, 0x1p-16383L, 5.9486574767861588254287966331400356538172e+4931L),
14022     TEST_f_f (tgamma, -0x1p-16383L, -5.9486574767861588254287966331400356538172e+4931L),
14023     TEST_f_f (tgamma, 0x1p-16384L, plus_infty, OVERFLOW_EXCEPTION),
14024     TEST_f_f (tgamma, -0x1p-16384L, minus_infty, OVERFLOW_EXCEPTION),
14025     TEST_f_f (tgamma, 0x1p-16445L, plus_infty, OVERFLOW_EXCEPTION),
14026     TEST_f_f (tgamma, -0x1p-16445L, minus_infty, OVERFLOW_EXCEPTION),
14027 # if LDBL_MANT_DIG >= 113
14028     TEST_f_f (tgamma, 0x1p-16494L, plus_infty, OVERFLOW_EXCEPTION),
14029     TEST_f_f (tgamma, -0x1p-16494L, minus_infty, OVERFLOW_EXCEPTION),
14030 # endif
14031 #endif
14032     TEST_f_f (tgamma, 0x8.00001p0L, 5.0400096882277802019946778420223050233915e+03L),
14033     TEST_f_f (tgamma, 0x7.fffff8p0L, 5.0399951558933225045148935487583089307135e+03L),
14034     TEST_f_f (tgamma, 0x7.000008p0L, 7.2000064296977505705636258629805621178587e+02L),
14035     TEST_f_f (tgamma, 0x6.fffff8p0L, 7.1999935703082425988147448928288557689866e+02L),
14036     TEST_f_f (tgamma, 0x6.000008p0L, 1.2000009762487825358530770343720418162783e+02L),
14037     TEST_f_f (tgamma, 0x5.fffff8p0L, 1.1999990237520611552119807476573441975106e+02L),
14038     TEST_f_f (tgamma, 0x5.000008p0L, 2.4000017236155647574166073485628713443799e+01L),
14039     TEST_f_f (tgamma, 0x4.fffff8p0L, 2.3999982763857938712639837029547357501709e+01L),
14040     TEST_f_f (tgamma, 0x4.000008p0L, 6.0000035937827461765660468073471093546129e+00L),
14041     TEST_f_f (tgamma, 0x3.fffffcp0L, 5.9999982031095793171233994481968816873643e+00L),
14042     TEST_f_f (tgamma, 0x3.000004p0L, 2.0000004400179308360529417942462250547999e+00L),
14043     TEST_f_f (tgamma, 0x2.fffffcp0L, 1.9999995599822108706107786027549565954046e+00L),
14044     TEST_f_f (tgamma, 0x2.000004p0L, 1.0000001007996638509889062631687945799175e+00L),
14045     TEST_f_f (tgamma, 0x1.fffffep0L, 9.9999994960018563231526611134590489120697e-01L),
14046     TEST_f_f (tgamma, 0x1.000002p0L, 9.9999993119054472483596471908942669644327e-01L),
14047     TEST_f_f (tgamma, 0x0.ffffffp0L, 1.0000000344047381790797322460568297132998e+00L),
14048     TEST_f_f (tgamma, -0x0.ffffffp0L, -1.6777216422784419250710305882992376932423e+07L),
14049     TEST_f_f (tgamma, -0x1.000002p0L, 8.3886075772158332060084424806449513922858e+06L),
14050     TEST_f_f (tgamma, -0x1.fffffep0L, 4.1943044613922792026014320172298377770578e+06L),
14051     TEST_f_f (tgamma, -0x2.000004p0L, -2.0971515386080557574407223895988378776747e+06L),
14052     TEST_f_f (tgamma, -0x2.fffffcp0L, -6.9905087601970247876992248591045142913324e+05L),
14053     TEST_f_f (tgamma, -0x3.000004p0L, 6.9905045731381300146131914617735687322025e+05L),
14054     TEST_f_f (tgamma, -0x3.fffffcp0L, 1.7476272942159602684441970627092458855771e+05L),
14055     TEST_f_f (tgamma, -0x4.000008p0L, -8.7381270578483499672965708923121931082305e+04L),
14056     TEST_f_f (tgamma, -0x4.fffff8p0L, -1.7476280884325863043793087474680780379554e+04L),
14057     TEST_f_f (tgamma, -0x5.000008p0L, 1.7476252449031389167286893378510439443844e+04L),
14058     TEST_f_f (tgamma, -0x5.fffff8p0L, 2.9127137122026653716311560165769071985443e+03L),
14059     TEST_f_f (tgamma, -0x6.000008p0L, -2.9127085100239567622341538102130981196910e+03L),
14060     TEST_f_f (tgamma, -0x6.fffff8p0L, -4.1610198723079349791939054365613377035519e+02L),
14061     TEST_f_f (tgamma, -0x7.000008p0L, 4.1610118737306415004517215226199741948733e+02L),
14062     TEST_f_f (tgamma, -0x7.fffff8p0L, 5.2012751504050764429534086402871289946986e+01L),
14063     TEST_f_f (tgamma, -0x8.00001p0L, -2.6006296115134418896533598545925084576702e+01L),
14064     TEST_f_f (tgamma, -0x9.fffffp0L, 2.8896008370721717567612135720915723136310e-01L),
14065     TEST_f_f (tgamma, -0xa.00001p0L, -2.8895878754728051776830454190076999107021e-01L),
14066     TEST_f_f (tgamma, -0x13.ffffep0L, 2.1550026214525536756224040483579183652119e-13L),
14067     TEST_f_f (tgamma, -0x14.00002p0L, -2.1549777908265594916405421768142757507179e-13L),
14068     TEST_f_f (tgamma, -0x1d.ffffep0L, 1.9765721589464867957912772592816027583176e-27L),
14069     TEST_f_f (tgamma, -0x1e.00002p0L, -1.9765463890341964384070157599286498212650e-27L),
14070     TEST_f_f (tgamma, -0x27.ffffcp0L, 3.2129279441390812141195076945616975790225e-43L, UNDERFLOW_EXCEPTION_FLOAT),
14071     TEST_f_f (tgamma, -0x28.00004p0L, -3.2128372159115252365699015758097981155793e-43L, UNDERFLOW_EXCEPTION_FLOAT),
14072     TEST_f_f (tgamma, -0x28.ffffcp0L, -7.8364103489619817539676737414096652170685e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14073     TEST_f_f (tgamma, -0x29.00004p0L, 7.8361876024016854597745353972619195760515e-45L, UNDERFLOW_EXCEPTION_FLOAT),
14074 #ifdef TEST_FLOAT
14075     TEST_f_f (tgamma, -0x29.ffffcp0L, plus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14076     TEST_f_f (tgamma, -0x2a.00004p0L, minus_zero, UNDERFLOW_EXCEPTION_FLOAT),
14077 #else
14078     TEST_f_f (tgamma, -0x29.ffffcp0L, 1.8658121573125798145204120066590953505132e-46L),
14079     TEST_f_f (tgamma, -0x2a.00004p0L, -1.8657587834931410688246126853566488626385e-46L),
14080 #endif
14081 #ifndef TEST_FLOAT
14082     TEST_f_f (tgamma, 0x8.0000000000008p0L, 5.0400000000000180457125667322294144477136e+03L),
14083     TEST_f_f (tgamma, 0x7.ffffffffffffcp0L, 5.0399999999999909771437166339103165198442e+03L),
14084     TEST_f_f (tgamma, 0x7.0000000000004p0L, 7.2000000000000119762397445457359071259652e+02L),
14085     TEST_f_f (tgamma, 0x6.ffffffffffffcp0L, 7.1999999999999880237602554542848858572672e+02L),
14086     TEST_f_f (tgamma, 0x6.0000000000004p0L, 1.2000000000000018184042734842640022086408e+02L),
14087     TEST_f_f (tgamma, 0x5.ffffffffffffcp0L, 1.1999999999999981815957265157389249327533e+02L),
14088     TEST_f_f (tgamma, 0x5.0000000000004p0L, 2.4000000000000032104829055124673225982803e+01L),
14089     TEST_f_f (tgamma, 0x4.ffffffffffffcp0L, 2.3999999999999967895170944875373910918544e+01L),
14090     TEST_f_f (tgamma, 0x4.0000000000004p0L, 6.0000000000000066939396342309789716341613e+00L),
14091     TEST_f_f (tgamma, 0x3.ffffffffffffep0L, 5.9999999999999966530301828845138185025345e+00L),
14092     TEST_f_f (tgamma, 0x3.0000000000002p0L, 2.0000000000000008195971324717875960213536e+00L),
14093     TEST_f_f (tgamma, 0x2.ffffffffffffep0L, 1.9999999999999991804028675282128956223990e+00L),
14094     TEST_f_f (tgamma, 0x2.0000000000002p0L, 1.0000000000000001877539613108624482361963e+00L),
14095     TEST_f_f (tgamma, 0x1.fffffffffffffp0L, 9.9999999999999990612301934456883679778984e-01L),
14096     TEST_f_f (tgamma, 0x1.0000000000001p0L, 9.9999999999999987183237573039992418700531e-01L),
14097     TEST_f_f (tgamma, 0x0.fffffffffffff8p0L, 1.0000000000000000640838121348000744796665e+00L),
14098     TEST_f_f (tgamma, -0x0.fffffffffffff8p0L, -9.0071992547409924227843350984672961392521e+15L),
14099     TEST_f_f (tgamma, -0x1.0000000000001p0L, 4.5035996273704955772156649015331740980405e+15L),
14100     TEST_f_f (tgamma, -0x1.fffffffffffffp0L, 2.2517998136852484613921675492337776673289e+15L),
14101     TEST_f_f (tgamma, -0x2.0000000000002p0L, -1.1258999068426235386078324507668462444260e+15L),
14102     TEST_f_f (tgamma, -0x2.ffffffffffffep0L, -3.7529996894754154268627807196691509198813e+14L),
14103     TEST_f_f (tgamma, -0x3.0000000000002p0L, 3.7529996894754112398038859470009084971438e+14L),
14104     TEST_f_f (tgamma, -0x3.ffffffffffffep0L, 9.3824992236885396088236184658402406857503e+13L),
14105     TEST_f_f (tgamma, -0x4.0000000000004p0L, -4.6912496118442603911763815341745722862351e+13L),
14106     TEST_f_f (tgamma, -0x4.ffffffffffffcp0L, -9.3824992236885475509805702650262155809819e+12L),
14107     TEST_f_f (tgamma, -0x5.0000000000004p0L, 9.3824992236885191156860964016850034672946e+12L),
14108     TEST_f_f (tgamma, -0x5.ffffffffffffcp0L, 1.5637498706147581566449098589862357835505e+12L),
14109     TEST_f_f (tgamma, -0x6.0000000000004p0L, -1.5637498706147529544662012521330708016396e+12L),
14110     TEST_f_f (tgamma, -0x6.ffffffffffffcp0L, -2.2339283865925119357965832452642909859289e+11L),
14111     TEST_f_f (tgamma, -0x7.0000000000004p0L, 2.2339283865925039372192897706214475877342e+11L),
14112     TEST_f_f (tgamma, -0x7.ffffffffffffcp0L, 2.7924104832406402297655703264222230055898e+10L),
14113     TEST_f_f (tgamma, -0x8.0000000000008p0L, -1.3962052416203121511868106259843527348026e+10L),
14114     TEST_f_f (tgamma, -0x9.ffffffffffff8p0L, 1.5513391573559147700413058496716749249803e+08L),
14115     TEST_f_f (tgamma, -0xa.0000000000008p0L, -1.5513391573559018084419393002828541166901e+08L),
14116     TEST_f_f (tgamma, -0x13.ffffffffffffp0L, 1.1569515572952029402736625857313236848570e-04L),
14117     TEST_f_f (tgamma, -0x14.000000000001p0L, -1.1569515572951781096476686854873801225397e-04L),
14118     TEST_f_f (tgamma, -0x1d.ffffffffffffp0L, 1.0611571800204311628217068863959963842891e-18L),
14119     TEST_f_f (tgamma, -0x1e.000000000001p0L, -1.0611571800204053929094168642022073530425e-18L),
14120     TEST_f_f (tgamma, -0x27.fffffffffffep0L, 1.7249032006742266376460389310340465554361e-34L),
14121     TEST_f_f (tgamma, -0x28.000000000002p0L, -1.7249032006741359094184881234822934593822e-34L),
14122     TEST_f_f (tgamma, -0x28.fffffffffffep0L, -4.2070809772542120404320040128839297118648e-36L),
14123     TEST_f_f (tgamma, -0x29.000000000002p0L, 4.2070809772539892938717205103652583609422e-36L),
14124     TEST_f_f (tgamma, -0x29.fffffffffffep0L, 1.0016859469652887505173040814397197718981e-37L),
14125     TEST_f_f (tgamma, -0x2a.000000000002p0L, -1.0016859469652353766978684241048308120274e-37L),
14126     TEST_f_f (tgamma, -0x31.fffffffffffep0L, 4.6273774273632946947805289899230181990085e-51L),
14127     TEST_f_f (tgamma, -0x32.000000000002p0L, -4.6273774273630367887073532197576655720178e-51L),
14128     TEST_f_f (tgamma, -0x63.fffffffffffcp0L, 7.5400833348840965463348754984345825364294e-145L),
14129     TEST_f_f (tgamma, -0x64.000000000004p0L, -7.5400833348831085791638490135462230991587e-145L),
14130     TEST_f_f (tgamma, -0x95.fffffffffff8p0L, 6.1582369322723207086020016423767264008839e-250L),
14131     TEST_f_f (tgamma, -0x96.000000000008p0L, -6.1582369322705655439003240743176243138734e-250L),
14132     TEST_f_f (tgamma, -0xb4.fffffffffff8p0L, -9.6760879059917574597728750098636253931457e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14133     TEST_f_f (tgamma, -0xb5.000000000008p0L, 9.6760879059888966544677044221698800670218e-319L, UNDERFLOW_EXCEPTION_DOUBLE),
14134     TEST_f_f (tgamma, -0xb5.fffffffffff8p0L, 5.3165318164789884455066481673086605454904e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14135     TEST_f_f (tgamma, -0xb6.000000000008p0L, -5.3165318164774149139661976747137185876909e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14136     TEST_f_f (tgamma, -0xb6.fffffffffff8p0L, -2.9052086428846935908287469917922960610289e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14137     TEST_f_f (tgamma, -0xb7.000000000008p0L, 2.9052086428838328351126988236541632950925e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14138 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14139     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14140     TEST_f_f (tgamma, -0xb8.000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14141 # else
14142     TEST_f_f (tgamma, -0xb7.fffffffffff8p0L, 1.5789177406982032823826953250736039527543e-325L),
14143     TEST_f_f (tgamma, -0xb8.000000000008p0L, -1.5789177406977349925854817486109369828857e-325L),
14144 # endif
14145 #endif
14146 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14147     TEST_f_f (tgamma, 0x8.00000000000000000000000004p0L, 5.0400000000000000000000000000020034765587e+03L),
14148     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffep0L, 5.0399999999999999999999999999989982617206e+03L),
14149     TEST_f_f (tgamma, 0x7.00000000000000000000000002p0L, 7.2000000000000000000000000000013296297113e+02L),
14150     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffep0L, 7.1999999999999999999999999999986703702887e+02L),
14151     TEST_f_f (tgamma, 0x6.00000000000000000000000002p0L, 1.2000000000000000000000000000002018834292e+02L),
14152     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffep0L, 1.1999999999999999999999999999997981165708e+02L),
14153     TEST_f_f (tgamma, 0x5.00000000000000000000000002p0L, 2.4000000000000000000000000000003564352042e+01L),
14154     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffep0L, 2.3999999999999999999999999999996435647958e+01L),
14155     TEST_f_f (tgamma, 0x4.00000000000000000000000002p0L, 6.0000000000000000000000000000007431765907e+00L),
14156     TEST_f_f (tgamma, 0x3.ffffffffffffffffffffffffffp0L, 5.9999999999999999999999999999996284117046e+00L),
14157     TEST_f_f (tgamma, 0x3.00000000000000000000000001p0L, 2.0000000000000000000000000000000909935607e+00L),
14158     TEST_f_f (tgamma, 0x2.ffffffffffffffffffffffffffp0L, 1.9999999999999999999999999999999090064393e+00L),
14159     TEST_f_f (tgamma, 0x2.00000000000000000000000001p0L, 1.0000000000000000000000000000000208448771e+00L),
14160     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffff8p0L, 9.9999999999999999999999999999998957756146e-01L),
14161     TEST_f_f (tgamma, 0x1.000000000000000000000000008p0L, 9.9999999999999999999999999999998577053525e-01L),
14162     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffcp0L, 1.0000000000000000000000000000000071147324e+00L),
14163     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffcp0L, -8.1129638414606681695789005144064422784335e+31L),
14164     TEST_f_f (tgamma, -0x1.000000000000000000000000008p0L, 4.0564819207303340847894502572031577215665e+31L),
14165     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffff8p0L, 2.0282409603651670423947251286016461392168e+31L),
14166     TEST_f_f (tgamma, -0x2.00000000000000000000000001p0L, -1.0141204801825835211973625643007538607832e+31L),
14167     TEST_f_f (tgamma, -0x2.ffffffffffffffffffffffffffp0L, -3.3804016006086117373245418810028760196114e+30L),
14168     TEST_f_f (tgamma, -0x3.00000000000000000000000001p0L, 3.3804016006086117373245418810024573137219e+30L),
14169     TEST_f_f (tgamma, -0x3.ffffffffffffffffffffffffffp0L, 8.4510040015215293433113547025072942156952e+29L),
14170     TEST_f_f (tgamma, -0x4.00000000000000000000000002p0L, -4.2255020007607646716556773512527057843048e+29L),
14171     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffep0L, -8.4510040015215293433113547025080884313904e+28L),
14172     TEST_f_f (tgamma, -0x5.00000000000000000000000002p0L, 8.4510040015215293433113547025052449019430e+28L),
14173     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffep0L, 1.4085006669202548905518924504180378867132e+28L),
14174     TEST_f_f (tgamma, -0x6.00000000000000000000000002p0L, -1.4085006669202548905518924504175176688423e+28L),
14175     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffep0L, -2.0121438098860784150741320720257967542615e+27L),
14176     TEST_f_f (tgamma, -0x7.00000000000000000000000002p0L, 2.0121438098860784150741320720249968965322e+27L),
14177     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffep0L, 2.5151797623575980188426650900322769448110e+26L),
14178     TEST_f_f (tgamma, -0x8.00000000000000000000000004p0L, -1.2575898811787990094213325450153421028080e+26L),
14179     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffcp0L, 1.3973220901986655660237028277960625420495e+24L),
14180     TEST_f_f (tgamma, -0xa.00000000000000000000000004p0L, -1.3973220901986655660237028277947663821128e+24L),
14181     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffff8p0L, 1.0420893204640670202556853709074896123293e+12L),
14182     TEST_f_f (tgamma, -0x14.00000000000000000000000008p0L, -1.0420893204640670202556853709050065497299e+12L),
14183     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffff8p0L, 9.5580541610429641982963434151488827190079e-03L),
14184     TEST_f_f (tgamma, -0x1e.00000000000000000000000008p0L, -9.5580541610429641982963434151231128067179e-03L),
14185     TEST_f_f (tgamma, -0x27.fffffffffffffffffffffffffp0L, 1.5536546823612837336494536911280147806523e-18L),
14186     TEST_f_f (tgamma, -0x28.0000000000000000000000001p0L, -1.5536546823612837336494536911189419578973e-18L),
14187     TEST_f_f (tgamma, -0x28.fffffffffffffffffffffffffp0L, -3.7894016642958139845108626612879138384405e-20L),
14188     TEST_f_f (tgamma, -0x29.0000000000000000000000001p0L, 3.7894016642958139845108626612656391824122e-20L),
14189     TEST_f_f (tgamma, -0x29.fffffffffffffffffffffffffp0L, 9.0223849149900332964544349078285357440663e-22L),
14190     TEST_f_f (tgamma, -0x2a.0000000000000000000000001p0L, -9.0223849149900332964544349077751619246306e-22L),
14191     TEST_f_f (tgamma, -0x31.fffffffffffffffffffffffffp0L, 4.1679710515150795310771069868348482819424e-35L),
14192     TEST_f_f (tgamma, -0x32.0000000000000000000000001p0L, -4.1679710515150795310771069868090576746248e-35L),
14193     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffep0L, 6.7915032994648558610510614163560656864280e-129L),
14194     TEST_f_f (tgamma, -0x64.0000000000000000000000002p0L, -6.7915032994648558610510614162572689693253e-129L),
14195     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffcp0L, 5.5468467106873795353190582463444660395353e-234L),
14196     TEST_f_f (tgamma, -0x96.0000000000000000000000004p0L, -5.5468467106873795353190582461689495693675e-234L),
14197     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffcp0L, -8.7154451775644399729745472278589884205029e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14198     TEST_f_f (tgamma, -0xb5.0000000000000000000000004p0L, 8.7154451775644399729745472275729078899858e-303L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14199     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffcp0L, 4.7887061415189230620739270482742524864974e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14200     TEST_f_f (tgamma, -0xb6.0000000000000000000000004p0L, -4.7887061415189230620739270481168993324524e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14201     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffcp0L, -2.6167793123054224382917634143575601407067e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14202     TEST_f_f (tgamma, -0xb7.0000000000000000000000004p0L, 2.6167793123054224382917634142714845691019e-307L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14203     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffcp0L, 1.4221626697312078468976975078030462044826e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14204     TEST_f_f (tgamma, -0xb8.0000000000000000000000004p0L, -1.4221626697312078468976975077562172247612e-309L, UNDERFLOW_EXCEPTION_DOUBLE),
14205     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffcp0L, 1.1756150745511026776007338998283058108448e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14206     TEST_f_f (tgamma, -0xbc.0000000000000000000000004p0L, -1.1756150745511026776007338997894360215107e-318L, UNDERFLOW_EXCEPTION_DOUBLE),
14207     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffcp0L, -6.2201855796354639026493857133773832713743e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14208     TEST_f_f (tgamma, -0xbd.0000000000000000000000004p0L, 6.2201855796354639026493857131715153125175e-321L, UNDERFLOW_EXCEPTION_DOUBLE),
14209     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffcp0L, 3.2737818840186652119207293228302560914295e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14210     TEST_f_f (tgamma, -0xbe.0000000000000000000000004p0L, -3.2737818840186652119207293227217957948294e-323L, UNDERFLOW_EXCEPTION_DOUBLE),
14211 # if LDBL_MAX_EXP <= 1024
14212     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14213     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION_DOUBLE),
14214 # else
14215     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffcp0L, -1.7140219288055838805867692789687487834686e-325L),
14216     TEST_f_f (tgamma, -0xbf.0000000000000000000000004p0L, 1.7140219288055838805867692789119066543632e-325L),
14217 # endif
14218 #endif
14219 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14220     TEST_f_f (tgamma, 0x8.000000000000001p0L, 5.0400000000000000088113830892247051102283e+03L),
14221     TEST_f_f (tgamma, 0x7.fffffffffffffff8p0L, 5.0399999999999999955943084553876474508520e+03L),
14222     TEST_f_f (tgamma, 0x7.0000000000000008p0L, 7.2000000000000000058477733127664675369681e+02L),
14223     TEST_f_f (tgamma, 0x6.fffffffffffffff8p0L, 7.1999999999999999941522266872335324679893e+02L),
14224     TEST_f_f (tgamma, 0x6.0000000000000008p0L, 1.2000000000000000008878927116622375680433e+02L),
14225     TEST_f_f (tgamma, 0x5.fffffffffffffff8p0L, 1.1999999999999999991121072883377624326546e+02L),
14226     TEST_f_f (tgamma, 0x5.0000000000000008p0L, 2.4000000000000000015676186062072582846211e+01L),
14227     TEST_f_f (tgamma, 0x4.fffffffffffffff8p0L, 2.3999999999999999984323813937927417165027e+01L),
14228     TEST_f_f (tgamma, 0x4.0000000000000008p0L, 6.0000000000000000032685252120268430507939e+00L),
14229     TEST_f_f (tgamma, 0x3.fffffffffffffffcp0L, 5.9999999999999999983657373939865784753909e+00L),
14230     TEST_f_f (tgamma, 0x3.0000000000000004p0L, 2.0000000000000000004001939123397399171482e+00L),
14231     TEST_f_f (tgamma, 0x2.fffffffffffffffcp0L, 1.9999999999999999995998060876602600829690e+00L),
14232     TEST_f_f (tgamma, 0x2.0000000000000004p0L, 1.0000000000000000000916767389213195151634e+00L),
14233     TEST_f_f (tgamma, 0x1.fffffffffffffffep0L, 9.9999999999999999995416163053934024243282e-01L),
14234     TEST_f_f (tgamma, 0x1.0000000000000002p0L, 9.9999999999999999993741815221210931418291e-01L),
14235     TEST_f_f (tgamma, 0x0.ffffffffffffffffp0L, 1.0000000000000000000312909238939453429173e+00L),
14236     TEST_f_f (tgamma, -0x0.ffffffffffffffffp0L, -1.8446744073709551616422784335098467139470e+19L),
14237     TEST_f_f (tgamma, -0x1.0000000000000002p0L, 9.2233720368547758075772156649015328607596e+18L),
14238     TEST_f_f (tgamma, -0x1.fffffffffffffffep0L, 4.6116860184273879044613921675492335697983e+18L),
14239     TEST_f_f (tgamma, -0x2.0000000000000004p0L, -2.3058430092136939515386078324507664305064e+18L),
14240     TEST_f_f (tgamma, -0x2.fffffffffffffffcp0L, -7.6861433640456465087601961140530007887063e+17L),
14241     TEST_f_f (tgamma, -0x3.0000000000000004p0L, 7.6861433640456465045731372192803325462836e+17L),
14242     TEST_f_f (tgamma, -0x3.fffffffffffffffcp0L, 1.9215358410114116272942156951799168638773e+17L),
14243     TEST_f_f (tgamma, -0x4.0000000000000008p0L, -9.6076792050570581270578430482008313684602e+16L),
14244     TEST_f_f (tgamma, -0x4.fffffffffffffff8p0L, -1.9215358410114116280884313903598337283601e+16L),
14245     TEST_f_f (tgamma, -0x5.0000000000000008p0L, 1.9215358410114116252449019429734996071487e+16L),
14246     TEST_f_f (tgamma, -0x5.fffffffffffffff8p0L, 3.2025597350190193803788671320812043622696e+15L),
14247     TEST_f_f (tgamma, -0x6.0000000000000008p0L, -3.2025597350190193751766884234743511972877e+15L),
14248     TEST_f_f (tgamma, -0x6.fffffffffffffff8p0L, -4.5750853357414562579675426149912896787735e+14L),
14249     TEST_f_f (tgamma, -0x7.0000000000000008p0L, 4.5750853357414562499689653215166468353753e+14L),
14250     TEST_f_f (tgamma, -0x7.fffffffffffffff8p0L, 5.7188566696768203227694481100089533685959e+13L),
14251     TEST_f_f (tgamma, -0x8.000000000000001p0L, -2.8594283348384101534210280804672371201060e+13L),
14252     TEST_f_f (tgamma, -0x9.fffffffffffffffp0L, 3.1771425942649001828476427167843945971988e+11L),
14253     TEST_f_f (tgamma, -0xa.000000000000001p0L, -3.1771425942649001698860433502350057763905e+11L),
14254     TEST_f_f (tgamma, -0x13.ffffffffffffffep0L, 2.3694367893405502075347562184931828448654e-01L),
14255     TEST_f_f (tgamma, -0x14.000000000000002p0L, -2.3694367893405501827041302245929389013031e-01L),
14256     TEST_f_f (tgamma, -0x1d.ffffffffffffffep0L, 2.1732499046818166459536268654187775086902e-15L),
14257     TEST_f_f (tgamma, -0x1e.000000000000002p0L, -2.1732499046818166201837145753965837196590e-15L),
14258     TEST_f_f (tgamma, -0x27.ffffffffffffffcp0L, 3.5326017549807232935581894777156474496719e-31L),
14259     TEST_f_f (tgamma, -0x28.000000000000004p0L, -3.5326017549807232028299619269080956965758e-31L),
14260     TEST_f_f (tgamma, -0x28.ffffffffffffffcp0L, -8.6161018414163982777002940498289948893044e-33L),
14261     TEST_f_f (tgamma, -0x29.000000000000004p0L, 8.6161018414163980549537337663264762179535e-33L),
14262     TEST_f_f (tgamma, -0x29.ffffffffffffffcp0L, 2.0514528193848567329552463626090806737389e-34L),
14263     TEST_f_f (tgamma, -0x2a.000000000000004p0L, -2.0514528193848566795814269269517457847791e-34L),
14264     TEST_f_f (tgamma, -0x31.ffffffffffffffcp0L, 9.4768689712397635680446279661359728835046e-48L),
14265     TEST_f_f (tgamma, -0x32.000000000000004p0L, -9.4768689712397633101385547903658075308777e-48L),
14266     TEST_f_f (tgamma, -0x63.ffffffffffffff8p0L, 1.5442090669841618542494279375256856430049e-141L),
14267     TEST_f_f (tgamma, -0x64.000000000000008p0L, -1.5442090669841617554527108348771968070612e-141L),
14268     TEST_f_f (tgamma, -0x95.ffffffffffffffp0L, 1.2612069237291916400144732227892704713839e-246L),
14269     TEST_f_f (tgamma, -0x96.00000000000001p0L, -1.2612069237291914644980030550324645611752e-246L),
14270     TEST_f_f (tgamma, -0xb4.ffffffffffffffp0L, -1.9816628031468191243385005680879281767694e-315L),
14271     TEST_f_f (tgamma, -0xb5.00000000000001p0L, 1.9816628031468188382579700510291588022368e-315L),
14272     TEST_f_f (tgamma, -0xb5.ffffffffffffffp0L, 1.0888257160147357826865964233809723297472e-317L),
14273     TEST_f_f (tgamma, -0xb6.00000000000001p0L, -1.0888257160147356253334423783317128355514e-317L),
14274     TEST_f_f (tgamma, -0xb6.ffffffffffffffp0L, -5.9498673006269714905418984659220067091260e-320L),
14275     TEST_f_f (tgamma, -0xb7.00000000000001p0L, 5.9498673006269706297861824177538685763601e-320L),
14276     TEST_f_f (tgamma, -0xb7.ffffffffffffffp0L, 3.2336235329494410277123118903958061569834e-322L),
14277     TEST_f_f (tgamma, -0xb8.00000000000001p0L, -3.2336235329494405594225146768193434900135e-322L),
14278     TEST_f_f (tgamma, -0xbb.ffffffffffffffp0L, 2.6730392040715350119087465463119939092815e-331L),
14279     TEST_f_f (tgamma, -0xbc.00000000000001p0L, -2.6730392040715346232108532050343031951651e-331L),
14280     TEST_f_f (tgamma, -0xbc.ffffffffffffffp0L, -1.4143064571807063556111222197839950086445e-333L),
14281     TEST_f_f (tgamma, -0xbd.00000000000001p0L, 1.4143064571807061497431633629389135273431e-333L),
14282     TEST_f_f (tgamma, -0xbd.ffffffffffffffp0L, 7.4437181956879281879706555863416819210399e-336L),
14283     TEST_f_f (tgamma, -0xbe.00000000000001p0L, -7.4437181956879271033676895858841525581153e-336L),
14284     TEST_f_f (tgamma, -0xbe.ffffffffffffffp0L, -3.8972346574282346536709453101948570578636e-338L),
14285     TEST_f_f (tgamma, -0xbf.00000000000001p0L, 3.8972346574282340852496542564155275274974e-338L),
14286     TEST_f_f (tgamma, -0xf9.ffffffffffffffp0L, 2.2289142548411573883553287678043297937797e-476L),
14287     TEST_f_f (tgamma, -0xfa.00000000000001p0L, -2.2289142548411570466476165308364665814265e-476L),
14288     TEST_f_f (tgamma, -0x1f3.fffffffffffffep0L, 2.9528489142763141594943668922610562530068e-1118L),
14289     TEST_f_f (tgamma, -0x1f4.00000000000002p0L, -2.9528489142763131406565394149878256133744e-1118L),
14290     TEST_f_f (tgamma, -0x2ed.fffffffffffffcp0L, 6.9801511765871818502006905472380418430269e-1817L),
14291     TEST_f_f (tgamma, -0x2ee.00000000000004p0L, -6.9801511765871767194421856376592926002995e-1817L),
14292     TEST_f_f (tgamma, -0x3e7.fffffffffffffcp0L, 4.4768809295877296071892611539415773519036e-2552L),
14293     TEST_f_f (tgamma, -0x3e8.00000000000004p0L, -4.4768809295877261735541135972060089530309e-2552L),
14294     TEST_f_f (tgamma, -0x4e1.fffffffffffff8p0L, 5.4651488569236507565341414077911790252381e-3315L),
14295     TEST_f_f (tgamma, -0x4e2.00000000000008p0L, -5.4651488569236421026544487194247355967789e-3315L),
14296     TEST_f_f (tgamma, -0x5db.fffffffffffff8p0L, 1.8718211510339187689122114747834510481993e-4099L),
14297     TEST_f_f (tgamma, -0x5dc.00000000000008p0L, -1.8718211510339157291960718369454861898499e-4099L),
14298     TEST_f_f (tgamma, -0x6d5.fffffffffffff8p0L, 4.2925786447266492555651378780094011518063e-4902L),
14299     TEST_f_f (tgamma, -0x6d6.00000000000008p0L, -4.2925786447266421378134368786479937285900e-4902L),
14300     TEST_f_f (tgamma, -0x6e2.fffffffffffff8p0L, -2.8229173528168668283609231628661510187536e-4944L, UNDERFLOW_EXCEPTION),
14301     TEST_f_f (tgamma, -0x6e3.00000000000008p0L, 2.8229173528168621428945467532322397890424e-4944L, UNDERFLOW_EXCEPTION),
14302     TEST_f_f (tgamma, -0x6e3.fffffffffffff8p0L, 1.6002932839097884515524894602387278842659e-4947L, UNDERFLOW_EXCEPTION),
14303     TEST_f_f (tgamma, -0x6e4.00000000000008p0L, -1.6002932839097857951909742110188634438017e-4947L, UNDERFLOW_EXCEPTION),
14304     TEST_f_f (tgamma, -0x6e4.fffffffffffff8p0L, -9.0668174725767051085164382743343408095146e-4951L, UNDERFLOW_EXCEPTION),
14305     TEST_f_f (tgamma, -0x6e5.00000000000008p0L, 9.0668174725766900571689083050287838090189e-4951L, UNDERFLOW_EXCEPTION),
14306 # if LDBL_MANT_DIG <= 64
14307     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, plus_zero, UNDERFLOW_EXCEPTION),
14308     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, minus_zero, UNDERFLOW_EXCEPTION),
14309 # else
14310     TEST_f_f (tgamma, -0x6e5.fffffffffffff8p0L, 5.1340982290921319983501912122292601780326e-4954L, UNDERFLOW_EXCEPTION),
14311     TEST_f_f (tgamma, -0x6e6.00000000000008p0L, -5.1340982290921234748578193083614111497314e-4954L, UNDERFLOW_EXCEPTION),
14312 # endif
14313 # if LDBL_MANT_DIG >= 113
14314     TEST_f_f (tgamma, 0x8.0000000000000000000000000008p0L, 5.0400000000000000000000000000000156521606e+03L),
14315     TEST_f_f (tgamma, 0x7.fffffffffffffffffffffffffffcp0L, 5.0399999999999999999999999999999921739197e+03L),
14316     TEST_f_f (tgamma, 0x7.0000000000000000000000000004p0L, 7.2000000000000000000000000000000103877321e+02L),
14317     TEST_f_f (tgamma, 0x6.fffffffffffffffffffffffffffcp0L, 7.1999999999999999999999999999999896122679e+02L),
14318     TEST_f_f (tgamma, 0x6.0000000000000000000000000004p0L, 1.2000000000000000000000000000000015772143e+02L),
14319     TEST_f_f (tgamma, 0x5.fffffffffffffffffffffffffffcp0L, 1.1999999999999999999999999999999984227857e+02L),
14320     TEST_f_f (tgamma, 0x5.0000000000000000000000000004p0L, 2.4000000000000000000000000000000027846500e+01L),
14321     TEST_f_f (tgamma, 0x4.fffffffffffffffffffffffffffcp0L, 2.3999999999999999999999999999999972153500e+01L),
14322     TEST_f_f (tgamma, 0x4.0000000000000000000000000004p0L, 6.0000000000000000000000000000000058060671e+00L),
14323     TEST_f_f (tgamma, 0x3.fffffffffffffffffffffffffffep0L, 5.9999999999999999999999999999999970969664e+00L),
14324     TEST_f_f (tgamma, 0x3.0000000000000000000000000002p0L, 2.0000000000000000000000000000000007108872e+00L),
14325     TEST_f_f (tgamma, 0x2.fffffffffffffffffffffffffffep0L, 1.9999999999999999999999999999999992891128e+00L),
14326     TEST_f_f (tgamma, 0x2.0000000000000000000000000002p0L, 1.0000000000000000000000000000000001628506e+00L),
14327     TEST_f_f (tgamma, 0x1.ffffffffffffffffffffffffffffp0L, 9.9999999999999999999999999999999991857470e-01L),
14328     TEST_f_f (tgamma, 0x1.0000000000000000000000000001p0L, 9.9999999999999999999999999999999988883231e-01L),
14329     TEST_f_f (tgamma, 0x0.ffffffffffffffffffffffffffff8p0L, 1.0000000000000000000000000000000000555838e+00L),
14330     TEST_f_f (tgamma, -0x0.ffffffffffffffffffffffffffff8p0L, -1.0384593717069655257060992658440192422784e+34L),
14331     TEST_f_f (tgamma, -0x1.0000000000000000000000000001p0L, 5.1922968585348276285304963292200955772157e+33L),
14332     TEST_f_f (tgamma, -0x1.ffffffffffffffffffffffffffffp0L, 2.5961484292674138142652481646100484613922e+33L),
14333     TEST_f_f (tgamma, -0x2.0000000000000000000000000002p0L, -1.2980742146337069071326240823050235386078e+33L),
14334     TEST_f_f (tgamma, -0x2.fffffffffffffffffffffffffffep0L, -4.3269140487790230237754136076834154268628e+32L),
14335     TEST_f_f (tgamma, -0x3.0000000000000000000000000002p0L, 4.3269140487790230237754136076834112398039e+32L),
14336     TEST_f_f (tgamma, -0x3.fffffffffffffffffffffffffffep0L, 1.0817285121947557559438534019208539608824e+32L),
14337     TEST_f_f (tgamma, -0x4.0000000000000000000000000004p0L, -5.4086425609737787797192670096042603911764e+31L),
14338     TEST_f_f (tgamma, -0x4.fffffffffffffffffffffffffffcp0L, -1.0817285121947557559438534019208547550981e+31L),
14339     TEST_f_f (tgamma, -0x5.0000000000000000000000000004p0L, 1.0817285121947557559438534019208519115686e+31L),
14340     TEST_f_f (tgamma, -0x5.fffffffffffffffffffffffffffcp0L, 1.8028808536579262599064223365347581566449e+30L),
14341     TEST_f_f (tgamma, -0x6.0000000000000000000000000004p0L, -1.8028808536579262599064223365347529544662e+30L),
14342     TEST_f_f (tgamma, -0x6.fffffffffffffffffffffffffffcp0L, -2.5755440766541803712948890521925119357966e+29L),
14343     TEST_f_f (tgamma, -0x7.0000000000000000000000000004p0L, 2.5755440766541803712948890521925039372193e+29L),
14344     TEST_f_f (tgamma, -0x7.fffffffffffffffffffffffffffcp0L, 3.2194300958177254641186113152406402297656e+28L),
14345     TEST_f_f (tgamma, -0x8.0000000000000000000000000008p0L, -1.6097150479088627320593056576203121511868e+28L),
14346     TEST_f_f (tgamma, -0x9.fffffffffffffffffffffffffff8p0L, 1.7885722754542919245103396195781369922635e+26L),
14347     TEST_f_f (tgamma, -0xa.0000000000000000000000000008p0L, -1.7885722754542919245103396195781240306642e+26L),
14348     TEST_f_f (tgamma, -0x13.fffffffffffffffffffffffffffp0L, 1.3338743301940057859272772747600099590309e+14L),
14349     TEST_f_f (tgamma, -0x14.000000000000000000000000001p0L, -1.3338743301940057859272772747599851284049e+14L),
14350     TEST_f_f (tgamma, -0x1d.fffffffffffffffffffffffffffp0L, 1.2234309326134994173819319571374205986026e+00L),
14351     TEST_f_f (tgamma, -0x1e.000000000000000000000000001p0L, -1.2234309326134994173819319571373948286903e+00L),
14352     TEST_f_f (tgamma, -0x27.ffffffffffffffffffffffffffep0L, 1.9886779934224431790713007246380976767855e-16L),
14353     TEST_f_f (tgamma, -0x28.000000000000000000000000002p0L, -1.9886779934224431790713007246380069485580e-16L),
14354     TEST_f_f (tgamma, -0x28.ffffffffffffffffffffffffffep0L, -4.8504341302986419001739042064343853066259e-18L),
14355     TEST_f_f (tgamma, -0x29.000000000000000000000000002p0L, 4.8504341302986419001739042064341625600656e-18L),
14356     TEST_f_f (tgamma, -0x29.ffffffffffffffffffffffffffep0L, 1.1548652691187242619461676681986633377063e-19L),
14357     TEST_f_f (tgamma, -0x2a.000000000000000000000000002p0L, -1.1548652691187242619461676681986099638869e-19L),
14358     TEST_f_f (tgamma, -0x31.ffffffffffffffffffffffffffep0L, 5.3350029459393017997786969431322287652396e-33L),
14359     TEST_f_f (tgamma, -0x32.000000000000000000000000002p0L, -5.3350029459393017997786969431319708591664e-33L),
14360     TEST_f_f (tgamma, -0x63.ffffffffffffffffffffffffffcp0L, 8.6931242233150155021453586128730281632676e-127L),
14361     TEST_f_f (tgamma, -0x64.000000000000000000000000004p0L, -8.6931242233150155021453586128720401960966e-127L),
14362     TEST_f_f (tgamma, -0x95.ffffffffffffffffffffffffff8p0L, 7.0999637896798458052083945552094635720486e-232L),
14363     TEST_f_f (tgamma, -0x96.000000000000000000000000008p0L, -7.0999637896798458052083945552077084073470e-232L),
14364     TEST_f_f (tgamma, -0xb4.ffffffffffffffffffffffffff8p0L, -1.1155769827282483165407420451477844041365e-300L),
14365     TEST_f_f (tgamma, -0xb5.000000000000000000000000008p0L, 1.1155769827282483165407420451474983236060e-300L),
14366     TEST_f_f (tgamma, -0xb5.ffffffffffffffffffffffffff8p0L, 6.1295438611442215194546266216911239298981e-303L),
14367     TEST_f_f (tgamma, -0xb6.000000000000000000000000008p0L, -6.1295438611442215194546266216895503983577e-303L),
14368     TEST_f_f (tgamma, -0xb6.ffffffffffffffffffffffffff8p0L, -3.3494775197509407210134571703230189921356e-305L),
14369     TEST_f_f (tgamma, -0xb7.000000000000000000000000008p0L, 3.3494775197509407210134571703221582364195e-305L),
14370     TEST_f_f (tgamma, -0xb7.ffffffffffffffffffffffffff8p0L, 1.8203682172559460440290528099581627396147e-307L),
14371     TEST_f_f (tgamma, -0xb8.000000000000000000000000008p0L, -1.8203682172559460440290528099576944498174e-307L),
14372     TEST_f_f (tgamma, -0xbb.ffffffffffffffffffffffffff8p0L, 1.5047872954254114273289393917555491216542e-316L),
14373     TEST_f_f (tgamma, -0xbc.000000000000000000000000008p0L, -1.5047872954254114273289393917551604237609e-316L),
14374     TEST_f_f (tgamma, -0xbc.ffffffffffffffffffffffffff8p0L, -7.9618375419333937953912137129923244334851e-319L),
14375     TEST_f_f (tgamma, -0xbd.000000000000000000000000008p0L, 7.9618375419333937953912137129902657538965e-319L),
14376     TEST_f_f (tgamma, -0xbd.ffffffffffffffffffffffffff8p0L, 4.1904408115438914712585335331538555086887e-321L),
14377     TEST_f_f (tgamma, -0xbe.000000000000000000000000008p0L, -4.1904408115438914712585335331527709057227e-321L),
14378     TEST_f_f (tgamma, -0xbe.ffffffffffffffffffffffffff8p0L, -2.1939480688711473671510646770439036908579e-323L),
14379     TEST_f_f (tgamma, -0xbf.000000000000000000000000008p0L, 2.1939480688711473671510646770433352695669e-323L),
14380     TEST_f_f (tgamma, -0xf9.ffffffffffffffffffffffffff8p0L, 1.2547671759429278005937024349858508569625e-461L),
14381     TEST_f_f (tgamma, -0xfa.000000000000000000000000008p0L, -1.2547671759429278005937024349855091492502e-461L),
14382     TEST_f_f (tgamma, -0x1f3.ffffffffffffffffffffffffffp0L, 1.6623061587520224800948170558276526986560e-1103L),
14383     TEST_f_f (tgamma, -0x1f4.00000000000000000000000001p0L, -1.6623061587520224800948170558266338608285e-1103L),
14384     TEST_f_f (tgamma, -0x2ed.fffffffffffffffffffffffffep0L, 3.9294757797334687313030998663853566763041e-1802L),
14385     TEST_f_f (tgamma, -0x2ee.00000000000000000000000002p0L, -3.9294757797334687313030998663802259177992e-1802L),
14386     TEST_f_f (tgamma, -0x3e7.fffffffffffffffffffffffffep0L, 2.5202599107841713834679953735597552855978e-2537L),
14387     TEST_f_f (tgamma, -0x3e8.00000000000000000000000002p0L, -2.5202599107841713834679953735563216504503e-2537L),
14388     TEST_f_f (tgamma, -0x4e1.fffffffffffffffffffffffffcp0L, 3.0766052944457032773369415396747635242705e-3300L),
14389     TEST_f_f (tgamma, -0x4e2.00000000000000000000000004p0L, -3.0766052944457032773369415396661096445778e-3300L),
14390     TEST_f_f (tgamma, -0x5db.fffffffffffffffffffffffffcp0L, 1.0537416297875703295453200836588944487917e-4084L),
14391     TEST_f_f (tgamma, -0x5dc.00000000000000000000000004p0L, -1.0537416297875703295453200836558547326520e-4084L),
14392     TEST_f_f (tgamma, -0x6d5.fffffffffffffffffffffffffcp0L, 2.4165069481061837867659591369998698607387e-4887L),
14393     TEST_f_f (tgamma, -0x6d6.00000000000000000000000004p0L, -2.4165069481061837867659591369927521090377e-4887L),
14394     TEST_f_f (tgamma, -0x6e2.fffffffffffffffffffffffffcp0L, -1.5891611922804672355414813803008070609431e-4929L),
14395     TEST_f_f (tgamma, -0x6e3.00000000000000000000000004p0L, 1.5891611922804672355414813802961215945667e-4929L),
14396     TEST_f_f (tgamma, -0x6e3.fffffffffffffffffffffffffcp0L, 9.0088502963745308137272187091882496519917e-4933L, UNDERFLOW_EXCEPTION),
14397     TEST_f_f (tgamma, -0x6e4.00000000000000000000000004p0L, -9.0088502963745308137272187091616860368392e-4933L, UNDERFLOW_EXCEPTION),
14398     TEST_f_f (tgamma, -0x6e4.fffffffffffffffffffffffffcp0L, -5.1041644738665896961627301468488672286746e-4936L, UNDERFLOW_EXCEPTION),
14399     TEST_f_f (tgamma, -0x6e5.00000000000000000000000004p0L, 5.1041644738665896961627301468338158811446e-4936L, UNDERFLOW_EXCEPTION),
14400     TEST_f_f (tgamma, -0x6e5.fffffffffffffffffffffffffcp0L, 2.8902403589278537350864836618623260468143e-4939L, UNDERFLOW_EXCEPTION),
14401     TEST_f_f (tgamma, -0x6e6.00000000000000000000000004p0L, -2.8902403589278537350864836618538025544424e-4939L, UNDERFLOW_EXCEPTION),
14402     TEST_f_f (tgamma, -0x6eb.fffffffffffffffffffffffffcp0L, 9.4152481960798287090819640211017219042636e-4959L, UNDERFLOW_EXCEPTION),
14403     TEST_f_f (tgamma, -0x6ec.00000000000000000000000004p0L, -9.4152481960798287090819640210739431797168e-4959L, UNDERFLOW_EXCEPTION),
14404     TEST_f_f (tgamma, -0x6ec.fffffffffffffffffffffffffcp0L, -5.3103486723518492437010513373388172315540e-4962L, UNDERFLOW_EXCEPTION),
14405     TEST_f_f (tgamma, -0x6ed.00000000000000000000000004p0L, 5.3103486723518492437010513373231484108489e-4962L, UNDERFLOW_EXCEPTION),
14406     TEST_f_f (tgamma, -0x6ed.fffffffffffffffffffffffffcp0L, 2.9934321715624854812294539669328172615019e-4965L, UNDERFLOW_EXCEPTION),
14407     TEST_f_f (tgamma, -0x6ee.00000000000000000000000004p0L, -2.9934321715624854812294539669239841152754e-4965L, UNDERFLOW_EXCEPTION),
14408     TEST_f_f (tgamma, -0x6ee.fffffffffffffffffffffffffcp0L, minus_zero, UNDERFLOW_EXCEPTION),
14409     TEST_f_f (tgamma, -0x6ef.00000000000000000000000004p0L, plus_zero, UNDERFLOW_EXCEPTION),
14410 # endif
14411 #endif
14412     TEST_f_f (tgamma, -0x1.0a32a2p+5L, 1.8125267978155035272941154746083439329912e-37L),
14413 #ifndef TEST_FLOAT
14414     TEST_f_f (tgamma, -0x1.5800000080001p+7L, -3.1439271448823567326093363350637118195240e-304L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM),
14415 #endif
14416     TEST_f_f (tgamma, 18.5L, 1.4986120533153361177371791123515513270334e+15L),
14417     TEST_f_f (tgamma, 19.5L, 2.7724322986333718178137813578503699550119e+16L),
14418     TEST_f_f (tgamma, 23.5L, 5.3613035875444147334274983856108155717836e+21L),
14419     TEST_f_f (tgamma, 29.5L, 1.6348125198274266444378807806868221866931e+30L),
14420     TEST_f_f (tgamma, 30.5L, 4.8226969334909086010917483030261254507447e+31L),
14421     TEST_f_f (tgamma, 31.5L, 1.4709225647147271233329832324229682624771e+33L),
14422     TEST_f_f (tgamma, 32.5L, 4.6334060788513904384988971821323500268029e+34L),
14423     TEST_f_f (tgamma, 33.5L, 1.5058569756267018925121415841930137587110e+36L),
14424     TEST_f_f (tgamma, 34.5L, 5.0446208683494513399156743070465960916817e+37L),
14425     TEST_f_f (tgamma, 0x2.30a43cp+4L, 3.4027979115654976101247558405326779640190e+38L),
14426 #ifdef TEST_FLOAT
14427     TEST_f_f (tgamma, 0x2.30a44p+4L, plus_infty, OVERFLOW_EXCEPTION),
14428 #else
14429     TEST_f_f (tgamma, 0x2.30a44p+4L, 3.4028438913396451054667218138127983367181e+38L),
14430 #endif
14431 #ifndef TEST_FLOAT
14432     TEST_f_f (tgamma, 0xa.b9fd72b0fb238p+4L, 1.7976931348622298700886249281842651388250e+308L),
14433 # if !defined TEST_LDOUBLE || LDBL_MAX_EXP <= 1024
14434     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, plus_infty, OVERFLOW_EXCEPTION),
14435 # else
14436     TEST_f_f (tgamma, 0xa.b9fd72b0fb24p+4L, 1.7976931348624926129589466917917870782484e+308L),
14437 # endif
14438 #endif
14439 #if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106
14440     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f4p+4L, 1.7976931348623158079372897140307719334857e+308L),
14441 # if LDBL_MAX_EXP <= 1024
14442     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, plus_infty, OVERFLOW_EXCEPTION),
14443 # else
14444     TEST_f_f (tgamma, 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4L, 1.7976931348623158079372897140599422519044e+308L),
14445 # endif
14446 #endif
14447 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14448     TEST_f_f (tgamma, 0x6.db8c603359a97108p+8L, 1.1897314953572317517071551278058233700012e+4932L),
14449     TEST_f_f (tgamma, 0x6.db8c603359a9711p+8L, plus_infty, OVERFLOW_EXCEPTION),
14450 # if LDBL_MANT_DIG >= 113
14451     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfdp+8L, 1.1897314953572317650857593266265995494998e+4932L),
14452     TEST_f_f (tgamma, 0x6.db8c603359a971081bc4a2e9dfd4p+8L, plus_infty, OVERFLOW_EXCEPTION),
14453 # endif
14454 #endif
14455     END_DATA (tgamma)
14456   };
14457
14458 static void
14459 tgamma_test (void)
14460 {
14461   errno = 0;
14462   FUNC(tgamma) (1);
14463   if (errno == ENOSYS)
14464     /* Function not implemented.  */
14465     return;
14466
14467   START (tgamma);
14468   RUN_TEST_LOOP_f_f (tgamma, tgamma_test_data, );
14469   END (tgamma);
14470 }
14471
14472
14473 static const struct test_f_f_data trunc_test_data[] =
14474   {
14475     START_DATA (trunc),
14476     TEST_f_f (trunc, plus_infty, plus_infty),
14477     TEST_f_f (trunc, minus_infty, minus_infty),
14478     TEST_f_f (trunc, qnan_value, qnan_value),
14479
14480     TEST_f_f (trunc, 0, 0),
14481     TEST_f_f (trunc, minus_zero, minus_zero),
14482     TEST_f_f (trunc, 0.1, 0),
14483     TEST_f_f (trunc, 0.25, 0),
14484     TEST_f_f (trunc, 0.625, 0),
14485     TEST_f_f (trunc, -0.1, minus_zero),
14486     TEST_f_f (trunc, -0.25, minus_zero),
14487     TEST_f_f (trunc, -0.625, minus_zero),
14488     TEST_f_f (trunc, 1, 1),
14489     TEST_f_f (trunc, -1, -1),
14490     TEST_f_f (trunc, 1.625, 1),
14491     TEST_f_f (trunc, -1.625, -1),
14492
14493     TEST_f_f (trunc, 1048580.625L, 1048580L),
14494     TEST_f_f (trunc, -1048580.625L, -1048580L),
14495
14496     TEST_f_f (trunc, 8388610.125L, 8388610.0L),
14497     TEST_f_f (trunc, -8388610.125L, -8388610.0L),
14498
14499     TEST_f_f (trunc, 4294967296.625L, 4294967296.0L),
14500     TEST_f_f (trunc, -4294967296.625L, -4294967296.0L),
14501
14502 #ifdef TEST_LDOUBLE
14503     /* The result can only be represented in long double.  */
14504     TEST_f_f (trunc, 4503599627370495.5L, 4503599627370495.0L),
14505     TEST_f_f (trunc, 4503599627370496.25L, 4503599627370496.0L),
14506     TEST_f_f (trunc, 4503599627370496.5L, 4503599627370496.0L),
14507     TEST_f_f (trunc, 4503599627370496.75L, 4503599627370496.0L),
14508     TEST_f_f (trunc, 4503599627370497.5L, 4503599627370497.0L),
14509
14510 # if LDBL_MANT_DIG > 100
14511     TEST_f_f (trunc, 4503599627370494.5000000000001L, 4503599627370494.0L),
14512     TEST_f_f (trunc, 4503599627370495.5000000000001L, 4503599627370495.0L),
14513     TEST_f_f (trunc, 4503599627370496.5000000000001L, 4503599627370496.0L),
14514 # endif
14515
14516     TEST_f_f (trunc, -4503599627370495.5L, -4503599627370495.0L),
14517     TEST_f_f (trunc, -4503599627370496.25L, -4503599627370496.0L),
14518     TEST_f_f (trunc, -4503599627370496.5L, -4503599627370496.0L),
14519     TEST_f_f (trunc, -4503599627370496.75L, -4503599627370496.0L),
14520     TEST_f_f (trunc, -4503599627370497.5L, -4503599627370497.0L),
14521
14522 # if LDBL_MANT_DIG > 100
14523     TEST_f_f (trunc, -4503599627370494.5000000000001L, -4503599627370494.0L),
14524     TEST_f_f (trunc, -4503599627370495.5000000000001L, -4503599627370495.0L),
14525     TEST_f_f (trunc, -4503599627370496.5000000000001L, -4503599627370496.0L),
14526 # endif
14527
14528     TEST_f_f (trunc, 9007199254740991.5L, 9007199254740991.0L),
14529     TEST_f_f (trunc, 9007199254740992.25L, 9007199254740992.0L),
14530     TEST_f_f (trunc, 9007199254740992.5L, 9007199254740992.0L),
14531     TEST_f_f (trunc, 9007199254740992.75L, 9007199254740992.0L),
14532     TEST_f_f (trunc, 9007199254740993.5L, 9007199254740993.0L),
14533
14534 # if LDBL_MANT_DIG > 100
14535     TEST_f_f (trunc, 9007199254740991.0000000000001L, 9007199254740991.0L),
14536     TEST_f_f (trunc, 9007199254740992.0000000000001L, 9007199254740992.0L),
14537     TEST_f_f (trunc, 9007199254740993.0000000000001L, 9007199254740993.0L),
14538     TEST_f_f (trunc, 9007199254740991.5000000000001L, 9007199254740991.0L),
14539     TEST_f_f (trunc, 9007199254740992.5000000000001L, 9007199254740992.0L),
14540     TEST_f_f (trunc, 9007199254740993.5000000000001L, 9007199254740993.0L),
14541 # endif
14542
14543     TEST_f_f (trunc, -9007199254740991.5L, -9007199254740991.0L),
14544     TEST_f_f (trunc, -9007199254740992.25L, -9007199254740992.0L),
14545     TEST_f_f (trunc, -9007199254740992.5L, -9007199254740992.0L),
14546     TEST_f_f (trunc, -9007199254740992.75L, -9007199254740992.0L),
14547     TEST_f_f (trunc, -9007199254740993.5L, -9007199254740993.0L),
14548
14549 # if LDBL_MANT_DIG > 100
14550     TEST_f_f (trunc, -9007199254740991.0000000000001L, -9007199254740991.0L),
14551     TEST_f_f (trunc, -9007199254740992.0000000000001L, -9007199254740992.0L),
14552     TEST_f_f (trunc, -9007199254740993.0000000000001L, -9007199254740993.0L),
14553     TEST_f_f (trunc, -9007199254740991.5000000000001L, -9007199254740991.0L),
14554     TEST_f_f (trunc, -9007199254740992.5000000000001L, -9007199254740992.0L),
14555     TEST_f_f (trunc, -9007199254740993.5000000000001L, -9007199254740993.0L),
14556 # endif
14557
14558     TEST_f_f (trunc, 72057594037927935.5L, 72057594037927935.0L),
14559     TEST_f_f (trunc, 72057594037927936.25L, 72057594037927936.0L),
14560     TEST_f_f (trunc, 72057594037927936.5L, 72057594037927936.0L),
14561     TEST_f_f (trunc, 72057594037927936.75L, 72057594037927936.0L),
14562     TEST_f_f (trunc, 72057594037927937.5L, 72057594037927937.0L),
14563
14564     TEST_f_f (trunc, -72057594037927935.5L, -72057594037927935.0L),
14565     TEST_f_f (trunc, -72057594037927936.25L, -72057594037927936.0L),
14566     TEST_f_f (trunc, -72057594037927936.5L, -72057594037927936.0L),
14567     TEST_f_f (trunc, -72057594037927936.75L, -72057594037927936.0L),
14568     TEST_f_f (trunc, -72057594037927937.5L, -72057594037927937.0L),
14569
14570     TEST_f_f (trunc, 10141204801825835211973625643007.5L, 10141204801825835211973625643007.0L),
14571     TEST_f_f (trunc, 10141204801825835211973625643008.25L, 10141204801825835211973625643008.0L),
14572     TEST_f_f (trunc, 10141204801825835211973625643008.5L, 10141204801825835211973625643008.0L),
14573     TEST_f_f (trunc, 10141204801825835211973625643008.75L, 10141204801825835211973625643008.0L),
14574     TEST_f_f (trunc, 10141204801825835211973625643009.5L, 10141204801825835211973625643009.0L),
14575 #endif
14576     END_DATA (trunc)
14577   };
14578
14579 static void
14580 trunc_test (void)
14581 {
14582   START (trunc);
14583   RUN_TEST_LOOP_f_f (trunc, trunc_test_data, );
14584   END (trunc);
14585 }
14586
14587 static const struct test_f_f_data y0_test_data[] =
14588   {
14589     START_DATA (y0),
14590     /* y0 is the Bessel function of the second kind of order 0 */
14591     TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION),
14592     TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION),
14593     TEST_f_f (y0, 0.0, minus_infty),
14594     TEST_f_f (y0, qnan_value, qnan_value),
14595     TEST_f_f (y0, plus_infty, 0),
14596
14597     TEST_f_f (y0, 0.125L, -1.38968062514384052915582277745018693L),
14598     TEST_f_f (y0, 0.75L, -0.137172769385772397522814379396581855L),
14599     TEST_f_f (y0, 1.0, 0.0882569642156769579829267660235151628L),
14600     TEST_f_f (y0, 1.5, 0.382448923797758843955068554978089862L),
14601     TEST_f_f (y0, 2.0, 0.510375672649745119596606592727157873L),
14602     TEST_f_f (y0, 8.0, 0.223521489387566220527323400498620359L),
14603     TEST_f_f (y0, 10.0, 0.0556711672835993914244598774101900481L),
14604
14605     TEST_f_f (y0, 0x1.3ffp+74L, 1.818984347516051243459467456433028748678e-12L),
14606
14607 #ifndef TEST_FLOAT
14608     TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L),
14609     TEST_f_f (y0, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L),
14610 #endif
14611
14612 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14613     TEST_f_f (y0, 0x1p16382L, 8.0839224448726336195866026476176740513439e-2467L),
14614     TEST_f_f (y0, 0x1p16383L, -3.8895531955766020648617743624167352352217e-2467L),
14615 #endif
14616
14617     TEST_f_f (y0, 0x1p-10L, -4.4865150767109739412411806297168793661098L),
14618     TEST_f_f (y0, 0x1p-20L, -8.8992283012125827603076426611387876938160L),
14619     TEST_f_f (y0, 0x1p-30L, -1.3311940304267782826037118027401817264906e+1L),
14620     TEST_f_f (y0, 0x1p-40L, -1.7724652307320814696990854700366226762563e+1L),
14621     TEST_f_f (y0, 0x1p-50L, -2.2137364310373846564919987139743760738155e+1L),
14622     TEST_f_f (y0, 0x1p-60L, -2.6550076313426878432849115782108205929120e+1L),
14623     TEST_f_f (y0, 0x1p-70L, -3.0962788316479910300778244424468159753887e+1L),
14624     TEST_f_f (y0, 0x1p-80L, -3.5375500319532942168707373066828113573541e+1L),
14625     TEST_f_f (y0, 0x1p-90L, -3.9788212322585974036636501709188067393195e+1L),
14626     TEST_f_f (y0, 0x1p-100L, -4.420092432563900590456563035154802121284e+1L),
14627     TEST_f_f (y0, 0x1p-110L, -4.861363632869203777249475899390797503250e+1L),
14628     END_DATA (y0)
14629   };
14630
14631 static void
14632 y0_test (void)
14633 {
14634   FLOAT s, c;
14635   errno = 0;
14636   FUNC (sincos) (0, &s, &c);
14637   if (errno == ENOSYS)
14638     /* Required function not implemented.  */
14639     return;
14640   FUNC(y0) (1);
14641   if (errno == ENOSYS)
14642     /* Function not implemented.  */
14643     return;
14644
14645   START (y0);
14646   RUN_TEST_LOOP_f_f (y0, y0_test_data, );
14647   END (y0);
14648 }
14649
14650
14651 static const struct test_f_f_data y1_test_data[] =
14652   {
14653     START_DATA (y1),
14654     /* y1 is the Bessel function of the second kind of order 1 */
14655     TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION),
14656     TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION),
14657     TEST_f_f (y1, 0.0, minus_infty),
14658     TEST_f_f (y1, plus_infty, 0),
14659     TEST_f_f (y1, qnan_value, qnan_value),
14660
14661     TEST_f_f (y1, 0.125L, -5.19993611253477499595928744876579921L),
14662     TEST_f_f (y1, 0.75L, -1.03759455076928541973767132140642198L),
14663     TEST_f_f (y1, 1.0, -0.781212821300288716547150000047964821L),
14664     TEST_f_f (y1, 1.5, -0.412308626973911295952829820633445323L),
14665     TEST_f_f (y1, 2.0, -0.107032431540937546888370772277476637L),
14666     TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L),
14667     TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L),
14668
14669     TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L),
14670
14671 #ifndef TEST_FLOAT
14672     TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L),
14673     TEST_f_f (y1, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L),
14674 #endif
14675
14676 #if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
14677     TEST_f_f (y1, 0x1p16382L, 1.2193782500509000574176799046642541129387e-2466L),
14678     TEST_f_f (y1, 0x1p16383L, -9.5859502826270374691362975419147645151233e-2467L),
14679 #endif
14680
14681     TEST_f_f (y1, 0x1p-10L, -6.5190099301063115047395187618929589514382e+02L),
14682     TEST_f_f (y1, 0x1p-20L, -6.6754421443450423911167962313100637952285e+05L),
14683     TEST_f_f (y1, 0x1p-30L, -6.8356527557643159612937462812258975438856e+08L),
14684     TEST_f_f (y1, 0x1p-40L, -6.9997084219026594793707805777425993547887e+11L),
14685     TEST_f_f (y1, 0x1p-50L, -7.1677014240283233068755952926181262431559e+14L),
14686     TEST_f_f (y1, 0x1p-60L, -7.3397262582050030662406095795388448059822e+17L),
14687     TEST_f_f (y1, 0x1p-70L, -7.5158796884019231398303842094477769620063e+20L),
14688     TEST_f_f (y1, 0x1p-80L, -7.6962608009235692951863134304745236090943e+23L),
14689     TEST_f_f (y1, 0x1p-90L, -7.8809710601457349582707849528059121757126e+26L),
14690     TEST_f_f (y1, 0x1p-100L, -8.0701143655892325972692837916732540679297e+29L),
14691     TEST_f_f (y1, 0x1p-110L, -8.2637971103633741796037466026734121655600e+32L),
14692     END_DATA (y1)
14693   };
14694
14695 static void
14696 y1_test (void)
14697 {
14698   FLOAT s, c;
14699   errno = 0;
14700   FUNC (sincos) (0, &s, &c);
14701   if (errno == ENOSYS)
14702     /* Required function not implemented.  */
14703     return;
14704   FUNC(y1) (1);
14705   if (errno == ENOSYS)
14706     /* Function not implemented.  */
14707     return;
14708
14709   START (y1);
14710   RUN_TEST_LOOP_f_f (y1, y1_test_data, );
14711   END (y1);
14712 }
14713
14714
14715 static const struct test_if_f_data yn_test_data[] =
14716   {
14717     START_DATA (yn),
14718     /* yn is the Bessel function of the second kind of order n */
14719     /* yn (0, x) == y0 (x)  */
14720     TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION),
14721     TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION),
14722     TEST_if_f (yn, 0, 0.0, minus_infty),
14723     TEST_if_f (yn, 0, qnan_value, qnan_value),
14724     TEST_if_f (yn, 0, plus_infty, 0),
14725
14726     TEST_if_f (yn, 0, 0.125L, -1.38968062514384052915582277745018693L),
14727     TEST_if_f (yn, 0, 0.75L, -0.137172769385772397522814379396581855L),
14728     TEST_if_f (yn, 0, 1.0, 0.0882569642156769579829267660235151628L),
14729     TEST_if_f (yn, 0, 1.5, 0.382448923797758843955068554978089862L),
14730     TEST_if_f (yn, 0, 2.0, 0.510375672649745119596606592727157873L),
14731     TEST_if_f (yn, 0, 8.0, 0.223521489387566220527323400498620359L),
14732     TEST_if_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L),
14733
14734     /* yn (1, x) == y1 (x)  */
14735     TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION),
14736     TEST_if_f (yn, 1, 0.0, minus_infty),
14737     TEST_if_f (yn, 1, plus_infty, 0),
14738     TEST_if_f (yn, 1, qnan_value, qnan_value),
14739
14740     TEST_if_f (yn, 1, 0.125L, -5.19993611253477499595928744876579921L),
14741     TEST_if_f (yn, 1, 0.75L, -1.03759455076928541973767132140642198L),
14742     TEST_if_f (yn, 1, 1.0, -0.781212821300288716547150000047964821L),
14743     TEST_if_f (yn, 1, 1.5, -0.412308626973911295952829820633445323L),
14744     TEST_if_f (yn, 1, 2.0, -0.107032431540937546888370772277476637L),
14745     TEST_if_f (yn, 1, 8.0, -0.158060461731247494255555266187483550L),
14746     TEST_if_f (yn, 1, 10.0, 0.249015424206953883923283474663222803L),
14747
14748     /* yn (3, x)  */
14749     TEST_if_f (yn, 3, plus_infty, 0),
14750     TEST_if_f (yn, 3, qnan_value, qnan_value),
14751
14752     TEST_if_f (yn, 3, 0.125L, -2612.69757350066712600220955744091741L),
14753     TEST_if_f (yn, 3, 0.75L, -12.9877176234475433186319774484809207L),
14754     TEST_if_f (yn, 3, 1.0, -5.82151760596472884776175706442981440L),
14755     TEST_if_f (yn, 3, 2.0, -1.12778377684042778608158395773179238L),
14756     TEST_if_f (yn, 3, 10.0, -0.251362657183837329779204747654240998L),
14757
14758     /* yn (10, x)  */
14759     TEST_if_f (yn, 10, plus_infty, 0),
14760     TEST_if_f (yn, 10, qnan_value, qnan_value),
14761
14762     TEST_if_f (yn, 10, 0.125L, -127057845771019398.252538486899753195L),
14763     TEST_if_f (yn, 10, 0.75L, -2133501638.90573424452445412893839236L),
14764     TEST_if_f (yn, 10, 1.0, -121618014.278689189288130426667971145L),
14765     TEST_if_f (yn, 10, 2.0, -129184.542208039282635913145923304214L),
14766     TEST_if_f (yn, 10, 10.0, -0.359814152183402722051986577343560609L),
14767
14768     /* Check whether yn returns correct value for LDBL_MIN, DBL_MIN,
14769        and FLT_MIN.  See Bug 14173.  */
14770     TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION),
14771
14772     TEST_if_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION|ERRNO_ERANGE),
14773     END_DATA (yn)
14774   };
14775
14776 static void
14777 yn_test (void)
14778 {
14779   FLOAT s, c;
14780   errno = 0;
14781   FUNC (sincos) (0, &s, &c);
14782   if (errno == ENOSYS)
14783     /* Required function not implemented.  */
14784     return;
14785   FUNC(yn) (1, 1);
14786   if (errno == ENOSYS)
14787     /* Function not implemented.  */
14788     return;
14789
14790   START (yn);
14791   RUN_TEST_LOOP_if_f (yn, yn_test_data, );
14792   END (yn);
14793 }
14794
14795
14796 static const struct test_f_f_data significand_test_data[] =
14797   {
14798     START_DATA (significand),
14799     /* significand returns the mantissa of the exponential representation.  */
14800     /* TODO: missing +/-Inf as well as qNaN tests.  */
14801     TEST_f_f (significand, 4.0, 1.0),
14802     TEST_f_f (significand, 6.0, 1.5),
14803     TEST_f_f (significand, 8.0, 1.0),
14804     END_DATA (significand)
14805   };
14806
14807 static void
14808 significand_test (void)
14809 {
14810   START (significand);
14811   RUN_TEST_LOOP_f_f (significand, significand_test_data, );
14812   END (significand);
14813 }
14814
14815
14816 static void
14817 initialize (void)
14818 {
14819   fpstack_test ("start *init*");
14820
14821   /* Clear all exceptions.  From now on we must not get random exceptions.  */
14822   feclearexcept (FE_ALL_EXCEPT);
14823   errno = 0;
14824
14825   /* Test to make sure we start correctly.  */
14826   fpstack_test ("end *init*");
14827 }
14828
14829 /* Definitions of arguments for argp functions.  */
14830 static const struct argp_option options[] =
14831 {
14832   { "verbose", 'v', "NUMBER", 0, "Level of verbosity (0..3)"},
14833   { "ulps-file", 'u', NULL, 0, "Output ulps to file ULPs"},
14834   { "no-max-error", 'f', NULL, 0,
14835     "Don't output maximal errors of functions"},
14836   { "no-points", 'p', NULL, 0,
14837     "Don't output results of functions invocations"},
14838   { "ignore-max-ulp", 'i', "yes/no", 0,
14839     "Ignore given maximal errors"},
14840   { "output-dir", 'o', "DIR", 0,
14841     "Directory where generated files will be placed"},
14842   { NULL, 0, NULL, 0, NULL }
14843 };
14844
14845 /* Short description of program.  */
14846 static const char doc[] = "Math test suite: " TEST_MSG ;
14847
14848 /* Prototype for option handler.  */
14849 static error_t parse_opt (int key, char *arg, struct argp_state *state);
14850
14851 /* Data structure to communicate with argp functions.  */
14852 static struct argp argp =
14853 {
14854   options, parse_opt, NULL, doc,
14855 };
14856
14857
14858 /* Handle program arguments.  */
14859 static error_t
14860 parse_opt (int key, char *arg, struct argp_state *state)
14861 {
14862   switch (key)
14863     {
14864     case 'f':
14865       output_max_error = 0;
14866       break;
14867     case 'i':
14868       if (strcmp (arg, "yes") == 0)
14869         ignore_max_ulp = 1;
14870       else if (strcmp (arg, "no") == 0)
14871         ignore_max_ulp = 0;
14872       break;
14873     case 'o':
14874       output_dir = (char *) malloc (strlen (arg) + 1);
14875       if (output_dir != NULL)
14876         strcpy (output_dir, arg);
14877       else
14878         return errno;
14879       break;
14880     case 'p':
14881       output_points = 0;
14882       break;
14883     case 'u':
14884       output_ulps = 1;
14885       break;
14886     case 'v':
14887       if (optarg)
14888         verbose = (unsigned int) strtoul (optarg, NULL, 0);
14889       else
14890         verbose = 3;
14891       break;
14892     default:
14893       return ARGP_ERR_UNKNOWN;
14894     }
14895   return 0;
14896 }
14897
14898 #if 0
14899 /* function to check our ulp calculation.  */
14900 void
14901 check_ulp (void)
14902 {
14903   int i;
14904
14905   FLOAT u, diff, ulp;
14906   /* This gives one ulp.  */
14907   u = FUNC(nextafter) (10, 20);
14908   check_equal (10.0, u, 1, &diff, &ulp);
14909   printf ("One ulp: % .4" PRINTF_NEXPR "\n", ulp);
14910
14911   /* This gives one more ulp.  */
14912   u = FUNC(nextafter) (u, 20);
14913   check_equal (10.0, u, 2, &diff, &ulp);
14914   printf ("two ulp: % .4" PRINTF_NEXPR "\n", ulp);
14915
14916   /* And now calculate 100 ulp.  */
14917   for (i = 2; i < 100; i++)
14918     u = FUNC(nextafter) (u, 20);
14919   check_equal (10.0, u, 100, &diff, &ulp);
14920   printf ("100 ulp: % .4" PRINTF_NEXPR "\n", ulp);
14921 }
14922 #endif
14923
14924 int
14925 main (int argc, char **argv)
14926 {
14927
14928   int remaining;
14929   char *ulps_file_path;
14930   size_t dir_len = 0;
14931
14932   verbose = 1;
14933   output_ulps = 0;
14934   output_max_error = 1;
14935   output_points = 1;
14936   output_dir = NULL;
14937   /* XXX set to 0 for releases.  */
14938   ignore_max_ulp = 0;
14939
14940   /* Parse and process arguments.  */
14941   argp_parse (&argp, argc, argv, 0, &remaining, NULL);
14942
14943   if (remaining != argc)
14944     {
14945       fprintf (stderr, "wrong number of arguments");
14946       argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
14947       exit (EXIT_FAILURE);
14948     }
14949
14950   if (output_ulps)
14951     {
14952       if (output_dir != NULL)
14953         dir_len = strlen (output_dir);
14954       ulps_file_path = (char *) malloc (dir_len + strlen (ulps_file_name) + 1);
14955       if (ulps_file_path == NULL)
14956         {
14957           perror ("can't allocate path for `ULPs' file: ");
14958           exit (1);
14959         }
14960       sprintf (ulps_file_path, "%s%s", output_dir == NULL ? "" : output_dir, ulps_file_name);
14961       ulps_file = fopen (ulps_file_path, "a");
14962       if (ulps_file == NULL)
14963         {
14964           perror ("can't open file `ULPs' for writing: ");
14965           exit (1);
14966         }
14967     }
14968
14969
14970   initialize ();
14971   printf (TEST_MSG);
14972
14973 #if 0
14974   check_ulp ();
14975 #endif
14976
14977   /* Keep the tests a wee bit ordered (according to ISO C99).  */
14978   /* Classification macros:  */
14979   finite_test ();
14980   fpclassify_test ();
14981   isfinite_test ();
14982   isinf_test ();
14983   isnan_test ();
14984   isnormal_test ();
14985   issignaling_test ();
14986   signbit_test ();
14987
14988   /* Trigonometric functions:  */
14989   acos_test ();
14990   acos_test_tonearest ();
14991   acos_test_towardzero ();
14992   acos_test_downward ();
14993   acos_test_upward ();
14994   asin_test ();
14995   asin_test_tonearest ();
14996   asin_test_towardzero ();
14997   asin_test_downward ();
14998   asin_test_upward ();
14999   atan_test ();
15000   atan2_test ();
15001   cos_test ();
15002   cos_test_tonearest ();
15003   cos_test_towardzero ();
15004   cos_test_downward ();
15005   cos_test_upward ();
15006   sin_test ();
15007   sin_test_tonearest ();
15008   sin_test_towardzero ();
15009   sin_test_downward ();
15010   sin_test_upward ();
15011   sincos_test ();
15012   tan_test ();
15013   tan_test_tonearest ();
15014   tan_test_towardzero ();
15015   tan_test_downward ();
15016   tan_test_upward ();
15017
15018   /* Hyperbolic functions:  */
15019   acosh_test ();
15020   asinh_test ();
15021   atanh_test ();
15022   cosh_test ();
15023   cosh_test_tonearest ();
15024   cosh_test_towardzero ();
15025   cosh_test_downward ();
15026   cosh_test_upward ();
15027   sinh_test ();
15028   sinh_test_tonearest ();
15029   sinh_test_towardzero ();
15030   sinh_test_downward ();
15031   sinh_test_upward ();
15032   tanh_test ();
15033
15034   /* Exponential and logarithmic functions:  */
15035   exp_test ();
15036   exp_test_tonearest ();
15037   exp_test_towardzero ();
15038   exp_test_downward ();
15039   exp_test_upward ();
15040   exp10_test ();
15041   exp2_test ();
15042   expm1_test ();
15043   frexp_test ();
15044   ldexp_test ();
15045   log_test ();
15046   log10_test ();
15047   log1p_test ();
15048   log2_test ();
15049   logb_test ();
15050   logb_test_downward ();
15051   modf_test ();
15052   ilogb_test ();
15053   scalb_test ();
15054   scalbn_test ();
15055   scalbln_test ();
15056   significand_test ();
15057
15058   /* Power and absolute value functions:  */
15059   cbrt_test ();
15060   fabs_test ();
15061   hypot_test ();
15062   pow_test ();
15063   pow_test_tonearest ();
15064   pow_test_towardzero ();
15065   pow_test_downward ();
15066   pow_test_upward ();
15067   sqrt_test ();
15068
15069   /* Error and gamma functions:  */
15070   erf_test ();
15071   erfc_test ();
15072   gamma_test ();
15073   lgamma_test ();
15074   tgamma_test ();
15075
15076   /* Nearest integer functions:  */
15077   ceil_test ();
15078   floor_test ();
15079   nearbyint_test ();
15080   rint_test ();
15081   rint_test_tonearest ();
15082   rint_test_towardzero ();
15083   rint_test_downward ();
15084   rint_test_upward ();
15085   lrint_test ();
15086   lrint_test_tonearest ();
15087   lrint_test_towardzero ();
15088   lrint_test_downward ();
15089   lrint_test_upward ();
15090   llrint_test ();
15091   llrint_test_tonearest ();
15092   llrint_test_towardzero ();
15093   llrint_test_downward ();
15094   llrint_test_upward ();
15095   round_test ();
15096   lround_test ();
15097   llround_test ();
15098   trunc_test ();
15099
15100   /* Remainder functions:  */
15101   fmod_test ();
15102   remainder_test ();
15103   remquo_test ();
15104
15105   /* Manipulation functions:  */
15106   copysign_test ();
15107   nextafter_test ();
15108   nexttoward_test ();
15109
15110   /* maximum, minimum and positive difference functions */
15111   fdim_test ();
15112   fmax_test ();
15113   fmin_test ();
15114
15115   /* Multiply and add:  */
15116   fma_test ();
15117   fma_test_towardzero ();
15118   fma_test_downward ();
15119   fma_test_upward ();
15120
15121   /* Comparison macros:  */
15122   isgreater_test ();
15123   isgreaterequal_test ();
15124   isless_test ();
15125   islessequal_test ();
15126   islessgreater_test ();
15127   isunordered_test ();
15128
15129   /* Complex functions:  */
15130   cabs_test ();
15131   cacos_test ();
15132   cacosh_test ();
15133   carg_test ();
15134   casin_test ();
15135   casinh_test ();
15136   catan_test ();
15137   catanh_test ();
15138   ccos_test ();
15139   ccosh_test ();
15140   cexp_test ();
15141   cimag_test ();
15142   clog10_test ();
15143   clog_test ();
15144   conj_test ();
15145   cpow_test ();
15146   cproj_test ();
15147   creal_test ();
15148   csin_test ();
15149   csinh_test ();
15150   csqrt_test ();
15151   ctan_test ();
15152   ctan_test_tonearest ();
15153   ctan_test_towardzero ();
15154   ctan_test_downward ();
15155   ctan_test_upward ();
15156   ctanh_test ();
15157   ctanh_test_tonearest ();
15158   ctanh_test_towardzero ();
15159   ctanh_test_downward ();
15160   ctanh_test_upward ();
15161
15162   /* Bessel functions:  */
15163   j0_test ();
15164   j1_test ();
15165   jn_test ();
15166   y0_test ();
15167   y1_test ();
15168   yn_test ();
15169
15170   if (output_ulps)
15171     fclose (ulps_file);
15172
15173   printf ("\nTest suite completed:\n");
15174   printf ("  %d test cases plus %d tests for exception flags and\n"
15175           "    %d tests for errno executed.\n",
15176           noTests, noExcTests, noErrnoTests);
15177   if (noErrors)
15178     {
15179       printf ("  %d errors occurred.\n", noErrors);
15180       return 1;
15181     }
15182   printf ("  All tests passed successfully.\n");
15183
15184   return 0;
15185 }
15186
15187 /*
15188  * Local Variables:
15189  * mode:c
15190  * End:
15191  */